gecko-dev/ipc/ipdl/test/cxx
Nika Layzell a7666fd8fe Bug 1418048 - Add a callback-based Send API to async returning IPDL methods, r=billm
Currently if you write an async IPDL method which has a return value, we expose
a SendXXX method which returns a MozPromise. This MozPromise can then be
->Then-ed to run code when it is resolved or rejected.

Unfortunately, using this API loses ordering guarantees which IPDL provides.
MozPromise::Then takes an event target, which the resolve runnable is dispatched
to. This means that the resolve callback's code doesn't have any ordering
guarantees relative to the processing of other IPC messages coming over the same
protocol.

This adds a new overload to SendXXX with two additional arguments, a lambda
callback which is called if the call succeeds, and a lambda callback which is
called if the call fails. These will be called in order with other IPC messages
sent over the same protocol.

MozReview-Commit-ID: FZHJJaSDoZy
2017-11-20 17:55:32 -05:00
..
app Bug 1332523 - Make the Bootstrap API entry point the same for both dependent and standalone linkage. r=bsmedberg 2017-01-13 07:29:56 +09:00
IPDLUnitTestProcessChild.cpp Bug 1337914 - Add dummy argument to IPDLUnitTestProcessChild::Init. r=kanru 2017-02-08 12:26:20 -08:00
IPDLUnitTestProcessChild.h Bug 1337914 - Add dummy argument to IPDLUnitTestProcessChild::Init. r=kanru 2017-02-08 12:26:20 -08:00
IPDLUnitTestSubprocess.cpp
IPDLUnitTestSubprocess.h
IPDLUnitTestTypes.h
IPDLUnitTestUtils.h Bug 1262671 - void** -> PickleIterator (r=froydnj) 2016-05-27 09:57:38 -07:00
IPDLUnitTests.h Bug 1296189 - Replace NS_RUNTIMEABORT("some string literal message") with MOZ_CRASH(). r=froydnj 2016-12-02 13:46:53 -08:00
IPDLUnitTests.template.cpp Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
Makefile.in Bug 1316755, part 1 - Remove IPDL unit tests that use bridges, opens, and spawns. r=billm 2017-01-26 16:30:18 -08:00
PTestActorPunning.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestActorPunningPunned.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestActorPunningSub.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestAsyncReturns.ipdl Bug 1313200 - Allow IPC messages to async return MozPromises. r=billm,jwwang 2017-03-16 17:36:15 +08:00
PTestBadActor.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestBadActorSub.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestCancel.ipdl Bug 1306708 - Rename prio to nested in IPDL (r=dvander) 2016-10-04 20:34:54 -07:00
PTestCrashCleanup.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestDataStructures.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestDataStructuresCommon.ipdlh
PTestDataStructuresSub.ipdl
PTestDemon.ipdl Bug 1306708 - Rename prio to nested in IPDL (r=dvander) 2016-10-04 20:34:54 -07:00
PTestDesc.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestDescSub.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestDescSubsub.ipdl
PTestEndpointBridgeMain.ipdl Bug 1316755, part 1 - Remove IPDL unit tests that use bridges, opens, and spawns. r=billm 2017-01-26 16:30:18 -08:00
PTestEndpointBridgeMainSub.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestEndpointBridgeSub.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestEndpointOpens.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestEndpointOpensOpened.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestFailedCtor.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestFailedCtorSub.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestFailedCtorSubsub.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestHandle.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestHangs.ipdl Bug 1316757, part 6 - Comment out various race-related state machines. r=billm 2016-11-23 14:58:49 -08:00
PTestHighestPrio.ipdl Bug 1306708 - Rename prio to nested in IPDL (r=dvander) 2016-10-04 20:34:54 -07:00
PTestIndirectProtocolParam.ipdlh
PTestIndirectProtocolParamFirst.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestIndirectProtocolParamManage.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestIndirectProtocolParamSecond.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestInterruptErrorCleanup.ipdl
PTestInterruptRaces.ipdl Bug 1316757, part 6 - Comment out various race-related state machines. r=billm 2016-11-23 14:58:49 -08:00
PTestInterruptShutdownRace.ipdl Bug 1316757, part 6 - Comment out various race-related state machines. r=billm 2016-11-23 14:58:49 -08:00
PTestJSON.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestLatency.ipdl Bug 1316757, part 6 - Comment out various race-related state machines. r=billm 2016-11-23 14:58:49 -08:00
PTestLayoutThread.ipdl Add IPDL test files for message ordering problems in OMTP. (bug 1369529 part 1, r=billm) 2017-06-21 13:40:18 -07:00
PTestManyChildAllocs.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestManyChildAllocsSub.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestMultiMgrs.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestMultiMgrsBottom.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestMultiMgrsLeft.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestMultiMgrsRight.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestNestedLoops.ipdl Bug 1316757, part 6 - Comment out various race-related state machines. r=billm 2016-11-23 14:58:49 -08:00
PTestPaintThread.ipdl Allow IPDL message sends to be deferred and re-sent as needed. (bug 1369529 part 2, r=billm) 2017-06-21 13:40:18 -07:00
PTestPriority.ipdl Backed out changeset 46d8f42863af (bug 1351148) 2017-08-11 15:19:44 +08:00
PTestRPC.ipdl Bug 1306708 - Rename prio to nested in IPDL (r=dvander) 2016-10-04 20:34:54 -07:00
PTestRaceDeadlock.ipdl
PTestRaceDeferral.ipdl
PTestRacyInterruptReplies.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestRacyReentry.ipdl Bug 1240871 - Don't allow implicit "async" in IPDL (r=mccr8,billm) 2016-01-28 20:56:37 -08:00
PTestRacyUndefer.ipdl
PTestSanity.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestSelfManage.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestSelfManageRoot.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestShmem.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestShutdown.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestShutdownSub.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestShutdownSubsub.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestStackHooks.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestSyncError.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestSyncHang.ipdl Bug 1345977 - Add unused message to PTestSyncHang to prevent compiler warning. r=billm 2017-03-10 14:34:19 -08:00
PTestSyncWakeup.ipdl Bug 1316757, part 5 - Comment out simple uses of state machine from cxx/ unit tests. r=billm 2016-12-13 13:07:38 -08:00
PTestUrgency.ipdl Bug 1306708 - Rename prio to nested in IPDL (r=dvander) 2016-10-04 20:34:54 -07:00
PTestUrgentHangs.ipdl Bug 1306708 - Rename prio to nested in IPDL (r=dvander) 2016-10-04 20:34:54 -07:00
README.txt
TestActorPunning.cpp Bug 1319910 - Crash child, not parent, on FatalError in TestActorPunning and TestBadActor. r=billm 2016-11-23 13:40:04 -08:00
TestActorPunning.h Bug 1319910 - Crash child, not parent, on FatalError in TestActorPunning and TestBadActor. r=billm 2016-11-23 13:40:04 -08:00
TestAsyncReturns.cpp Bug 1418048 - Add a callback-based Send API to async returning IPDL methods, r=billm 2017-11-20 17:55:32 -05:00
TestAsyncReturns.h Bug 1368031 - Pass resolver function to Recv methods instead of a MozPromise r=billm 2017-06-01 15:57:21 +08:00
TestBadActor.cpp Bug 1319910 - Crash child, not parent, on FatalError in TestActorPunning and TestBadActor. r=billm 2016-11-23 13:40:04 -08:00
TestBadActor.h Bug 1319910 - Crash child, not parent, on FatalError in TestActorPunning and TestBadActor. r=billm 2016-11-23 13:40:04 -08:00
TestCancel.cpp Bug 1372405 - Provide names for all runnables in the tree (r=froydnj) 2017-06-26 14:19:58 -07:00
TestCancel.h Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestCrashCleanup.cpp Bug 1412048 - Replace NS_RUNTIMEABORT("...") with MOZ_CRASH("..."). r=froydnj 2017-10-24 23:30:31 -07:00
TestCrashCleanup.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestDataStructures.cpp Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestDataStructures.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestDemon.cpp Bug 1372405 - Provide names for all runnables in the tree (r=froydnj) 2017-06-26 14:19:58 -07:00
TestDemon.h Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestDesc.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestDesc.h Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestEndpointBridgeMain.cpp Bug 1372405 - Provide names for all runnables in the tree (r=froydnj) 2017-06-26 14:19:58 -07:00
TestEndpointBridgeMain.h Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestEndpointOpens.cpp Bug 1372405 - Provide names for all runnables in the tree (r=froydnj) 2017-06-26 14:19:58 -07:00
TestEndpointOpens.h Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestFailedCtor.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestFailedCtor.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestHangs.cpp Bug 1372405 - Provide names for all runnables in the tree (r=froydnj) 2017-06-26 14:19:58 -07:00
TestHangs.h Bug 1320755 - Remove dependence of IPDL unit tests on state() method. r=dvander 2016-11-23 15:21:58 -08:00
TestHighestPrio.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestHighestPrio.h Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestInterruptErrorCleanup.cpp Bug 1412048 - Replace NS_RUNTIMEABORT("...") with MOZ_CRASH("..."). r=froydnj 2017-10-24 23:30:31 -07:00
TestInterruptErrorCleanup.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestInterruptRaces.cpp Bug 1372405 - Provide names for all runnables in the tree (r=froydnj) 2017-06-26 14:19:58 -07:00
TestInterruptRaces.h Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestInterruptShutdownRace.cpp Bug 1412048 - Replace NS_RUNTIMEABORT("...") with MOZ_CRASH("..."). r=froydnj 2017-10-24 23:30:31 -07:00
TestInterruptShutdownRace.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestJSON.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestJSON.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestLatency.cpp Bug 1316757, part 2 - Remove assertions involving state() from cxx/ unit tests. r=billm 2016-11-28 13:43:09 -08:00
TestLatency.h Bug 1320755 - Remove dependence of IPDL unit tests on state() method. r=dvander 2016-11-23 15:21:58 -08:00
TestManyChildAllocs.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestManyChildAllocs.h Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestMultiMgrs.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestMultiMgrs.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestNestedLoops.cpp Bug 1372405 - Provide names for all runnables in the tree (r=froydnj) 2017-06-26 14:19:58 -07:00
TestNestedLoops.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestOffMainThreadPainting.cpp Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestOffMainThreadPainting.h Allow IPDL message sends to be deferred and re-sent as needed. (bug 1369529 part 2, r=billm) 2017-06-21 13:40:18 -07:00
TestRPC.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestRPC.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestRaceDeadlock.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestRaceDeadlock.h Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestRaceDeferral.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestRaceDeferral.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestRacyInterruptReplies.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestRacyInterruptReplies.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestRacyReentry.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestRacyReentry.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestRacyUndefer.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestRacyUndefer.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestSanity.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestSanity.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestSelfManageRoot.cpp
TestSelfManageRoot.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestShmem.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestShmem.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestShutdown.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestShutdown.h Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestStackHooks.cpp Bug 1316757, part 2 - Remove assertions involving state() from cxx/ unit tests. r=billm 2016-11-28 13:43:09 -08:00
TestStackHooks.h Bug 1320755 - Remove dependence of IPDL unit tests on state() method. r=dvander 2016-11-23 15:21:58 -08:00
TestSyncError.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestSyncError.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestSyncHang.cpp Bug 1345977 - Add unused message to PTestSyncHang to prevent compiler warning. r=billm 2017-03-10 14:34:19 -08:00
TestSyncHang.h Bug 1345977 - Add unused message to PTestSyncHang to prevent compiler warning. r=billm 2017-03-10 14:34:19 -08:00
TestSyncWakeup.cpp Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestSyncWakeup.h Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestUrgency.cpp Bug 1378712 - Remove all trailing whitespaces r=Ehsan 2017-07-06 14:00:35 +02:00
TestUrgency.h Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
TestUrgentHangs.cpp Bug 1372405 - Provide names for all runnables in the tree (r=froydnj) 2017-06-26 14:19:58 -07:00
TestUrgentHangs.h Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm 2016-11-15 04:26:00 +01:00
genIPDLUnitTests.py
moz.build Add IPDL test files for message ordering problems in OMTP. (bug 1369529 part 1, r=billm) 2017-06-21 13:40:18 -07:00

README.txt

To add a new IPDL C++ unit test, you need to create (at least) the
following files (for a test "TestFoo"):

  - PTestFoo.ipdl, specifying the top-level protocol used for the test

  - TestFoo.h, declaring the top-level parent/child actors used for
    the test

  - TestFoo.cpp, defining the top-level actors

  - (make sure all are in the namespace mozilla::_ipdltest)

Next

  - add PTestFoo.ipdl to ipdl.mk

  - append TestFoo to the variable IPDLTESTS in Makefile.in

You must define three methods in your |TestFooParent| class:

  - static methods |bool RunTestInProcesses()| and
    |bool RunTestInThreads()|.  These methods control whether
    to execute the test using actors in separate processes and
    threads respectively.  Generally, both should return true.

  - an instance method |void Main()|.  The test harness wil first
    initialize the processes or threads, create and open both actors,
    and then kick off the test using |Main()|.  Make sure you define
    it.

If your test passes its criteria, please call
|MOZ_IPDL_TESTPASS("msg")| and "exit gracefully".

If your tests fails, please call |MOZ_IPDL_TESTFAIL("msg")| and "exit
ungracefully", preferably by abort()ing.


If all goes well, running

  make -C $OBJDIR/ipc/ipdl/test/cxx

will update the file IPDLUnitTests.cpp (the test launcher), and your
new code will be built automatically.


You can launch your new test by invoking one of

  make -C $OBJDIR/ipc/ipdl/test/cxx check-proc     (test process-based tests)
  make -C $OBJDIR/ipc/ipdl/test/cxx check-threads  (test thread-based tests)
  make -C $OBJDIR/ipc/ipdl/test/cxx check          (tests both)

If you want to launch only your test, run

  cd $OBJDIR/dist/bin
  ./run-mozilla.sh ./ipdlunittest TestFoo          (test in two processes, if appl.)
  ./run-mozilla.sh ./ipdlunittest thread:TestFoo   (test in two threads, if appl.)


For a bare-bones example of adding a test, take a look at
PTestSanity.ipdl, TestSanity.h, TestSanity.cpp, and how "TestSanity"
is included in ipdl.mk and Makefile.in.