Chromium Code Reviews| Index: sync/engine/traffic_recorder_unittest.cc |
| diff --git a/sync/engine/traffic_recorder_unittest.cc b/sync/engine/traffic_recorder_unittest.cc |
| index cf821f5e408402e86662115a16099f596ce6e15a..bc55496585545e3762529168988d5ebdc71b3035 100644 |
| --- a/sync/engine/traffic_recorder_unittest.cc |
| +++ b/sync/engine/traffic_recorder_unittest.cc |
| @@ -4,7 +4,10 @@ |
| #include "sync/engine/traffic_recorder.h" |
| +#include "base/time.h" |
| +#include "base/values.h" |
| #include "sync/protocol/sync.pb.h" |
| +#include "sync/util/time.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| namespace syncer { |
| @@ -39,4 +42,79 @@ TEST(TrafficRecorderTest, MaxMessageSizeTest) { |
| EXPECT_TRUE(record.message.empty()); |
| } |
| +// Test implementation of TrafficRecorder. |
| +class TestTrafficRecorder : public TrafficRecorder { |
| + public: |
| + TestTrafficRecorder(unsigned int max_messages, unsigned int max_message_size) |
| + : TrafficRecorder(max_messages, max_message_size) { |
| + set_time(0); |
| + } |
| + virtual ~TestTrafficRecorder() {} |
| + |
| + virtual base::Time GetTime() OVERRIDE { |
| + return time_; |
| + } |
| + |
| + void set_time(int64 time) { |
| + time_ = ProtoTimeToTime(time); |
| + } |
| + |
| + void set_time(base::Time time) { |
| + time_ = time; |
| + } |
| + |
| + private: |
| + base::Time time_; |
| +}; |
| + |
| +// Ensure that timestamp is recorded correctly in traffic record. |
| +TEST(TrafficRecorderTest, TimestampTest) { |
| + sync_pb::ClientToServerResponse response; |
| + |
| + TestTrafficRecorder recorder(kMaxMessages, kMaxMessageSize); |
| + recorder.set_time(3); |
| + recorder.RecordClientToServerResponse(response); |
| + |
| + base::Time expect_time = ProtoTimeToTime(3); |
| + TrafficRecorder::TrafficRecord record = recorder.records().front(); |
| + EXPECT_EQ(expect_time, record.timestamp); |
| +} |
| + |
| +// Ensure that timestamps are recorded correctly in traffic records. |
| +TEST(TrafficRecorderTest, MultipleTimestampTest) { |
| + sync_pb::ClientToServerResponse response; |
| + base::Time sample_time_1 = ProtoTimeToTime(1359484676659324); |
|
Lei Zhang
2013/02/01 05:19:11
These big numbers need GG_INT64_C.
|
| + base::Time sample_time_2 = ProtoTimeToTime(1359484676659324 * 2); |
| + |
| + TestTrafficRecorder recorder(kMaxMessages, kMaxMessageSize); |
| + recorder.set_time(sample_time_1); |
| + recorder.RecordClientToServerResponse(response); |
| + recorder.set_time(sample_time_2); |
| + recorder.RecordClientToServerResponse(response); |
| + |
| + TrafficRecorder::TrafficRecord record_1 = recorder.records().front(); |
| + TrafficRecorder::TrafficRecord record_2 = recorder.records().back(); |
| + EXPECT_EQ(sample_time_1, record_1.timestamp); |
| + EXPECT_EQ(sample_time_2, record_2.timestamp); |
| +} |
| + |
| +// Ensure that timestamp is added to ListValue of DictionaryValues in ToValue(). |
| +TEST(TrafficRecorderTest, ToValueTimestampTest) { |
| + sync_pb::ClientToServerResponse response; |
| + base::Time sample_time = ProtoTimeToTime(1359484676659324); |
| + std::string expect_time_str = GetTimeDebugString(sample_time); |
| + |
| + TestTrafficRecorder recorder(kMaxMessages, kMaxMessageSize); |
| + recorder.set_time(sample_time); |
| + recorder.RecordClientToServerResponse(response); |
| + |
| + ListValue* value = recorder.ToValue(); |
| + DictionaryValue* record_value; |
| + std::string time_str; |
| + |
| + ASSERT_TRUE(value->GetDictionary(0, &record_value)); |
| + EXPECT_TRUE(record_value->GetString("timestamp", &time_str)); |
| + EXPECT_EQ(expect_time_str, time_str); |
| +} |
| + |
| } // namespace syncer |