summaryrefslogtreecommitdiffstats
path: root/ipc/ipdl/test/cxx/PTestLatency.ipdl
diff options
context:
space:
mode:
Diffstat (limited to 'ipc/ipdl/test/cxx/PTestLatency.ipdl')
-rw-r--r--ipc/ipdl/test/cxx/PTestLatency.ipdl75
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