gecko/ipc/ipdl/test/cxx/PTestLatency.ipdl

76 lines
1.6 KiB
Plaintext

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