ipc/ipdl/test/cxx/TestLatency.h

branch
TOR_BUG_3246
changeset 6
8bccb770b82d
equal deleted inserted replaced
-1:000000000000 0:d3b0e199f64d
1 #ifndef mozilla__ipdltest_TestLatency_h
2 #define mozilla__ipdltest_TestLatency_h 1
3
4 #include "mozilla/_ipdltest/IPDLUnitTests.h"
5
6 #include "mozilla/_ipdltest/PTestLatencyParent.h"
7 #include "mozilla/_ipdltest/PTestLatencyChild.h"
8
9 #include "mozilla/TimeStamp.h"
10
11 #define NR_TRIALS 10000
12 #define NR_SPAMS 25000
13
14 namespace mozilla {
15 namespace _ipdltest {
16
17 class TestLatencyParent :
18 public PTestLatencyParent
19 {
20 private:
21 typedef mozilla::TimeStamp TimeStamp;
22 typedef mozilla::TimeDuration TimeDuration;
23
24 public:
25 TestLatencyParent();
26 virtual ~TestLatencyParent();
27
28 static bool RunTestInProcesses() { return true; }
29 static bool RunTestInThreads() { return true; }
30
31 void Main();
32
33 protected:
34 virtual bool RecvPong() MOZ_OVERRIDE;
35 virtual bool RecvPong5() MOZ_OVERRIDE;
36
37 virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE
38 {
39 if (NormalShutdown != why)
40 fail("unexpected destruction!");
41
42 passed("\n"
43 " average #ping-pong/sec: %g\n"
44 " average #ping5-pong5/sec: %g\n"
45 " average #RPC call-answer/sec: %g\n"
46 " average #spams/sec: %g\n"
47 " pct. spams compressed away: %g\n",
48 double(NR_TRIALS) / mPPTimeTotal.ToSecondsSigDigits(),
49 double(NR_TRIALS) / mPP5TimeTotal.ToSecondsSigDigits(),
50 double(NR_TRIALS) / mRpcTimeTotal.ToSecondsSigDigits(),
51 double(NR_SPAMS) / mSpamTimeTotal.ToSecondsSigDigits(),
52 100.0 * (double(NR_SPAMS - mNumChildProcessedCompressedSpams) /
53 double(NR_SPAMS)));
54
55 QuitParent();
56 }
57
58 private:
59 void PingPongTrial();
60 void Ping5Pong5Trial();
61 void RpcTrials();
62 void SpamTrial();
63 void CompressedSpamTrial();
64 void Exit();
65
66 TimeStamp mStart;
67 TimeDuration mPPTimeTotal;
68 TimeDuration mPP5TimeTotal;
69 TimeDuration mRpcTimeTotal;
70 TimeDuration mSpamTimeTotal;
71
72 int mPPTrialsToGo;
73 int mPP5TrialsToGo;
74 uint32_t mNumChildProcessedCompressedSpams;
75 };
76
77
78 class TestLatencyChild :
79 public PTestLatencyChild
80 {
81 public:
82 TestLatencyChild();
83 virtual ~TestLatencyChild();
84
85 protected:
86 virtual bool RecvPing() MOZ_OVERRIDE;
87 virtual bool RecvPing5() MOZ_OVERRIDE;
88 virtual bool AnswerRpc() MOZ_OVERRIDE;
89 virtual bool RecvSpam() MOZ_OVERRIDE;
90 virtual bool AnswerSynchro() MOZ_OVERRIDE;
91 virtual bool RecvCompressedSpam(const uint32_t& seqno) MOZ_OVERRIDE;
92 virtual bool AnswerSynchro2(uint32_t* lastSeqno,
93 uint32_t* numMessagesDispatched) MOZ_OVERRIDE;
94
95 virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE
96 {
97 if (NormalShutdown != why)
98 fail("unexpected destruction!");
99 QuitChild();
100 }
101
102 uint32_t mLastSeqno;
103 uint32_t mNumProcessedCompressedSpams;
104 };
105
106
107 } // namespace _ipdltest
108 } // namespace mozilla
109
110
111 #endif // ifndef mozilla__ipdltest_TestLatency_h

mercurial