Commit 887c3eae authored by ryansturm's avatar ryansturm Committed by Commit bot

Adding UMA to PreviewsDataSavings

This UMA measures savings, inflation, content length, etc.

BUG=615565

Review-Url: https://codereview.chromium.org/2256603005
Cr-Commit-Position: refs/heads/master@{#417572}
parent fac211fb
......@@ -27,6 +27,7 @@ source_set("unit_tests") {
deps = [
":previews",
"//base",
"//base/test:test_support",
"//components/data_reduction_proxy/core/common",
"//components/variations",
"//testing/gtest",
......
......@@ -26,8 +26,46 @@ void PreviewsDataSavings::RecordDataSavings(
int64_t original_size) {
DCHECK(thread_checker_.CalledOnValidThread());
data_savings_recorder_->UpdateDataSavings(fully_qualified_domain_name,
data_used, original_size);
// Only record savings when data saver is enabled.
if (!data_savings_recorder_->UpdateDataSavings(fully_qualified_domain_name,
data_used, original_size)) {
// Record metrics in KB for previews with data saver disabled.
UMA_HISTOGRAM_COUNTS("Previews.OriginalContentLength.DataSaverDisabled",
original_size >> 10);
UMA_HISTOGRAM_COUNTS("Previews.ContentLength.DataSaverDisabled",
data_used >> 10);
if (original_size >= data_used) {
UMA_HISTOGRAM_COUNTS("Previews.DataSavings.DataSaverDisabled",
(original_size - data_used) >> 10);
UMA_HISTOGRAM_PERCENTAGE(
"Previews.DataSavingsPercent.DataSaverDisabled",
(original_size - data_used) * 100 / original_size);
} else {
UMA_HISTOGRAM_COUNTS("Previews.DataInflation.DataSaverDisabled",
(data_used - original_size) >> 10);
UMA_HISTOGRAM_PERCENTAGE(
"Previews.DataInflationPercent.DataSaverDisabled",
(data_used - original_size) * 100 / data_used);
}
return;
}
// Record metrics in KB for previews with data saver enabled.
UMA_HISTOGRAM_COUNTS("Previews.OriginalContentLength.DataSaverEnabled",
original_size >> 10);
UMA_HISTOGRAM_COUNTS("Previews.ContentLength.DataSaverEnabled",
data_used >> 10);
if (original_size >= data_used) {
UMA_HISTOGRAM_COUNTS("Previews.DataSavings.DataSaverEnabled",
(original_size - data_used) >> 10);
UMA_HISTOGRAM_PERCENTAGE("Previews.DataSavingsPercent.DataSaverEnabled",
(original_size - data_used) * 100 / original_size);
} else {
UMA_HISTOGRAM_COUNTS("Previews.DataInflation.DataSaverEnabled",
(data_used - original_size) >> 10);
UMA_HISTOGRAM_PERCENTAGE("Previews.DataInflationPercent.DataSaverEnabled",
(data_used - original_size) * 100 / data_used);
}
}
} // namespace previews
......@@ -9,6 +9,7 @@
#include <memory>
#include <string>
#include "base/test/histogram_tester.h"
#include "components/data_reduction_proxy/core/common/data_savings_recorder.h"
#include "testing/gtest/include/gtest/gtest.h"
......@@ -69,7 +70,11 @@ class PreviewsDataSavingsTest : public testing::Test {
return test_data_savings_recorder_.get();
}
base::HistogramTester* histogram_tester() { return &histogram_tester_; }
private:
base::HistogramTester histogram_tester_;
std::unique_ptr<TestDataSavingsRecorder> test_data_savings_recorder_;
std::unique_ptr<PreviewsDataSavings> data_savings_;
};
......@@ -82,14 +87,13 @@ TEST_F(PreviewsDataSavingsTest, RecordDataSavings) {
EXPECT_EQ(0, test_data_savings_recorder()->data_used());
EXPECT_EQ(0, test_data_savings_recorder()->original_size());
test_data_savings_recorder()->set_data_saver_enabled(false);
data_savings()->RecordDataSavings(host, data_used, original_size);
EXPECT_EQ(0, test_data_savings_recorder()->data_used());
EXPECT_EQ(0, test_data_savings_recorder()->original_size());
EXPECT_EQ(std::string(), test_data_savings_recorder()->last_host());
test_data_savings_recorder()->set_data_saver_enabled(true);
test_data_savings_recorder()->set_data_saver_enabled(true);
data_savings()->RecordDataSavings(host, data_used, original_size);
EXPECT_EQ(data_used, test_data_savings_recorder()->data_used());
......@@ -97,4 +101,66 @@ TEST_F(PreviewsDataSavingsTest, RecordDataSavings) {
EXPECT_EQ(host, test_data_savings_recorder()->last_host());
}
TEST_F(PreviewsDataSavingsTest, RecordDataSavingsHistograms) {
int64_t twenty_kb = 20480;
int64_t twenty = twenty_kb >> 10;
int64_t ten_kb = 10240;
int64_t ten = ten_kb >> 10;
std::string host = "host";
test_data_savings_recorder()->set_data_saver_enabled(false);
data_savings()->RecordDataSavings(host, ten_kb, twenty_kb);
// The histograms record bytes in KB.
histogram_tester()->ExpectUniqueSample(
"Previews.OriginalContentLength.DataSaverDisabled", twenty, 1);
histogram_tester()->ExpectUniqueSample(
"Previews.ContentLength.DataSaverDisabled", ten, 1);
histogram_tester()->ExpectUniqueSample(
"Previews.DataSavings.DataSaverDisabled", twenty - ten, 1);
histogram_tester()->ExpectUniqueSample(
"Previews.DataSavingsPercent.DataSaverDisabled",
(twenty_kb - ten_kb) * 100 / twenty_kb, 1);
data_savings()->RecordDataSavings(host, twenty_kb, ten_kb);
// The histograms record bytes in KB.
histogram_tester()->ExpectBucketCount(
"Previews.OriginalContentLength.DataSaverDisabled", ten, 1);
histogram_tester()->ExpectBucketCount(
"Previews.ContentLength.DataSaverDisabled", twenty, 1);
histogram_tester()->ExpectUniqueSample(
"Previews.DataInflation.DataSaverDisabled", twenty - ten, 1);
histogram_tester()->ExpectUniqueSample(
"Previews.DataInflationPercent.DataSaverDisabled",
(twenty_kb - ten_kb) * 100 / twenty_kb, 1);
test_data_savings_recorder()->set_data_saver_enabled(true);
data_savings()->RecordDataSavings(host, ten_kb, twenty_kb);
// The histograms record bytes in KB.
histogram_tester()->ExpectUniqueSample(
"Previews.OriginalContentLength.DataSaverEnabled", twenty, 1);
histogram_tester()->ExpectUniqueSample(
"Previews.ContentLength.DataSaverEnabled", ten, 1);
histogram_tester()->ExpectUniqueSample(
"Previews.DataSavings.DataSaverEnabled", twenty - ten, 1);
histogram_tester()->ExpectUniqueSample(
"Previews.DataSavingsPercent.DataSaverEnabled",
(twenty_kb - ten_kb) * 100 / twenty_kb, 1);
data_savings()->RecordDataSavings(host, twenty_kb, ten_kb);
// The histograms record bytes in KB.
histogram_tester()->ExpectBucketCount(
"Previews.OriginalContentLength.DataSaverEnabled", ten, 1);
histogram_tester()->ExpectBucketCount(
"Previews.ContentLength.DataSaverEnabled", twenty, 1);
histogram_tester()->ExpectUniqueSample(
"Previews.DataInflation.DataSaverEnabled", twenty - ten, 1);
histogram_tester()->ExpectUniqueSample(
"Previews.DataInflationPercent.DataSaverEnabled",
(twenty_kb - ten_kb) * 100 / twenty_kb, 1);
}
} // namespace previews
......@@ -46141,6 +46141,56 @@ http://cs/file:chrome/histograms.xml - but prefer this file for new entries.
</summary>
</histogram>
<histogram name="Previews.ContentLength" units="KB">
<owner>ryansturm@chromium.org</owner>
<summary>
The actual data used for a page load using a preview optimization.
</summary>
</histogram>
<histogram name="Previews.DataInflation" units="KB">
<owner>ryansturm@chromium.org</owner>
<summary>
The estimated amount that the content was inflated for a page load using a
previews optimization. Recorded when a page load using a previews
optimization inflates the data used.
</summary>
</histogram>
<histogram name="Previews.DataInflationPercent" units="%">
<owner>ryansturm@chromium.org</owner>
<summary>
The estimated percent of data used that a page load would have otherwise
cost for a page load using a previews optimization. Recorded when a page
load using a previews optimization inflates the data used.
</summary>
</histogram>
<histogram name="Previews.DataSavings" units="KB">
<owner>ryansturm@chromium.org</owner>
<summary>
The estimated data savings for a page load using a previews optimization.
Recorded when a page load using a previews optimization reduces the data
used.
</summary>
</histogram>
<histogram name="Previews.DataSavingsPercent" units="%">
<owner>ryansturm@chromium.org</owner>
<summary>
The estimated percent of data savings for a page load using a previews
optimization. Recorded when a page load using a previews optimization
reduces the data used.
</summary>
</histogram>
<histogram name="Previews.OriginalContentLength" units="KB">
<owner>ryansturm@chromium.org</owner>
<summary>
The estimated content length of a page load using a preview optimization.
</summary>
</histogram>
<histogram name="PrinterService.PrinterServiceEvent"
enum="PrinterServiceEventType">
<owner>vitalybuka@chromium.org</owner>
......@@ -100087,6 +100137,17 @@ To add a new entry, add it with any value and run test to compute valid value.
name="DataReductionProxy.RequestCompletionErrorCodes.MainFrame"/>
</histogram_suffixes>
<histogram_suffixes name="DataSaverEnabled" separator=".">
<suffix name="DataSaverEnabled" label="Data Saver is enabled"/>
<suffix name="DataSaverDisabled" label="Data Saver is disabled"/>
<affected-histogram name="Previews.ContentLength"/>
<affected-histogram name="Previews.DataInflation"/>
<affected-histogram name="Previews.DataInflationPercent"/>
<affected-histogram name="Previews.DataSavings"/>
<affected-histogram name="Previews.DataSavingsPercent"/>
<affected-histogram name="Previews.OriginalContentLength"/>
</histogram_suffixes>
<histogram_suffixes name="DataUsageReportSubmissionBytes" separator=".">
<suffix name="Failed"
label="Platform external data use observer reported the submission as
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment