summaryrefslogtreecommitdiffstats
path: root/ipc/ipdl/test/cxx/PTestLatency.ipdl
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