blob: d0c9750d8e52ecd8dea53023a3a6e74e4df6b5a3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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
|