ipc/ipdl/test/cxx/PTestInterruptRaces.ipdl

Wed, 31 Dec 2014 13:27:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 13:27:57 +0100
branch
TOR_BUG_3246
changeset 6
8bccb770b82d
permissions
-rw-r--r--

Ignore runtime configuration files generated during quality assurance.

     1 namespace mozilla {
     2 namespace _ipdltest {
     4 intr protocol PTestInterruptRaces {
     5 both:
     6     intr Race() returns (bool hasReply);
     7     intr StackFrame() returns ();
     8     intr StackFrame3() returns ();
    10 parent:
    11     sync StartRace();
    12     intr Parent();
    13     sync GetAnsweredParent() returns (bool answeredParent);
    15 child:
    16     Start();
    17     Wakeup();
    18     Wakeup3();
    19     intr Child();
    20     __delete__();
    22 state START:
    23     send Start goto TEST1;
    25 // First test: race while no other messages are on the Interrupt stack
    26 state TEST1:
    27     recv StartRace goto RACE1;
    28 state RACE1:
    29     call Race goto DUMMY1_1;
    30     answer Race goto DUMMY1_2;
    31 state DUMMY1_1:
    32     answer Race goto TEST2;
    33 state DUMMY1_2:
    34     call Race goto TEST2;
    36 // Second test: race while other messages are on the Interrupt stack
    37 state TEST2:
    38     call StackFrame goto MORESTACK;
    39 state MORESTACK:
    40     answer StackFrame goto STARTRACE;
    41 state STARTRACE:
    42     send Wakeup goto RACE2;
    43 state RACE2:
    44     call Race goto DUMMY2_1;
    45     answer Race goto DUMMY2_2;
    46 state DUMMY2_1:
    47     answer Race goto TEST3;
    48 state DUMMY2_2:
    49     call Race goto TEST3;
    51 // Third test: resolve race using custom policy
    52 state TEST3:
    53     call StackFrame3 goto MORESTACK3;
    54 state MORESTACK3:
    55     answer StackFrame3 goto STARTRACE3;
    56 state STARTRACE3:
    57     send Wakeup3 goto RACE3;
    58 state RACE3:
    59     call Child goto DUMMY3_1;
    60     answer Parent goto DUMMY3_2;
    61 state DUMMY3_1:
    62     // the parent receives this from the child in this state
    63     recv GetAnsweredParent goto CHECK;
    64     // this transition is never taken (if the custom race resolution
    65     // works correctly)
    66     answer Parent goto CHECK;
    67 state DUMMY3_2:
    68     call Child goto CHECK;
    69 state CHECK:
    70     // the child sends this from this state
    71     recv GetAnsweredParent goto DYING;
    72     // because of deferred processing, the parent receives the child's
    73     // message here
    74     answer Parent goto DYING;
    77 state DYING:
    78     send __delete__;
    79 };
    81 } // namespace _ipdltest
    82 } // namespace mozilla

mercurial