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

Side by Side Diff: chrome/browser/engagement/site_engagement_service_unittest.cc

Issue 2163233002: Allow rounding errors in Site Engagement tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
« no previous file with comments | « chrome/browser/engagement/site_engagement_score_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "chrome/browser/engagement/site_engagement_service.h" 5 #include "chrome/browser/engagement/site_engagement_service.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/files/scoped_temp_dir.h" 9 #include "base/files/scoped_temp_dir.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 24 matching lines...) Expand all
35 #include "content/public/test/web_contents_tester.h" 35 #include "content/public/test/web_contents_tester.h"
36 #include "testing/gtest/include/gtest/gtest.h" 36 #include "testing/gtest/include/gtest/gtest.h"
37 37
38 namespace { 38 namespace {
39 39
40 base::FilePath g_temp_history_dir; 40 base::FilePath g_temp_history_dir;
41 41
42 const int kMoreAccumulationsThanNeededToMaxDailyEngagement = 40; 42 const int kMoreAccumulationsThanNeededToMaxDailyEngagement = 40;
43 const int kMoreDaysThanNeededToMaxTotalEngagement = 40; 43 const int kMoreDaysThanNeededToMaxTotalEngagement = 40;
44 const int kMorePeriodsThanNeededToDecayMaxScore = 40; 44 const int kMorePeriodsThanNeededToDecayMaxScore = 40;
45 const double kMaxRoundingDeviation = 0.0001;
45 46
46 // Waits until a change is observed in site engagement content settings. 47 // Waits until a change is observed in site engagement content settings.
47 class SiteEngagementChangeWaiter : public content_settings::Observer { 48 class SiteEngagementChangeWaiter : public content_settings::Observer {
48 public: 49 public:
49 explicit SiteEngagementChangeWaiter(Profile* profile) : profile_(profile) { 50 explicit SiteEngagementChangeWaiter(Profile* profile) : profile_(profile) {
50 HostContentSettingsMapFactory::GetForProfile(profile)->AddObserver(this); 51 HostContentSettingsMapFactory::GetForProfile(profile)->AddObserver(this);
51 } 52 }
52 ~SiteEngagementChangeWaiter() override { 53 ~SiteEngagementChangeWaiter() override {
53 HostContentSettingsMapFactory::GetForProfile(profile_)->RemoveObserver( 54 HostContentSettingsMapFactory::GetForProfile(profile_)->RemoveObserver(
54 this); 55 this);
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 content::WebContentsTester::For(web_contents()) 176 content::WebContentsTester::For(web_contents())
176 ->TestDidNavigate(web_contents()->GetMainFrame(), 1, pending_id, true, 177 ->TestDidNavigate(web_contents()->GetMainFrame(), 1, pending_id, true,
177 url, transition); 178 url, transition);
178 EXPECT_EQ(prev_score, service->GetScore(url)); 179 EXPECT_EQ(prev_score, service->GetScore(url));
179 } 180 }
180 181
181 void SetParamValue(SiteEngagementScore::Variation variation, double value) { 182 void SetParamValue(SiteEngagementScore::Variation variation, double value) {
182 SiteEngagementScore::GetParamValues()[variation].second = value; 183 SiteEngagementScore::GetParamValues()[variation].second = value;
183 } 184 }
184 185
186 void AssertInRange(double expected, double actual) {
187 EXPECT_NEAR(expected, actual, kMaxRoundingDeviation);
188 }
189
185 private: 190 private:
186 base::ScopedTempDir temp_dir_; 191 base::ScopedTempDir temp_dir_;
187 }; 192 };
188 193
189 TEST_F(SiteEngagementServiceTest, GetMedianEngagement) { 194 TEST_F(SiteEngagementServiceTest, GetMedianEngagement) {
190 SiteEngagementService* service = SiteEngagementService::Get(profile()); 195 SiteEngagementService* service = SiteEngagementService::Get(profile());
191 ASSERT_TRUE(service); 196 ASSERT_TRUE(service);
192 197
193 GURL url1("http://www.google.com/"); 198 GURL url1("http://www.google.com/");
194 GURL url2("https://www.google.com/"); 199 GURL url2("https://www.google.com/");
(...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 GURL url1("https://www.google.com/"); 954 GURL url1("https://www.google.com/");
950 GURL url2("https://www.somewhereelse.com/"); 955 GURL url2("https://www.somewhereelse.com/");
951 956
952 service->AddPoints(url1, 1.0); 957 service->AddPoints(url1, 1.0);
953 service->AddPoints(url2, 1.2); 958 service->AddPoints(url2, 1.2);
954 959
955 current_day += base::TimeDelta::FromDays(7); 960 current_day += base::TimeDelta::FromDays(7);
956 clock->SetNow(current_day); 961 clock->SetNow(current_day);
957 std::map<GURL, double> score_map = service->GetScoreMap(); 962 std::map<GURL, double> score_map = service->GetScoreMap();
958 EXPECT_EQ(2u, score_map.size()); 963 EXPECT_EQ(2u, score_map.size());
959 EXPECT_EQ(0.5, service->GetScore(url1)); 964 AssertInRange(0.5, service->GetScore(url1));
960 EXPECT_EQ(0.6, service->GetScore(url2)); 965 AssertInRange(0.6, service->GetScore(url2));
961 966
962 service->CleanupEngagementScores(false); 967 service->CleanupEngagementScores(false);
963 score_map = service->GetScoreMap(); 968 score_map = service->GetScoreMap();
964 EXPECT_EQ(1u, score_map.size()); 969 EXPECT_EQ(1u, score_map.size());
965 EXPECT_EQ(0, service->GetScore(url1)); 970 EXPECT_EQ(0, service->GetScore(url1));
966 EXPECT_EQ(0.6, service->GetScore(url2)); 971 AssertInRange(0.6, service->GetScore(url2));
967 } 972 }
968 973
969 TEST_F(SiteEngagementServiceTest, NavigationAccumulation) { 974 TEST_F(SiteEngagementServiceTest, NavigationAccumulation) {
970 GURL url("https://www.google.com/"); 975 GURL url("https://www.google.com/");
971 976
972 SiteEngagementService* service = SiteEngagementService::Get(profile()); 977 SiteEngagementService* service = SiteEngagementService::Get(profile());
973 ASSERT_TRUE(service); 978 ASSERT_TRUE(service);
974 979
975 // Create the helper manually since it isn't present when a tab isn't created. 980 // Create the helper manually since it isn't present when a tab isn't created.
976 SiteEngagementService::Helper::CreateForWebContents(web_contents()); 981 SiteEngagementService::Helper::CreateForWebContents(web_contents());
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1058 history->AddPage(origin2a, yesterday_afternoon, history::SOURCE_BROWSED); 1063 history->AddPage(origin2a, yesterday_afternoon, history::SOURCE_BROWSED);
1059 engagement->AddPoints(origin2, 5.0); 1064 engagement->AddPoints(origin2, 5.0);
1060 1065
1061 history->AddPage(origin3, today, history::SOURCE_BROWSED); 1066 history->AddPage(origin3, today, history::SOURCE_BROWSED);
1062 engagement->AddPoints(origin3, 5.0); 1067 engagement->AddPoints(origin3, 5.0);
1063 1068
1064 history->AddPage(origin4, yesterday_week, history::SOURCE_BROWSED); 1069 history->AddPage(origin4, yesterday_week, history::SOURCE_BROWSED);
1065 history->AddPage(origin4a, yesterday_afternoon, history::SOURCE_BROWSED); 1070 history->AddPage(origin4a, yesterday_afternoon, history::SOURCE_BROWSED);
1066 engagement->AddPoints(origin4, 5.0); 1071 engagement->AddPoints(origin4, 5.0);
1067 1072
1068 EXPECT_EQ(3.0, engagement->GetScore(origin1)); 1073 AssertInRange(3.0, engagement->GetScore(origin1));
1069 EXPECT_EQ(5.0, engagement->GetScore(origin2)); 1074 AssertInRange(5.0, engagement->GetScore(origin2));
1070 EXPECT_EQ(5.0, engagement->GetScore(origin3)); 1075 AssertInRange(5.0, engagement->GetScore(origin3));
1071 EXPECT_EQ(5.0, engagement->GetScore(origin4)); 1076 AssertInRange(5.0, engagement->GetScore(origin4));
1072 1077
1073 { 1078 {
1074 SiteEngagementChangeWaiter waiter(profile()); 1079 SiteEngagementChangeWaiter waiter(profile());
1075 1080
1076 base::CancelableTaskTracker task_tracker; 1081 base::CancelableTaskTracker task_tracker;
1077 // Expire origin1, origin2, origin2a, and origin4's most recent visit. 1082 // Expire origin1, origin2, origin2a, and origin4's most recent visit.
1078 history->ExpireHistoryBetween(std::set<GURL>(), yesterday, today, 1083 history->ExpireHistoryBetween(std::set<GURL>(), yesterday, today,
1079 base::Bind(&base::DoNothing), &task_tracker); 1084 base::Bind(&base::DoNothing), &task_tracker);
1080 waiter.Wait(); 1085 waiter.Wait();
1081 1086
1082 // origin2 is cleaned up because all its urls are deleted. origin1a and 1087 // origin2 is cleaned up because all its urls are deleted. origin1a and
1083 // origin1b are still in history, but 33% of urls have been deleted, thus 1088 // origin1b are still in history, but 33% of urls have been deleted, thus
1084 // cutting origin1's score by 1/3. origin3 is untouched. origin4 has 1 URL 1089 // cutting origin1's score by 1/3. origin3 is untouched. origin4 has 1 URL
1085 // deleted and 1 remaining, but its most recent visit is more than 1 week in 1090 // deleted and 1 remaining, but its most recent visit is more than 1 week in
1086 // the past. Ensure that its scored is halved, and not decayed further. 1091 // the past. Ensure that its scored is halved, and not decayed further.
1087 EXPECT_EQ(2, engagement->GetScore(origin1)); 1092 AssertInRange(2, engagement->GetScore(origin1));
1088 EXPECT_EQ(0, engagement->GetScore(origin2)); 1093 EXPECT_EQ(0, engagement->GetScore(origin2));
1089 EXPECT_EQ(5.0, engagement->GetScore(origin3)); 1094 AssertInRange(5.0, engagement->GetScore(origin3));
1090 EXPECT_EQ(2.5, engagement->GetScore(origin4)); 1095 AssertInRange(2.5, engagement->GetScore(origin4));
1091 EXPECT_EQ(9.5, engagement->GetTotalEngagementPoints()); 1096 AssertInRange(9.5, engagement->GetTotalEngagementPoints());
1092 } 1097 }
1093 1098
1094 { 1099 {
1095 SiteEngagementChangeWaiter waiter(profile()); 1100 SiteEngagementChangeWaiter waiter(profile());
1096 1101
1097 // Expire origin1a. 1102 // Expire origin1a.
1098 std::vector<history::ExpireHistoryArgs> expire_list; 1103 std::vector<history::ExpireHistoryArgs> expire_list;
1099 history::ExpireHistoryArgs args; 1104 history::ExpireHistoryArgs args;
1100 args.urls.insert(origin1a); 1105 args.urls.insert(origin1a);
1101 args.SetTimeRangeForOneDay(yesterday_week); 1106 args.SetTimeRangeForOneDay(yesterday_week);
1102 expire_list.push_back(args); 1107 expire_list.push_back(args);
1103 1108
1104 base::CancelableTaskTracker task_tracker; 1109 base::CancelableTaskTracker task_tracker;
1105 history->ExpireHistory(expire_list, base::Bind(&base::DoNothing), 1110 history->ExpireHistory(expire_list, base::Bind(&base::DoNothing),
1106 &task_tracker); 1111 &task_tracker);
1107 waiter.Wait(); 1112 waiter.Wait();
1108 1113
1109 // origin1's score should be halved again. origin3 and origin4 remain 1114 // origin1's score should be halved again. origin3 and origin4 remain
1110 // untouched. 1115 // untouched.
1111 EXPECT_EQ(1, engagement->GetScore(origin1)); 1116 AssertInRange(1, engagement->GetScore(origin1));
1112 EXPECT_EQ(0, engagement->GetScore(origin2)); 1117 EXPECT_EQ(0, engagement->GetScore(origin2));
1113 EXPECT_EQ(5.0, engagement->GetScore(origin3)); 1118 AssertInRange(5.0, engagement->GetScore(origin3));
1114 EXPECT_EQ(2.5, engagement->GetScore(origin4)); 1119 AssertInRange(2.5, engagement->GetScore(origin4));
1115 EXPECT_EQ(8.5, engagement->GetTotalEngagementPoints()); 1120 AssertInRange(8.5, engagement->GetTotalEngagementPoints());
1116 } 1121 }
1117 1122
1118 { 1123 {
1119 SiteEngagementChangeWaiter waiter(profile()); 1124 SiteEngagementChangeWaiter waiter(profile());
1120 1125
1121 // Expire origin1b. 1126 // Expire origin1b.
1122 std::vector<history::ExpireHistoryArgs> expire_list; 1127 std::vector<history::ExpireHistoryArgs> expire_list;
1123 history::ExpireHistoryArgs args; 1128 history::ExpireHistoryArgs args;
1124 args.urls.insert(origin1b); 1129 args.urls.insert(origin1b);
1125 args.SetTimeRangeForOneDay(today); 1130 args.SetTimeRangeForOneDay(today);
1126 expire_list.push_back(args); 1131 expire_list.push_back(args);
1127 1132
1128 base::CancelableTaskTracker task_tracker; 1133 base::CancelableTaskTracker task_tracker;
1129 history->ExpireHistory(expire_list, base::Bind(&base::DoNothing), 1134 history->ExpireHistory(expire_list, base::Bind(&base::DoNothing),
1130 &task_tracker); 1135 &task_tracker);
1131 waiter.Wait(); 1136 waiter.Wait();
1132 1137
1133 // origin1 should be removed. origin3 and origin4 remain untouched. 1138 // origin1 should be removed. origin3 and origin4 remain untouched.
1134 EXPECT_EQ(0, engagement->GetScore(origin1)); 1139 EXPECT_EQ(0, engagement->GetScore(origin1));
1135 EXPECT_EQ(0, engagement->GetScore(origin2)); 1140 EXPECT_EQ(0, engagement->GetScore(origin2));
1136 EXPECT_EQ(5.0, engagement->GetScore(origin3)); 1141 AssertInRange(5.0, engagement->GetScore(origin3));
1137 EXPECT_EQ(2.5, engagement->GetScore(origin4)); 1142 AssertInRange(2.5, engagement->GetScore(origin4));
1138 EXPECT_EQ(7.5, engagement->GetTotalEngagementPoints()); 1143 AssertInRange(7.5, engagement->GetTotalEngagementPoints());
1139 } 1144 }
1140 } 1145 }
1141 1146
1142 TEST_F(SiteEngagementServiceTest, EngagementLevel) { 1147 TEST_F(SiteEngagementServiceTest, EngagementLevel) {
1143 static_assert(SiteEngagementService::ENGAGEMENT_LEVEL_NONE != 1148 static_assert(SiteEngagementService::ENGAGEMENT_LEVEL_NONE !=
1144 SiteEngagementService::ENGAGEMENT_LEVEL_LOW, 1149 SiteEngagementService::ENGAGEMENT_LEVEL_LOW,
1145 "enum values should not be equal"); 1150 "enum values should not be equal");
1146 static_assert(SiteEngagementService::ENGAGEMENT_LEVEL_LOW != 1151 static_assert(SiteEngagementService::ENGAGEMENT_LEVEL_LOW !=
1147 SiteEngagementService::ENGAGEMENT_LEVEL_MEDIUM, 1152 SiteEngagementService::ENGAGEMENT_LEVEL_MEDIUM,
1148 "enum values should not be equal"); 1153 "enum values should not be equal");
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
1458 base::Time later_in_day = current_day + base::TimeDelta::FromSeconds(30); 1463 base::Time later_in_day = current_day + base::TimeDelta::FromSeconds(30);
1459 clock->SetNow(later_in_day); 1464 clock->SetNow(later_in_day);
1460 service->AddPoints(origin, 3); 1465 service->AddPoints(origin, 3);
1461 1466
1462 last_engagement_time = base::Time::FromInternalValue( 1467 last_engagement_time = base::Time::FromInternalValue(
1463 profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime)); 1468 profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime));
1464 1469
1465 EXPECT_EQ(later_in_day, last_engagement_time); 1470 EXPECT_EQ(later_in_day, last_engagement_time);
1466 EXPECT_EQ(later_in_day, service->GetLastEngagementTime()); 1471 EXPECT_EQ(later_in_day, service->GetLastEngagementTime());
1467 } 1472 }
OLDNEW
« no previous file with comments | « chrome/browser/engagement/site_engagement_score_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698