ipc/ipdl/test/cxx/TestLatency.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 #ifndef mozilla__ipdltest_TestLatency_h
     2 #define mozilla__ipdltest_TestLatency_h 1
     4 #include "mozilla/_ipdltest/IPDLUnitTests.h"
     6 #include "mozilla/_ipdltest/PTestLatencyParent.h"
     7 #include "mozilla/_ipdltest/PTestLatencyChild.h"
     9 #include "mozilla/TimeStamp.h"
    11 #define NR_TRIALS 10000
    12 #define NR_SPAMS  25000
    14 namespace mozilla {
    15 namespace _ipdltest {
    17 class TestLatencyParent :
    18     public PTestLatencyParent
    19 {
    20 private:
    21     typedef mozilla::TimeStamp TimeStamp;
    22     typedef mozilla::TimeDuration TimeDuration;
    24 public:
    25     TestLatencyParent();
    26     virtual ~TestLatencyParent();
    28     static bool RunTestInProcesses() { return true; }
    29     static bool RunTestInThreads() { return true; }
    31     void Main();
    33 protected:
    34     virtual bool RecvPong() MOZ_OVERRIDE;
    35     virtual bool RecvPong5() MOZ_OVERRIDE;
    37     virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE
    38     {
    39         if (NormalShutdown != why)
    40             fail("unexpected destruction!");  
    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)));
    55         QuitParent();
    56     }
    58 private:
    59     void PingPongTrial();
    60     void Ping5Pong5Trial();
    61     void RpcTrials();
    62     void SpamTrial();
    63     void CompressedSpamTrial();
    64     void Exit();
    66     TimeStamp mStart;
    67     TimeDuration mPPTimeTotal;
    68     TimeDuration mPP5TimeTotal;
    69     TimeDuration mRpcTimeTotal;
    70     TimeDuration mSpamTimeTotal;
    72     int mPPTrialsToGo;
    73     int mPP5TrialsToGo;
    74     uint32_t mNumChildProcessedCompressedSpams;
    75 };
    78 class TestLatencyChild :
    79     public PTestLatencyChild
    80 {
    81 public:
    82     TestLatencyChild();
    83     virtual ~TestLatencyChild();
    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;
    95     virtual void ActorDestroy(ActorDestroyReason why) MOZ_OVERRIDE
    96     {
    97         if (NormalShutdown != why)
    98             fail("unexpected destruction!");
    99         QuitChild();
   100     }
   102     uint32_t mLastSeqno;
   103     uint32_t mNumProcessedCompressedSpams;
   104 };
   107 } // namespace _ipdltest
   108 } // namespace mozilla
   111 #endif // ifndef mozilla__ipdltest_TestLatency_h

mercurial