gecko/ipc/ipdl/test/cxx
2012-06-04 15:14:41 -07:00
..
app Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
genIPDLUnitTests.py Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
ipdl.mk
IPDLUnitTestProcessChild.cpp Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
IPDLUnitTestProcessChild.h Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
IPDLUnitTests.h Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
IPDLUnitTests.template.cpp Bug 760007, part 1: Fix the IPDL C++ test harness. r=bent 2012-06-04 15:14:41 -07:00
IPDLUnitTestSubprocess.cpp Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
IPDLUnitTestSubprocess.h Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
IPDLUnitTestTypes.h Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
Makefile.in Bug 716478 - update licence to MPL 2. 2012-05-21 12:12:37 +01:00
PTestBlockChild.ipdl
PTestBridgeMain.ipdl
PTestBridgeMainSub.ipdl
PTestBridgeSub.ipdl
PTestCrashCleanup.ipdl
PTestDataStructures.ipdl Test for bug 753159. 2012-05-30 15:37:26 -07:00
PTestDataStructuresSub.ipdl
PTestDesc.ipdl
PTestDescSub.ipdl
PTestDescSubsub.ipdl
PTestFailedCtor.ipdl
PTestFailedCtorSub.ipdl
PTestFailedCtorSubsub.ipdl
PTestHandle.ipdl
PTestHangs.ipdl
PTestJSON.ipdl
PTestLatency.ipdl
PTestManyChildAllocs.ipdl
PTestManyChildAllocsSub.ipdl
PTestMultiMgrs.ipdl
PTestMultiMgrsBottom.ipdl
PTestMultiMgrsLeft.ipdl
PTestMultiMgrsRight.ipdl
PTestNestedLoops.ipdl
PTestOpens.ipdl
PTestOpensOpened.ipdl
PTestRaceDeferral.ipdl
PTestRacyReentry.ipdl
PTestRacyRPCReplies.ipdl
PTestRacyUndefer.ipdl
PTestRPCErrorCleanup.ipdl
PTestRPCRaces.ipdl
PTestRPCShutdownRace.ipdl
PTestSanity.ipdl
PTestSelfManage.ipdl
PTestSelfManageRoot.ipdl
PTestShmem.ipdl
PTestShutdown.ipdl
PTestShutdownSub.ipdl
PTestShutdownSubsub.ipdl
PTestStackHooks.ipdl
PTestSyncError.ipdl
PTestSyncHang.ipdl
PTestSyncWakeup.ipdl
PTestSysVShmem.ipdl
README.txt Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestBlockChild.cpp
TestBlockChild.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestBridgeMain.cpp
TestBridgeMain.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestCrashCleanup.cpp
TestCrashCleanup.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestDataStructures.cpp Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestDataStructures.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestDesc.cpp
TestDesc.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestFailedCtor.cpp Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestFailedCtor.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestHangs.cpp Bug 679240 - Split total channel timeout into two discrete wait periods. Avoids aborting children after system sleep. r=bsmedberg 2012-01-06 12:17:03 -06:00
TestHangs.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestJSON.cpp
TestJSON.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestLatency.cpp
TestLatency.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestManyChildAllocs.cpp
TestManyChildAllocs.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestMultiMgrs.cpp
TestMultiMgrs.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestNestedLoops.cpp
TestNestedLoops.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestOpens.cpp Bug 760007, part 2: Fix shutdown race condition in cross-process TestOpens. r=bent 2012-06-04 15:14:41 -07:00
TestOpens.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestRaceDeferral.cpp
TestRaceDeferral.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestRacyReentry.cpp
TestRacyReentry.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestRacyRPCReplies.cpp
TestRacyRPCReplies.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestRacyUndefer.cpp
TestRacyUndefer.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestRPCErrorCleanup.cpp
TestRPCErrorCleanup.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestRPCRaces.cpp
TestRPCRaces.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestRPCShutdownRace.cpp
TestRPCShutdownRace.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestSanity.cpp
TestSanity.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestSelfManageRoot.cpp
TestSelfManageRoot.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestShmem.cpp
TestShmem.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestShutdown.cpp
TestShutdown.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestStackHooks.cpp
TestStackHooks.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestSyncError.cpp
TestSyncError.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestSyncHang.cpp
TestSyncHang.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestSyncWakeup.cpp
TestSyncWakeup.h Bug 699319 - Part 3: Update test infrastructure to run tests in either threaded or process mode. r=cjones 2011-11-30 08:27:22 -08:00
TestSysVShmem.cpp
TestSysVShmem.h Bug 718254: Get the IPDL unit test harness compiling again. r=bent 2012-02-02 00:33:06 -08:00

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.