diff options
Diffstat (limited to 'ipc/ipdl/test/cxx/PTestLatency.ipdl')
-rw-r--r-- | ipc/ipdl/test/cxx/PTestLatency.ipdl | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/ipc/ipdl/test/cxx/PTestLatency.ipdl b/ipc/ipdl/test/cxx/PTestLatency.ipdl new file mode 100644 index 000000000..d0c9750d8 --- /dev/null +++ b/ipc/ipdl/test/cxx/PTestLatency.ipdl @@ -0,0 +1,75 @@ + +namespace mozilla { +namespace _ipdltest { + + +intr protocol PTestLatency { + +child: + async __delete__(); + async Ping(); + async Ping5(); + intr Rpc(); + async Spam(); + intr Synchro(); + async CompressedSpam(uint32_t seqno) compress; + intr Synchro2() returns (uint32_t lastSeqno, + uint32_t numMessagesDispatched); + +parent: + async Pong(); + async 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 |