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

Side by Side Diff: components/data_use_measurement/content/data_use_measurement_unittest.cc

Issue 2399783003: Split the data use into foreground, background and unknown (Closed)
Patch Set: Addressed kundaji comments Created 4 years, 2 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/data_use_measurement/content/data_use_measurement.h" 5 #include "components/data_use_measurement/content/data_use_measurement.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 20 matching lines...) Expand all
31 public: 31 public:
32 DataUseMeasurementTest() 32 DataUseMeasurementTest()
33 : data_use_measurement_( 33 : data_use_measurement_(
34 base::Bind(&DataUseMeasurementTest::FakeDataUseforwarder, 34 base::Bind(&DataUseMeasurementTest::FakeDataUseforwarder,
35 base::Unretained(this))) { 35 base::Unretained(this))) {
36 // During the test it is expected to not have cellular connection. 36 // During the test it is expected to not have cellular connection.
37 DCHECK(!net::NetworkChangeNotifier::IsConnectionCellular( 37 DCHECK(!net::NetworkChangeNotifier::IsConnectionCellular(
38 net::NetworkChangeNotifier::GetConnectionType())); 38 net::NetworkChangeNotifier::GetConnectionType()));
39 } 39 }
40 40
41 // Sends a request and reports data use attaching either user data or service 41 // Creates a test request.
42 // data based on |is_user_request|. 42 std::unique_ptr<net::URLRequest> CreateTestRequest(bool is_user_request) {
43 void SendRequest(bool is_user_request) {
44 net::TestDelegate test_delegate; 43 net::TestDelegate test_delegate;
45 InitializeContext(); 44 InitializeContext();
46 net::MockRead reads[] = {net::MockRead("HTTP/1.1 200 OK\r\n" 45 net::MockRead reads[] = {net::MockRead("HTTP/1.1 200 OK\r\n"
47 "Content-Length: 12\r\n\r\n"), 46 "Content-Length: 12\r\n\r\n"),
48 net::MockRead("Test Content")}; 47 net::MockRead("Test Content")};
49 net::StaticSocketDataProvider socket_data(reads, arraysize(reads), nullptr, 48 net::StaticSocketDataProvider socket_data(reads, arraysize(reads), nullptr,
50 0); 49 0);
51 socket_factory_->AddSocketDataProvider(&socket_data); 50 socket_factory_->AddSocketDataProvider(&socket_data);
52 51
53 std::unique_ptr<net::URLRequest> request(context_->CreateRequest( 52 std::unique_ptr<net::URLRequest> request(context_->CreateRequest(
54 GURL("http://foo.com"), net::DEFAULT_PRIORITY, &test_delegate)); 53 GURL("http://foo.com"), net::DEFAULT_PRIORITY, &test_delegate));
55 if (is_user_request) { 54 if (is_user_request) {
56 request->SetUserData( 55 request->SetUserData(
57 data_use_measurement::DataUseUserData::kUserDataKey, 56 data_use_measurement::DataUseUserData::kUserDataKey,
58 new data_use_measurement::DataUseUserData( 57 new data_use_measurement::DataUseUserData(
59 data_use_measurement::DataUseUserData::SUGGESTIONS, 58 data_use_measurement::DataUseUserData::SUGGESTIONS,
60 data_use_measurement_.CurrentAppState())); 59 data_use_measurement_.CurrentAppState()));
61 } else { 60 } else {
62 content::ResourceRequestInfo::AllocateForTesting( 61 content::ResourceRequestInfo::AllocateForTesting(
63 request.get(), content::RESOURCE_TYPE_MAIN_FRAME, nullptr, -2, -2, -2, 62 request.get(), content::RESOURCE_TYPE_MAIN_FRAME, nullptr, -2, -2, -2,
64 true, false, true, true, false); 63 true, false, true, true, false);
65 } 64 }
66 65
67 request->Start(); 66 request->Start();
68 base::RunLoop().RunUntilIdle(); 67 base::RunLoop().RunUntilIdle();
68 return request;
69 }
69 70
71 // Sends a request and reports data use attaching either user data or service
72 // data based on |is_user_request|.
73 void SendRequest(bool is_user_request) {
74 std::unique_ptr<net::URLRequest> request =
75 CreateTestRequest(is_user_request);
76 data_use_measurement_.OnBeforeURLRequest(request.get());
77 data_use_measurement_.OnNetworkBytesReceived(*request, 1000);
78 data_use_measurement_.OnNetworkBytesSent(*request, 100);
70 data_use_measurement_.OnCompleted(*request, true); 79 data_use_measurement_.OnCompleted(*request, true);
71 } 80 }
72 81
73 // This function makes a user request and confirms that its effect is 82 // This function makes a user request and confirms that its effect is
74 // reflected in proper histograms. 83 // reflected in proper histograms.
75 void TestForAUserRequest(const std::string& target_dimension) { 84 void TestForAUserRequest(const std::string& target_dimension) {
76 base::HistogramTester histogram_tester; 85 base::HistogramTester histogram_tester;
77 SendRequest(true); 86 SendRequest(true);
78 histogram_tester.ExpectTotalCount("DataUse.TrafficSize.System.Downstream." + 87 histogram_tester.ExpectTotalCount("DataUse.TrafficSize.System.Downstream." +
79 target_dimension + kConnectionType, 88 target_dimension + kConnectionType,
(...skipping 23 matching lines...) Expand all
103 histogram_tester.ExpectTotalCount( 112 histogram_tester.ExpectTotalCount(
104 "DataUse.MessageSize.AllServices.Downstream." + target_dimension + 113 "DataUse.MessageSize.AllServices.Downstream." + target_dimension +
105 kConnectionType, 114 kConnectionType,
106 0); 115 0);
107 } 116 }
108 117
109 DataUseMeasurement* data_use_measurement() { return &data_use_measurement_; } 118 DataUseMeasurement* data_use_measurement() { return &data_use_measurement_; }
110 119
111 bool IsDataUseForwarderCalled() { return is_data_use_forwarder_called_; } 120 bool IsDataUseForwarderCalled() { return is_data_use_forwarder_called_; }
112 121
113 private: 122 protected:
114 void InitializeContext() { 123 void InitializeContext() {
115 context_.reset(new net::TestURLRequestContext(true)); 124 context_.reset(new net::TestURLRequestContext(true));
116 socket_factory_.reset(new net::MockClientSocketFactory()); 125 socket_factory_.reset(new net::MockClientSocketFactory());
117 context_->set_client_socket_factory(socket_factory_.get()); 126 context_->set_client_socket_factory(socket_factory_.get());
118 context_->Init(); 127 context_->Init();
119 } 128 }
120 129
121 void FakeDataUseforwarder(const std::string& service_name, 130 void FakeDataUseforwarder(const std::string& service_name,
122 int message_size, 131 int message_size,
123 bool is_celllular) { 132 bool is_celllular) {
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 TestForAUserRequest("Background."); 168 TestForAUserRequest("Background.");
160 } 169 }
161 #endif 170 #endif
162 171
163 TEST_F(DataUseMeasurementTest, DataUseForwarderIsCalled) { 172 TEST_F(DataUseMeasurementTest, DataUseForwarderIsCalled) {
164 EXPECT_FALSE(IsDataUseForwarderCalled()); 173 EXPECT_FALSE(IsDataUseForwarderCalled());
165 SendRequest(true); 174 SendRequest(true);
166 EXPECT_TRUE(IsDataUseForwarderCalled()); 175 EXPECT_TRUE(IsDataUseForwarderCalled());
167 } 176 }
168 177
178 #if defined(OS_ANDROID)
179 TEST_F(DataUseMeasurementTest, AppStateUnknown) {
180 base::HistogramTester histogram_tester;
181 std::unique_ptr<net::URLRequest> request = CreateTestRequest(false);
182 data_use_measurement_.OnBeforeURLRequest(request.get());
183
184 {
185 base::HistogramTester histogram_tester;
186 data_use_measurement()->OnApplicationStateChangeForTesting(
187 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES);
188 data_use_measurement_.OnNetworkBytesSent(*request, 100);
189 data_use_measurement_.OnNetworkBytesReceived(*request, 1000);
190 histogram_tester.ExpectTotalCount(
191 "DataUse.TrafficSize.User.Downstream.Foreground." + kConnectionType, 1);
192 histogram_tester.ExpectTotalCount(
193 "DataUse.TrafficSize.User.Upstream.Foreground." + kConnectionType, 1);
194 }
195
196 {
197 base::HistogramTester histogram_tester;
198 data_use_measurement()->OnApplicationStateChangeForTesting(
199 base::android::APPLICATION_STATE_HAS_STOPPED_ACTIVITIES);
200 data_use_measurement_.OnNetworkBytesReceived(*request, 1000);
201 histogram_tester.ExpectTotalCount(
202 "DataUse.TrafficSize.User.Downstream.Unknown." + kConnectionType, 1);
203 }
204
205 {
206 base::HistogramTester histogram_tester;
207 data_use_measurement()->OnApplicationStateChangeForTesting(
208 base::android::APPLICATION_STATE_HAS_STOPPED_ACTIVITIES);
209 data_use_measurement_.OnNetworkBytesReceived(*request, 1000);
210 histogram_tester.ExpectTotalCount(
211 "DataUse.TrafficSize.User.Downstream.Background." + kConnectionType, 1);
212 }
213 }
214 #endif
215
169 } // namespace data_use_measurement 216 } // namespace data_use_measurement
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698