OLD | NEW |
| (Empty) |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include <string> | |
6 | |
7 #include "chrome/browser/metrics/metrics_response.h" | |
8 #include "chrome/browser/metrics/metrics_service.h" | |
9 #include "base/string_util.h" | |
10 #include "testing/gtest/include/gtest/gtest.h" | |
11 | |
12 namespace { | |
13 class MetricsResponseTest : public testing::Test { | |
14 }; | |
15 }; | |
16 | |
17 static const char kNoLogResponse[] = | |
18 "<response xmlns=\"http://www.mozilla.org/metrics\"><config>" | |
19 "</config></response>"; | |
20 | |
21 static const char kLogResponse1[] = | |
22 "<response xmlns=\"http://www.mozilla.org/metrics\"><config>" | |
23 "<collectors>" | |
24 "<collector type=\"profile\"/>" | |
25 "<collector type=\"document\"/>" | |
26 "<collector type=\"window\"/>" | |
27 "<collector type=\"ui\"/>" | |
28 "</collectors>" | |
29 "<limit events=\"500\"/><upload interval=\"600\"/>" | |
30 "</config></response>"; | |
31 | |
32 static const char kLogResponse2[] = | |
33 "<response xmlns=\"http://www.mozilla.org/metrics\"><config>" | |
34 "<collectors>" | |
35 "<collector type=\"profile\"/>" | |
36 "<collector type=\"document\"/>" | |
37 "<collector type=\"window\"/>" | |
38 "</collectors>" | |
39 "<limit events=\"250\"/><upload interval=\"900\"/>" | |
40 "</config></response>"; | |
41 | |
42 | |
43 static const struct ResponseCase { | |
44 const char* response_xml; | |
45 int collectors; | |
46 int events; | |
47 int interval; | |
48 bool profile_active; | |
49 bool window_active; | |
50 bool document_active; | |
51 bool ui_active; | |
52 } response_cases[] = { | |
53 { | |
54 kNoLogResponse, | |
55 MetricsResponse::COLLECTOR_NONE, | |
56 0, 0, | |
57 false, false, false, false | |
58 }, | |
59 { | |
60 kLogResponse1, | |
61 MetricsResponse::COLLECTOR_PROFILE | | |
62 MetricsResponse::COLLECTOR_DOCUMENT | | |
63 MetricsResponse::COLLECTOR_WINDOW | | |
64 MetricsResponse::COLLECTOR_UI, | |
65 500, 600, | |
66 true, true, true, true | |
67 }, | |
68 { | |
69 kLogResponse2, | |
70 MetricsResponse::COLLECTOR_PROFILE | | |
71 MetricsResponse::COLLECTOR_DOCUMENT | | |
72 MetricsResponse::COLLECTOR_WINDOW, | |
73 250, 900, | |
74 true, true, true, false | |
75 }, | |
76 }; | |
77 | |
78 TEST(MetricsResponseTest, ParseResponse) { | |
79 for (size_t i = 0; i < arraysize(response_cases); ++i) { | |
80 ResponseCase rcase = response_cases[i]; | |
81 MetricsResponse response(rcase.response_xml); | |
82 EXPECT_TRUE(response.valid()); | |
83 EXPECT_EQ(rcase.collectors, response.collectors()) << | |
84 "Mismatch in case " << i; | |
85 EXPECT_EQ(rcase.events, response.events()) << "Mismatch in case " << i; | |
86 EXPECT_EQ(rcase.interval, response.interval()) << "Mismatch in case " << i; | |
87 EXPECT_EQ(rcase.profile_active, | |
88 response.collector_active(MetricsResponse::COLLECTOR_PROFILE)) << | |
89 "Mismatch in case " << i; | |
90 EXPECT_EQ(rcase.window_active, | |
91 response.collector_active(MetricsResponse::COLLECTOR_WINDOW)) << | |
92 "Mismatch in case " << i; | |
93 EXPECT_EQ(rcase.document_active, | |
94 response.collector_active(MetricsResponse::COLLECTOR_DOCUMENT)) << | |
95 "Mismatch in case " << i; | |
96 EXPECT_EQ(rcase.ui_active, | |
97 response.collector_active(MetricsResponse::COLLECTOR_UI)) << | |
98 "Mismatch in case " << i; | |
99 } | |
100 } | |
101 | |
102 static const char* bogus_responses[] = {"", "<respo"}; | |
103 TEST(MetricsResponseTest, ParseBogusResponse) { | |
104 for (size_t i = 0; i < arraysize(bogus_responses); ++i) { | |
105 MetricsResponse response(bogus_responses[i]); | |
106 EXPECT_FALSE(response.valid()); | |
107 } | |
108 } | |
OLD | NEW |