diff -r 000000000000 -r 6474c204b198 ipc/ipdl/test/cxx/PTestLatency.ipdl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ipc/ipdl/test/cxx/PTestLatency.ipdl Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,75 @@ + +namespace mozilla { +namespace _ipdltest { + + +intr protocol PTestLatency { + +child: + __delete__(); + Ping(); + Ping5(); + intr Rpc(); + Spam(); + intr Synchro(); + CompressedSpam(uint32_t seqno) compress; + intr Synchro2() returns (uint32_t lastSeqno, + uint32_t numMessagesDispatched); + +parent: + Pong(); + Pong5(); + +state START: + // if the timing resolution is too low, abort the test + send __delete__; + // otherwise, kick off the ping/pong trials + send Ping goto PONG; + + // Trial 1: single ping/pong latency +state PING: + send Ping goto PONG; + send Ping5 goto PING4; + +state PONG: + recv Pong goto PING; + + // Trial 2: "overlapped" ping/pong latency +state PING5: + send Ping5 goto PING4; + call Rpc goto RPC; + +state PING4: send Ping5 goto PING3; +state PING3: send Ping5 goto PING2; +state PING2: send Ping5 goto PING1; +state PING1: send Ping5 goto PONG1; + +state PONG1: recv Pong5 goto PONG2; +state PONG2: recv Pong5 goto PONG3; +state PONG3: recv Pong5 goto PONG4; +state PONG4: recv Pong5 goto PONG5; +state PONG5: recv Pong5 goto PING5; + + // Trial 3: lotsa RPC +state RPC: + call Rpc goto RPC; + send Spam goto SPAM; + + // Trial 4: lots of sequential asyn messages, which tests pipelining +state SPAM: + send Spam goto SPAM; + call Synchro goto COMPRESSED_SPAM; + + // Trial 5: lots of async spam, but compressed to cut down on + // dispatch overhead +state COMPRESSED_SPAM: // compressed spam, mmm + send CompressedSpam goto COMPRESSED_SPAM; + call Synchro2 goto DONE; + +state DONE: + send __delete__; +}; + + +} // namespace mozilla +} // namespace _ipdltest