Index: remoting/host/daemon_process_unittest.cc |
diff --git a/remoting/host/daemon_process_unittest.cc b/remoting/host/daemon_process_unittest.cc |
index c27b79a97c76af26423c826e7eac05294d100418..afa18c8fc26761372c983499f8f0bb41997440ea 100644 |
--- a/remoting/host/daemon_process_unittest.cc |
+++ b/remoting/host/daemon_process_unittest.cc |
@@ -40,7 +40,8 @@ enum Messages { |
kMessageConnectTerminal = ChromotingNetworkHostMsg_ConnectTerminal::ID, |
kMessageDisconnectTerminal = ChromotingNetworkHostMsg_DisconnectTerminal::ID, |
kMessageTerminalDisconnected = |
- ChromotingDaemonNetworkMsg_TerminalDisconnected::ID |
+ ChromotingDaemonNetworkMsg_TerminalDisconnected::ID, |
+ kMessageReportProcessStats = ChromotingAnyToNetworkMsg_ReportProcessStats::ID, |
}; |
// Provides a public constructor allowing the test to create instances of |
@@ -347,4 +348,57 @@ TEST_F(DaemonProcessTest, InvalidConnectTerminal) { |
EXPECT_EQ(0, terminal_id_); |
} |
+TEST_F(DaemonProcessTest, StartProcessStatsReport) { |
+ EXPECT_CALL(*daemon_process_, Sent(Message(kMessageReportProcessStats))); |
+ daemon_process_->OnMessageReceived( |
+ ChromotingNetworkToAnyMsg_StartProcessStatsReport( |
+ base::TimeDelta::FromMilliseconds(1))); |
+ base::RunLoop run_loop; |
+ ON_CALL(*daemon_process_, Sent(Message(kMessageReportProcessStats))) |
+ .WillByDefault(testing::Invoke( |
+ [&run_loop](const IPC::Message& message) { |
+ run_loop.Quit(); |
+ })); |
+ run_loop.Run(); |
+} |
+ |
+TEST_F(DaemonProcessTest, StartProcessStatsReportWithDifferentDelta) { |
+ EXPECT_CALL(*daemon_process_, Sent(Message(kMessageReportProcessStats))) |
+ .Times(AnyNumber()); |
+ int received = 0; |
+ daemon_process_->OnMessageReceived( |
+ ChromotingNetworkToAnyMsg_StartProcessStatsReport( |
+ base::TimeDelta::FromHours(1))); |
+ daemon_process_->OnMessageReceived( |
+ ChromotingNetworkToAnyMsg_StartProcessStatsReport( |
+ base::TimeDelta::FromMilliseconds(1))); |
+ base::RunLoop run_loop; |
+ ON_CALL(*daemon_process_, Sent(Message(kMessageReportProcessStats))) |
+ .WillByDefault(testing::Invoke( |
+ [&run_loop, &received](const IPC::Message& message) { |
+ received++; |
+ if (received == 5) { |
+ run_loop.Quit(); |
+ } |
+ })); |
+ run_loop.Run(); |
+} |
+ |
+TEST_F(DaemonProcessTest, StopProcessStatsReportWhenTheWorkerProcessDied) { |
+ daemon_process_->OnMessageReceived( |
+ ChromotingNetworkToAnyMsg_StartProcessStatsReport( |
+ base::TimeDelta::FromMilliseconds(1))); |
+ base::RunLoop run_loop; |
+ ON_CALL(*daemon_process_, Sent(Message(kMessageReportProcessStats))) |
+ .WillByDefault(testing::Invoke( |
+ [](const IPC::Message& message) { |
+ ASSERT_TRUE(false); |
+ })); |
+ static_cast<WorkerProcessIpcDelegate*>(daemon_process_.get()) |
+ ->OnWorkerProcessStopped(); |
+ message_loop_.task_runner()->PostDelayedTask( |
+ FROM_HERE, run_loop.QuitClosure(), base::TimeDelta::FromMilliseconds(10)); |
+ run_loop.Run(); |
+} |
+ |
} // namespace remoting |