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

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

Issue 2851923002: Fix overflow in user traffic content type histogram (Closed)
Patch Set: change array to int16 and added test Created 3 years, 7 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/core/data_use_measurement.h" 5 #include "components/data_use_measurement/core/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 428 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 "DataUse.AppTabState.Upstream.AppBackground", 1); 439 "DataUse.AppTabState.Upstream.AppBackground", 1);
440 histogram_tester.ExpectTotalCount( 440 histogram_tester.ExpectTotalCount(
441 "DataUse.AppTabState.Downstream.AppBackground", 1); 441 "DataUse.AppTabState.Downstream.AppBackground", 1);
442 } 442 }
443 443
444 TEST_F(DataUseMeasurementTest, ContentType) { 444 TEST_F(DataUseMeasurementTest, ContentType) {
445 { 445 {
446 base::HistogramTester histogram_tester; 446 base::HistogramTester histogram_tester;
447 std::unique_ptr<net::URLRequest> request = CreateTestRequest(kUserRequest); 447 std::unique_ptr<net::URLRequest> request = CreateTestRequest(kUserRequest);
448 data_use_measurement_.OnBeforeURLRequest(request.get()); 448 data_use_measurement_.OnBeforeURLRequest(request.get());
449 data_use_measurement_.OnNetworkBytesReceived(*request, 1000); 449 data_use_measurement_.OnNetworkBytesReceived(*request, 10 * 1024);
450 histogram_tester.ExpectUniqueSample("DataUse.ContentType.UserTraffic", 450 histogram_tester.ExpectUniqueSample("DataUse.ContentType.UserTrafficKB",
451 DataUseUserData::OTHER, 1000); 451 DataUseUserData::OTHER, 10);
452 } 452 }
453 453
454 { 454 {
455 base::HistogramTester histogram_tester; 455 base::HistogramTester histogram_tester;
456 std::unique_ptr<net::URLRequest> request = 456 std::unique_ptr<net::URLRequest> request =
457 CreateTestRequest(kServiceRequest); 457 CreateTestRequest(kServiceRequest);
458 data_use_measurement_.OnBeforeURLRequest(request.get()); 458 data_use_measurement_.OnBeforeURLRequest(request.get());
459 data_use_measurement_.OnNetworkBytesReceived(*request, 1000); 459 data_use_measurement_.OnNetworkBytesReceived(*request, 1000);
460 histogram_tester.ExpectUniqueSample("DataUse.ContentType.Services", 460 histogram_tester.ExpectUniqueSample("DataUse.ContentType.Services",
461 DataUseUserData::OTHER, 1000); 461 DataUseUserData::OTHER, 1000);
462 } 462 }
463 463
464 // Video request in foreground. 464 // Video request in foreground.
465 { 465 {
466 base::HistogramTester histogram_tester; 466 base::HistogramTester histogram_tester;
467 std::unique_ptr<net::URLRequest> request = CreateTestRequest(kUserRequest); 467 std::unique_ptr<net::URLRequest> request = CreateTestRequest(kUserRequest);
468 468
469 ascriber_.SetTabVisibility(true); 469 ascriber_.SetTabVisibility(true);
470 url_request_classifier_->set_content_type(DataUseUserData::VIDEO); 470 url_request_classifier_->set_content_type(DataUseUserData::VIDEO);
471 data_use_measurement_.OnBeforeURLRequest(request.get()); 471 data_use_measurement_.OnBeforeURLRequest(request.get());
472 data_use_measurement_.OnHeadersReceived(request.get(), nullptr); 472 data_use_measurement_.OnHeadersReceived(request.get(), nullptr);
473 data_use_measurement_.OnNetworkBytesReceived(*request, 1000); 473 data_use_measurement_.OnNetworkBytesReceived(*request, 10 * 1024);
474 474
475 histogram_tester.ExpectUniqueSample("DataUse.ContentType.UserTraffic", 475 histogram_tester.ExpectUniqueSample("DataUse.ContentType.UserTrafficKB",
476 DataUseUserData::VIDEO, 1000); 476 DataUseUserData::VIDEO, 10);
477 } 477 }
478 478
479 // Audio request from background tab. 479 // Audio request from background tab.
480 { 480 {
481 base::HistogramTester histogram_tester; 481 base::HistogramTester histogram_tester;
482 std::unique_ptr<net::URLRequest> request = CreateTestRequest(kUserRequest); 482 std::unique_ptr<net::URLRequest> request = CreateTestRequest(kUserRequest);
483 ascriber_.SetTabVisibility(false); 483 ascriber_.SetTabVisibility(false);
484 url_request_classifier_->set_content_type(DataUseUserData::AUDIO); 484 url_request_classifier_->set_content_type(DataUseUserData::AUDIO);
485 data_use_measurement_.OnBeforeURLRequest(request.get()); 485 data_use_measurement_.OnBeforeURLRequest(request.get());
486 data_use_measurement_.OnHeadersReceived(request.get(), nullptr); 486 data_use_measurement_.OnHeadersReceived(request.get(), nullptr);
487 data_use_measurement_.OnNetworkBytesReceived(*request, 1000); 487 data_use_measurement_.OnNetworkBytesReceived(*request, 10 * 1024);
488 488
489 histogram_tester.ExpectUniqueSample("DataUse.ContentType.UserTraffic", 489 histogram_tester.ExpectUniqueSample("DataUse.ContentType.UserTrafficKB",
490 DataUseUserData::AUDIO_TABBACKGROUND, 490 DataUseUserData::AUDIO_TABBACKGROUND,
491 1000); 491 10);
492 } 492 }
493 493
494 // Video request from background app. 494 // Video request from background app.
495 { 495 {
496 base::HistogramTester histogram_tester; 496 base::HistogramTester histogram_tester;
497 std::unique_ptr<net::URLRequest> request = CreateTestRequest(kUserRequest); 497 std::unique_ptr<net::URLRequest> request = CreateTestRequest(kUserRequest);
498 url_request_classifier_->set_content_type(DataUseUserData::VIDEO); 498 url_request_classifier_->set_content_type(DataUseUserData::VIDEO);
499 data_use_measurement()->OnApplicationStateChangeForTesting( 499 data_use_measurement()->OnApplicationStateChangeForTesting(
500 base::android::APPLICATION_STATE_HAS_STOPPED_ACTIVITIES); 500 base::android::APPLICATION_STATE_HAS_STOPPED_ACTIVITIES);
501 ascriber_.SetTabVisibility(false); 501 ascriber_.SetTabVisibility(false);
502 data_use_measurement_.OnBeforeURLRequest(request.get()); 502 data_use_measurement_.OnBeforeURLRequest(request.get());
503 data_use_measurement_.OnHeadersReceived(request.get(), nullptr); 503 data_use_measurement_.OnHeadersReceived(request.get(), nullptr);
504 data_use_measurement_.OnNetworkBytesReceived(*request, 1000); 504 data_use_measurement_.OnNetworkBytesReceived(*request, 10 * 1024);
505 505
506 histogram_tester.ExpectUniqueSample("DataUse.ContentType.UserTraffic", 506 histogram_tester.ExpectUniqueSample("DataUse.ContentType.UserTrafficKB",
507 DataUseUserData::VIDEO_APPBACKGROUND, 507 DataUseUserData::VIDEO_APPBACKGROUND,
508 1000); 508 10);
509 } 509 }
510 } 510 }
511 511
512 TEST_F(DataUseMeasurementTest, ContentTypeInKB) {
513 base::HistogramTester histogram_tester;
514 std::unique_ptr<net::URLRequest> request = CreateTestRequest(kUserRequest);
515 url_request_classifier_->set_content_type(DataUseUserData::VIDEO);
516 data_use_measurement()->OnApplicationStateChangeForTesting(
517 base::android::APPLICATION_STATE_HAS_STOPPED_ACTIVITIES);
518 ascriber_.SetTabVisibility(false);
519 data_use_measurement_.OnBeforeURLRequest(request.get());
520 data_use_measurement_.OnHeadersReceived(request.get(), nullptr);
521 data_use_measurement_.OnNetworkBytesReceived(*request, 600);
522
523 // UserTrafficKB metric is not recorded for the first 600 bytes of data use.
524 histogram_tester.ExpectTotalCount("DataUse.ContentType.UserTrafficKB", 0);
525
526 data_use_measurement_.OnNetworkBytesReceived(*request, 600);
527
528 // UserTrafficKB recorded for 1KB.
529 histogram_tester.ExpectUniqueSample("DataUse.ContentType.UserTrafficKB",
530 DataUseUserData::VIDEO_APPBACKGROUND, 1);
531 }
532
512 #endif 533 #endif
513 534
514 } // namespace data_use_measurement 535 } // namespace data_use_measurement
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698