namespace mozilla { namespace _ipdltest { rpc protocol PTestLatency { child: __delete__(); Ping(); Ping5(); rpc Rpc(); Spam(); rpc Synchro(); CompressedSpam(uint32_t seqno) compress; rpc 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