1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/ipc/ipdl/test/cxx/TestLatency.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,111 @@ 1.4 +#ifndef mozilla__ipdltest_TestLatency_h 1.5 +#define mozilla__ipdltest_TestLatency_h 1 1.6 + 1.7 +#include "mozilla/_ipdltest/IPDLUnitTests.h" 1.8 + 1.9 +#include "mozilla/_ipdltest/PTestLatencyParent.h" 1.10 +#include "mozilla/_ipdltest/PTestLatencyChild.h" 1.11 + 1.12 +#include "mozilla/TimeStamp.h" 1.13 + 1.14 +#define NR_TRIALS 10000 1.15 +#define NR_SPAMS 25000 1.16 + 1.17 +namespace mozilla { 1.18 +namespace _ipdltest { 1.19 + 1.20 +class TestLatencyParent : 1.21 + public PTestLatencyParent 1.22 +{ 1.23 +private: 1.24 + typedef mozilla::TimeStamp TimeStamp; 1.25 + typedef mozilla::TimeDuration TimeDuration; 1.26 + 1.27 +public: 1.28 + TestLatencyParent(); 1.29 + virtual ~TestLatencyParent(); 1.30 + 1.31 + static bool RunTestInProcesses() { return true; } 1.32 + static bool RunTestInThreads() { return true; } 1.33 + 1.34 + void Main(); 1.35 + 1.36 +protected: 1.37 + virtual bool RecvPong() MOZ_OVERRIDE; 1.38 + virtual bool RecvPong5() MOZ_OVERRIDE; 1.39 + 1.40 + virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE 1.41 + { 1.42 + if (NormalShutdown != why) 1.43 + fail("unexpected destruction!"); 1.44 + 1.45 + passed("\n" 1.46 + " average #ping-pong/sec: %g\n" 1.47 + " average #ping5-pong5/sec: %g\n" 1.48 + " average #RPC call-answer/sec: %g\n" 1.49 + " average #spams/sec: %g\n" 1.50 + " pct. spams compressed away: %g\n", 1.51 + double(NR_TRIALS) / mPPTimeTotal.ToSecondsSigDigits(), 1.52 + double(NR_TRIALS) / mPP5TimeTotal.ToSecondsSigDigits(), 1.53 + double(NR_TRIALS) / mRpcTimeTotal.ToSecondsSigDigits(), 1.54 + double(NR_SPAMS) / mSpamTimeTotal.ToSecondsSigDigits(), 1.55 + 100.0 * (double(NR_SPAMS - mNumChildProcessedCompressedSpams) / 1.56 + double(NR_SPAMS))); 1.57 + 1.58 + QuitParent(); 1.59 + } 1.60 + 1.61 +private: 1.62 + void PingPongTrial(); 1.63 + void Ping5Pong5Trial(); 1.64 + void RpcTrials(); 1.65 + void SpamTrial(); 1.66 + void CompressedSpamTrial(); 1.67 + void Exit(); 1.68 + 1.69 + TimeStamp mStart; 1.70 + TimeDuration mPPTimeTotal; 1.71 + TimeDuration mPP5TimeTotal; 1.72 + TimeDuration mRpcTimeTotal; 1.73 + TimeDuration mSpamTimeTotal; 1.74 + 1.75 + int mPPTrialsToGo; 1.76 + int mPP5TrialsToGo; 1.77 + uint32_t mNumChildProcessedCompressedSpams; 1.78 +}; 1.79 + 1.80 + 1.81 +class TestLatencyChild : 1.82 + public PTestLatencyChild 1.83 +{ 1.84 +public: 1.85 + TestLatencyChild(); 1.86 + virtual ~TestLatencyChild(); 1.87 + 1.88 +protected: 1.89 + virtual bool RecvPing() MOZ_OVERRIDE; 1.90 + virtual bool RecvPing5() MOZ_OVERRIDE; 1.91 + virtual bool AnswerRpc() MOZ_OVERRIDE; 1.92 + virtual bool RecvSpam() MOZ_OVERRIDE; 1.93 + virtual bool AnswerSynchro() MOZ_OVERRIDE; 1.94 + virtual bool RecvCompressedSpam(const uint32_t& seqno) MOZ_OVERRIDE; 1.95 + virtual bool AnswerSynchro2(uint32_t* lastSeqno, 1.96 + uint32_t* numMessagesDispatched) MOZ_OVERRIDE; 1.97 + 1.98 + virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE 1.99 + { 1.100 + if (NormalShutdown != why) 1.101 + fail("unexpected destruction!"); 1.102 + QuitChild(); 1.103 + } 1.104 + 1.105 + uint32_t mLastSeqno; 1.106 + uint32_t mNumProcessedCompressedSpams; 1.107 +}; 1.108 + 1.109 + 1.110 +} // namespace _ipdltest 1.111 +} // namespace mozilla 1.112 + 1.113 + 1.114 +#endif // ifndef mozilla__ipdltest_TestLatency_h