| Index: tools/battor_agent/battor_agent_unittest.cc
|
| diff --git a/tools/battor_agent/battor_agent_unittest.cc b/tools/battor_agent/battor_agent_unittest.cc
|
| index 75ec3015930070b1505461e0eacc8a16b44658be..291c109c9ae016f7a3620e3bedbf1678cca3e631 100644
|
| --- a/tools/battor_agent/battor_agent_unittest.cc
|
| +++ b/tools/battor_agent/battor_agent_unittest.cc
|
| @@ -120,7 +120,7 @@ class BattOrAgentTest : public testing::Test, public BattOrAgent::Listener {
|
| }
|
|
|
| void OnGetFirmwareGitHashComplete(const std::string& firmware_git_hash,
|
| - BattOrError error) override {
|
| + BattOrError error) override {
|
| is_command_complete_ = true;
|
| command_error_ = error;
|
| firmware_git_hash_ = firmware_git_hash;
|
| @@ -401,7 +401,7 @@ TEST_F(BattOrAgentTest, StartTracingFailsIfInitAckReadFails) {
|
|
|
| // Bytes will be sent because INIT will be retried.
|
| OnBytesSent(true);
|
| - }
|
| + }
|
|
|
| EXPECT_TRUE(IsCommandComplete());
|
| EXPECT_EQ(BATTOR_ERROR_TOO_MANY_INIT_RETRIES, GetCommandError());
|
| @@ -455,20 +455,86 @@ TEST_F(BattOrAgentTest, StartTracingFailsIfStartTracingSendFails) {
|
| EXPECT_EQ(BATTOR_ERROR_SEND_ERROR, GetCommandError());
|
| }
|
|
|
| -TEST_F(BattOrAgentTest, StartTracingFailsIfStartTracingAckReadFails) {
|
| - RunStartTracingTo(BattOrAgentState::START_TRACING_SENT);
|
| - OnMessageRead(false, BATTOR_MESSAGE_TYPE_CONTROL_ACK, nullptr);
|
| +TEST_F(BattOrAgentTest, StartTracingSucceedsAfterRetriesIfWrongAckRead) {
|
| + RunStartTracingTo(BattOrAgentState::CONNECTED);
|
| +
|
| + for (int i = 0; i < 4; i++) {
|
| + // Go through the correct init sequence, but give the wrong ack to
|
| + // START_TRACING.
|
| + OnBytesSent(true);
|
| + OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
|
| + ToCharVector(kInitAck));
|
| + OnBytesSent(true);
|
| + OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
|
| + ToCharVector(kSetGainAck));
|
| + OnBytesSent(true);
|
| + OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
|
| + ToCharVector(kInitAck));
|
| + }
|
| +
|
| + // On the last attempt, give the correct ack to START_TRACING.
|
| + OnBytesSent(true);
|
| + OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK, ToCharVector(kInitAck));
|
| + OnBytesSent(true);
|
| + OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
|
| + ToCharVector(kSetGainAck));
|
| + OnBytesSent(true);
|
| + OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
|
| + ToCharVector(kStartTracingAck));
|
|
|
| EXPECT_TRUE(IsCommandComplete());
|
| - EXPECT_EQ(BATTOR_ERROR_RECEIVE_ERROR, GetCommandError());
|
| + EXPECT_EQ(BATTOR_ERROR_NONE, GetCommandError());
|
| }
|
|
|
| -TEST_F(BattOrAgentTest, StartTracingFailsIfStartTracingWrongAckRead) {
|
| - RunStartTracingTo(BattOrAgentState::START_TRACING_SENT);
|
| +TEST_F(BattOrAgentTest, StartTracingSucceedsAfterRetriesWithReadFailure) {
|
| + RunStartTracingTo(BattOrAgentState::CONNECTED);
|
| +
|
| + for (int i = 0; i < 4; i++) {
|
| + // Go through the correct init sequence, but indicate that we failed to read
|
| + // the START_TRACING ack.
|
| + OnBytesSent(true);
|
| + OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
|
| + ToCharVector(kInitAck));
|
| + OnBytesSent(true);
|
| + OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
|
| + ToCharVector(kSetGainAck));
|
| + OnBytesSent(true);
|
| + OnMessageRead(false, BATTOR_MESSAGE_TYPE_CONTROL_ACK, nullptr);
|
| + }
|
| +
|
| + // On the last attempt, give the correct ack to START_TRACING.
|
| + OnBytesSent(true);
|
| OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK, ToCharVector(kInitAck));
|
| + OnBytesSent(true);
|
| + OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
|
| + ToCharVector(kSetGainAck));
|
| + OnBytesSent(true);
|
| + OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
|
| + ToCharVector(kStartTracingAck));
|
|
|
| EXPECT_TRUE(IsCommandComplete());
|
| - EXPECT_EQ(BATTOR_ERROR_UNEXPECTED_MESSAGE, GetCommandError());
|
| + EXPECT_EQ(BATTOR_ERROR_NONE, GetCommandError());
|
| +}
|
| +
|
| +TEST_F(BattOrAgentTest, StartTracingFailsIfStartTracingWrongAckReadTooMuch) {
|
| + RunStartTracingTo(BattOrAgentState::CONNECTED);
|
| +
|
| + for (int i = 0; i < 5; i++) {
|
| + // Go through the correct init sequence, but give the wrong ack to
|
| + // START_TRACING.
|
| + OnBytesSent(true);
|
| + OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
|
| + ToCharVector(kInitAck));
|
| + OnBytesSent(true);
|
| + OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
|
| + ToCharVector(kSetGainAck));
|
| + OnBytesSent(true);
|
| + OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
|
| + ToCharVector(kInitAck));
|
| + }
|
| +
|
| + EXPECT_TRUE(IsCommandComplete());
|
| + EXPECT_EQ(BATTOR_ERROR_TOO_MANY_START_TRACING_RETRIES, GetCommandError());
|
| }
|
|
|
| TEST_F(BattOrAgentTest, StartTracingSucceedsWithOneInitFailure) {
|
| @@ -887,7 +953,6 @@ TEST_F(BattOrAgentTest, RecordClockSyncMarkerPrintsInStopTracingResult) {
|
| "0.00 0.0 0.0 <MY_MARKER>\n"
|
| "1.00 0.6 1.2\n",
|
| GetTrace());
|
| -
|
| }
|
|
|
| TEST_F(BattOrAgentTest, RecordClockSyncMarkerFailsWithoutConnection) {
|
|
|