Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: chrome/browser/mod_pagespeed_metrics_unittest.cc

Issue 1051463003: Move mod_pagespeed metrics out of prerender. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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 "chrome/browser/mod_pagespeed_metrics.h"
6
7 #include <algorithm>
8 #include <string>
9
10 #include "base/memory/ref_counted.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "base/metrics/histogram.h"
13 #include "base/metrics/histogram_samples.h"
14 #include "base/metrics/statistics_recorder.h"
15 #include "content/public/common/resource_type.h"
16 #include "net/http/http_response_headers.h"
17 #include "testing/gtest/include/gtest/gtest.h"
18 #include "url/gurl.h"
19
20 // Ensure that we count PageSpeed headers correctly.
21 TEST(ModPagespeedMetricsTest, CountPageSpeedHeadersTest) {
22 base::StatisticsRecorder::Initialize();
23 GURL url("http://google.com");
24 std::string temp("HTTP/1.1 200 OK\n\n");
25 std::replace(temp.begin(), temp.end(), '\n', '\0');
26 scoped_refptr<net::HttpResponseHeaders> headers(
27 new net::HttpResponseHeaders(temp));
28
29 int num_responses = 0;
30 int num_mps = 0;
31 int num_ngx = 0;
32 int num_pss = 0;
33 int num_other = 0;
34 int num_bucket_1 = 0; // unrecognized format/value bucket
35 int num_bucket_30 = 0; // 1.2.24.1 bucket
36 int num_bucket_33 = 0; // 1.3.25.2 bucket
37
38 scoped_ptr<base::HistogramSamples> server_samples;
39 scoped_ptr<base::HistogramSamples> version_samples;
40
41 // No PageSpeed header. The VersionCounts histogram isn't created yet.
42 RecordModPagespeedMetrics(content::RESOURCE_TYPE_MAIN_FRAME, url,
43 headers.get());
44 base::HistogramBase* server_histogram =
45 base::StatisticsRecorder::FindHistogram(
46 "Prerender.PagespeedHeader.ServerCounts");
47 ASSERT_TRUE(server_histogram != NULL);
48 ASSERT_TRUE(NULL == base::StatisticsRecorder::FindHistogram(
49 "Prerender.PagespeedHeader.VersionCounts"));
50
51 server_samples = server_histogram->SnapshotSamples();
52 EXPECT_EQ(++num_responses, server_samples->GetCount(0));
53 EXPECT_EQ(num_mps, server_samples->GetCount(1));
54 EXPECT_EQ(num_ngx, server_samples->GetCount(2));
55 EXPECT_EQ(num_pss, server_samples->GetCount(3));
56 EXPECT_EQ(num_other, server_samples->GetCount(4));
57
58 // X-Mod-Pagespeed header in expected format. VersionCounts now exists.
59 headers->AddHeader("X-Mod-Pagespeed: 1.2.24.1-2300");
60 RecordModPagespeedMetrics(content::RESOURCE_TYPE_MAIN_FRAME, url,
61 headers.get());
62 base::HistogramBase* version_histogram =
63 base::StatisticsRecorder::FindHistogram(
64 "Prerender.PagespeedHeader.VersionCounts");
65 ASSERT_TRUE(version_histogram != NULL);
66 server_samples = server_histogram->SnapshotSamples();
67 version_samples = version_histogram->SnapshotSamples();
68 EXPECT_EQ(++num_responses, server_samples->GetCount(0));
69 EXPECT_EQ(++num_mps, server_samples->GetCount(1));
70 EXPECT_EQ(num_ngx, server_samples->GetCount(2));
71 EXPECT_EQ(num_pss, server_samples->GetCount(3));
72 EXPECT_EQ(num_other, server_samples->GetCount(4));
73 EXPECT_EQ(num_bucket_1, version_samples->GetCount(1));
74 EXPECT_EQ(++num_bucket_30, version_samples->GetCount(30)); // +1 for #30
75 EXPECT_EQ(num_bucket_33, version_samples->GetCount(33));
76 headers->RemoveHeader("X-Mod-Pagespeed");
77
78 // X-Mod-Pagespeed header in unexpected format.
79 headers->AddHeader("X-Mod-Pagespeed: Powered By PageSpeed!");
80 RecordModPagespeedMetrics(content::RESOURCE_TYPE_MAIN_FRAME, url,
81 headers.get());
82 server_samples = server_histogram->SnapshotSamples();
83 version_samples = version_histogram->SnapshotSamples();
84 EXPECT_EQ(++num_responses, server_samples->GetCount(0));
85 EXPECT_EQ(++num_mps, server_samples->GetCount(1));
86 EXPECT_EQ(num_ngx, server_samples->GetCount(2));
87 EXPECT_EQ(num_pss, server_samples->GetCount(3));
88 EXPECT_EQ(num_other, server_samples->GetCount(4));
89 EXPECT_EQ(++num_bucket_1, version_samples->GetCount(1)); // +1 for 'huh?'
90 EXPECT_EQ(num_bucket_30, version_samples->GetCount(30));
91 EXPECT_EQ(num_bucket_33, version_samples->GetCount(33));
92 headers->RemoveHeader("X-Mod-Pagespeed");
93
94 // X-Page-Speed header in mod_pagespeed format (so ngx_pagespeed).
95 headers->AddHeader("X-Page-Speed: 1.3.25.2-2530");
96 RecordModPagespeedMetrics(content::RESOURCE_TYPE_MAIN_FRAME, url,
97 headers.get());
98 server_samples = server_histogram->SnapshotSamples();
99 version_samples = version_histogram->SnapshotSamples();
100 EXPECT_EQ(++num_responses, server_samples->GetCount(0));
101 EXPECT_EQ(num_mps, server_samples->GetCount(1));
102 EXPECT_EQ(++num_ngx, server_samples->GetCount(2));
103 EXPECT_EQ(num_pss, server_samples->GetCount(3));
104 EXPECT_EQ(num_other, server_samples->GetCount(4));
105 EXPECT_EQ(num_bucket_1, version_samples->GetCount(1));
106 EXPECT_EQ(num_bucket_30, version_samples->GetCount(30));
107 EXPECT_EQ(++num_bucket_33, version_samples->GetCount(33)); // +1 for #33
108 headers->RemoveHeader("X-Page-Speed");
109
110 // X-Page-Speed header in PageSpeed Service format.
111 headers->AddHeader("X-Page-Speed: 97_4_bo");
112 RecordModPagespeedMetrics(content::RESOURCE_TYPE_MAIN_FRAME, url,
113 headers.get());
114 server_samples = server_histogram->SnapshotSamples();
115 version_samples = version_histogram->SnapshotSamples();
116 EXPECT_EQ(++num_responses, server_samples->GetCount(0));
117 EXPECT_EQ(num_mps, server_samples->GetCount(1)); // no change
118 EXPECT_EQ(num_ngx, server_samples->GetCount(2));
119 EXPECT_EQ(++num_pss, server_samples->GetCount(3)); // +1 for PSS
120 EXPECT_EQ(num_other, server_samples->GetCount(4));
121 EXPECT_EQ(num_bucket_1, version_samples->GetCount(1));
122 EXPECT_EQ(num_bucket_30, version_samples->GetCount(30));
123 EXPECT_EQ(num_bucket_33, version_samples->GetCount(33));
124 headers->RemoveHeader("X-Page-Speed");
125
126 // X-Page-Speed header in an unrecognized format (IISpeed in this case).
127 headers->AddHeader("X-Page-Speed: 1.0PS1.2-20130615");
128 RecordModPagespeedMetrics(content::RESOURCE_TYPE_MAIN_FRAME, url,
129 headers.get());
130 server_samples = server_histogram->SnapshotSamples();
131 version_samples = version_histogram->SnapshotSamples();
132 EXPECT_EQ(++num_responses, server_samples->GetCount(0));
133 EXPECT_EQ(num_mps, server_samples->GetCount(1)); // no change
134 EXPECT_EQ(num_pss, server_samples->GetCount(3));
135 EXPECT_EQ(++num_other, server_samples->GetCount(4)); // +1 for 'other'
136 EXPECT_EQ(num_bucket_1, version_samples->GetCount(1));
137 EXPECT_EQ(num_bucket_30, version_samples->GetCount(30));
138 EXPECT_EQ(num_bucket_33, version_samples->GetCount(33));
139
140 // Not a main frame => not counted at all.
141 RecordModPagespeedMetrics(content::RESOURCE_TYPE_SUB_FRAME, url,
142 headers.get());
143 server_samples = server_histogram->SnapshotSamples();
144 version_samples = version_histogram->SnapshotSamples();
145 EXPECT_EQ(num_responses, server_samples->GetCount(0));
146 EXPECT_EQ(num_mps, server_samples->GetCount(1));
147 EXPECT_EQ(num_ngx, server_samples->GetCount(2));
148 EXPECT_EQ(num_pss, server_samples->GetCount(3));
149 EXPECT_EQ(num_other, server_samples->GetCount(4));
150 EXPECT_EQ(num_bucket_1, version_samples->GetCount(1));
151 EXPECT_EQ(num_bucket_30, version_samples->GetCount(30));
152 EXPECT_EQ(num_bucket_33, version_samples->GetCount(33));
153
154 // Not a http/https URL => not counted at all.
155 GURL data_url("data:image/png;base64,yadda yadda==");
156 RecordModPagespeedMetrics(content::RESOURCE_TYPE_MAIN_FRAME, data_url,
157 headers.get());
158 server_samples = server_histogram->SnapshotSamples();
159 version_samples = version_histogram->SnapshotSamples();
160 EXPECT_EQ(num_responses, server_samples->GetCount(0));
161 EXPECT_EQ(num_mps, server_samples->GetCount(1));
162 EXPECT_EQ(num_ngx, server_samples->GetCount(2));
163 EXPECT_EQ(num_pss, server_samples->GetCount(3));
164 EXPECT_EQ(num_other, server_samples->GetCount(4));
165 EXPECT_EQ(num_bucket_1, version_samples->GetCount(1));
166 EXPECT_EQ(num_bucket_30, version_samples->GetCount(30));
167 EXPECT_EQ(num_bucket_33, version_samples->GetCount(33));
168
169 headers->RemoveHeader("X-Page-Speed");
170 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698