|
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 |