зеркало из https://github.com/mozilla/gecko-dev.git
Test for bug 592002. a=test
This commit is contained in:
Родитель
ca19eda863
Коммит
405278e221
|
@ -71,6 +71,7 @@ IPDLTESTS = \
|
|||
TestRPCErrorCleanup \
|
||||
TestRPCRaces \
|
||||
TestRPCShutdownRace \
|
||||
TestRacyReentry \
|
||||
TestRacyRPCReplies \
|
||||
TestSanity \
|
||||
TestSelfManageRoot \
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
|
||||
namespace mozilla {
|
||||
namespace _ipdltest {
|
||||
|
||||
|
||||
rpc protocol PTestRacyReentry {
|
||||
|
||||
parent:
|
||||
rpc E();
|
||||
__delete__();
|
||||
|
||||
child:
|
||||
async Start();
|
||||
|
||||
async N();
|
||||
rpc H();
|
||||
};
|
||||
|
||||
|
||||
} // namespace mozilla
|
||||
} // namespace _ipdltest
|
|
@ -0,0 +1,84 @@
|
|||
#include "TestRacyReentry.h"
|
||||
|
||||
#include "IPDLUnitTests.h" // fail etc.
|
||||
|
||||
namespace mozilla {
|
||||
namespace _ipdltest {
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// parent
|
||||
|
||||
TestRacyReentryParent::TestRacyReentryParent() : mRecvdE(false)
|
||||
{
|
||||
MOZ_COUNT_CTOR(TestRacyReentryParent);
|
||||
}
|
||||
|
||||
TestRacyReentryParent::~TestRacyReentryParent()
|
||||
{
|
||||
MOZ_COUNT_DTOR(TestRacyReentryParent);
|
||||
}
|
||||
|
||||
void
|
||||
TestRacyReentryParent::Main()
|
||||
{
|
||||
if (!SendStart())
|
||||
fail("sending Start");
|
||||
|
||||
if (!SendN())
|
||||
fail("sending N");
|
||||
}
|
||||
|
||||
bool
|
||||
TestRacyReentryParent::AnswerE()
|
||||
{
|
||||
if (!mRecvdE) {
|
||||
mRecvdE = true;
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!CallH())
|
||||
fail("calling H");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// child
|
||||
|
||||
TestRacyReentryChild::TestRacyReentryChild()
|
||||
{
|
||||
MOZ_COUNT_CTOR(TestRacyReentryChild);
|
||||
}
|
||||
|
||||
TestRacyReentryChild::~TestRacyReentryChild()
|
||||
{
|
||||
MOZ_COUNT_DTOR(TestRacyReentryChild);
|
||||
}
|
||||
|
||||
bool
|
||||
TestRacyReentryChild::RecvStart()
|
||||
{
|
||||
if (!CallE())
|
||||
fail("calling E");
|
||||
|
||||
Close();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
TestRacyReentryChild::RecvN()
|
||||
{
|
||||
if (!CallE())
|
||||
fail("calling E");
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
TestRacyReentryChild::AnswerH()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace _ipdltest
|
||||
} // namespace mozilla
|
|
@ -0,0 +1,70 @@
|
|||
#ifndef mozilla__ipdltest_TestRacyReentry_h
|
||||
#define mozilla__ipdltest_TestRacyReentry_h 1
|
||||
|
||||
#include "mozilla/_ipdltest/IPDLUnitTests.h"
|
||||
|
||||
#include "mozilla/_ipdltest/PTestRacyReentryParent.h"
|
||||
#include "mozilla/_ipdltest/PTestRacyReentryChild.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace _ipdltest {
|
||||
|
||||
|
||||
class TestRacyReentryParent :
|
||||
public PTestRacyReentryParent
|
||||
{
|
||||
public:
|
||||
TestRacyReentryParent();
|
||||
virtual ~TestRacyReentryParent();
|
||||
|
||||
void Main();
|
||||
|
||||
protected:
|
||||
NS_OVERRIDE
|
||||
virtual bool AnswerE();
|
||||
|
||||
NS_OVERRIDE
|
||||
virtual void ActorDestroy(ActorDestroyReason why)
|
||||
{
|
||||
if (NormalShutdown != why)
|
||||
fail("unexpected destruction!");
|
||||
passed("ok");
|
||||
QuitParent();
|
||||
}
|
||||
|
||||
bool mRecvdE;
|
||||
};
|
||||
|
||||
|
||||
class TestRacyReentryChild :
|
||||
public PTestRacyReentryChild
|
||||
{
|
||||
public:
|
||||
TestRacyReentryChild();
|
||||
virtual ~TestRacyReentryChild();
|
||||
|
||||
protected:
|
||||
NS_OVERRIDE
|
||||
virtual bool RecvStart();
|
||||
|
||||
NS_OVERRIDE
|
||||
virtual bool RecvN();
|
||||
|
||||
NS_OVERRIDE
|
||||
virtual bool AnswerH();
|
||||
|
||||
NS_OVERRIDE
|
||||
virtual void ActorDestroy(ActorDestroyReason why)
|
||||
{
|
||||
if (NormalShutdown != why)
|
||||
fail("unexpected destruction!");
|
||||
QuitChild();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
} // namespace _ipdltest
|
||||
} // namespace mozilla
|
||||
|
||||
|
||||
#endif // ifndef mozilla__ipdltest_TestRacyReentry_h
|
|
@ -17,6 +17,7 @@ IPDLSRCS = \
|
|||
PTestMultiMgrsRight.ipdl \
|
||||
PTestMultiMgrsBottom.ipdl \
|
||||
PTestNestedLoops.ipdl \
|
||||
PTestRacyReentry.ipdl \
|
||||
PTestRacyRPCReplies.ipdl \
|
||||
PTestRPCErrorCleanup.ipdl \
|
||||
PTestRPCRaces.ipdl \
|
||||
|
|
Загрузка…
Ссылка в новой задаче