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

Side by Side Diff: chrome/installer/gcapi/gcapi_omaha_experiment_test.cc

Issue 23579003: GCAPI should append to the existing experiment_labels instead of clobbering them. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review Created 7 years, 1 month 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 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/installer/gcapi/gcapi.h"
6 #include "chrome/installer/gcapi/gcapi_omaha_experiment.h"
Alexei Svitkine (slow) 2013/11/05 23:05:23 Put this as the first include, followed by a blank
gab 2013/11/06 16:39:10 Done.
7 #include "chrome/installer/gcapi/gcapi_test_registry_overrider.h"
8 #include "chrome/installer/util/google_update_constants.h"
9 #include "chrome/installer/util/google_update_settings.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace {
13
14 const wchar_t kBrand[] = L"ABCD";
15 const uint16 kUserLevel = GCAPI_INVOKED_STANDARD_SHELL;
16
17 const wchar_t kSomeExperiments[] = L"myexp=1|Aug 2;yourexp=2|Sep 5";
18 const wchar_t kSomeOtherExperiments[] = L"anotherexp=joe|Jun 7 2008";
19 const wchar_t kSomeMoreExperiments[] = L"moreexp=foo|Jul 31 1999";
20
21 class GCAPIOmahaExperimentTest : public ::testing::Test {
22 protected:
23 GCAPIOmahaExperimentTest()
24 : brand_(kBrand),
25 reactivation_label_(gcapi_internals::GetGCAPIExperimentLabel(
26 kBrand, gcapi_internals::kReactivationLabel)),
27 relaunch_label_(gcapi_internals::GetGCAPIExperimentLabel(
28 kBrand, gcapi_internals::kRelaunchLabel)) {
29 }
30
31 void VerifyExperimentLabels(const string16& expected_labels) {
32 string16 actual_labels;
33 EXPECT_TRUE(GoogleUpdateSettings::ReadExperimentLabels(false,
34 &actual_labels));
35 EXPECT_EQ(expected_labels, actual_labels);
36 }
37
38 string16 brand_;
39 string16 reactivation_label_;
40 string16 relaunch_label_;
41
42 const GCAPITestRegistryOverrider gcapi_test_registry_overrider_;
43 };
44
45 TEST_F(GCAPIOmahaExperimentTest, SetReactivationLabelFromEmptyExperiments) {
46 ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
47 VerifyExperimentLabels(reactivation_label_);
48 }
49
50 // Test the relaunch label once; all other tests go more in depth, but since
51 // both labels use the same logic underneath there is no need to test both in
52 // depth.
53 TEST_F(GCAPIOmahaExperimentTest, SetRelaunchLabelFromEmptyExperiments) {
54 ASSERT_TRUE(SetRelaunchExperimentLabels(kBrand, kUserLevel));
55 VerifyExperimentLabels(relaunch_label_);
56 }
57
58 TEST_F(GCAPIOmahaExperimentTest, SetReactivationLabelWithExistingExperiments) {
59 GoogleUpdateSettings::SetExperimentLabels(false, kSomeExperiments);
60
61 ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
62
63 string16 expected_labels(kSomeExperiments);
64 expected_labels.append(google_update::kExperimentLabelSep);
65 expected_labels.append(reactivation_label_);
66 VerifyExperimentLabels(expected_labels);
67 }
68
69 TEST_F(GCAPIOmahaExperimentTest,
70 SetReactivationLabelWithExistingIdenticalExperiment) {
71 string16 previous_labels(kSomeExperiments);
72 previous_labels.append(google_update::kExperimentLabelSep);
73 previous_labels.append(reactivation_label_);
74 previous_labels.append(google_update::kExperimentLabelSep);
75 previous_labels.append(kSomeOtherExperiments);
76 GoogleUpdateSettings::SetExperimentLabels(false, previous_labels);
77
78 ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
79
80 string16 expected_labels(kSomeExperiments);
81 expected_labels.append(google_update::kExperimentLabelSep);
82 expected_labels.append(kSomeOtherExperiments);
83 expected_labels.append(google_update::kExperimentLabelSep);
84 expected_labels.append(reactivation_label_);
85 VerifyExperimentLabels(expected_labels);
86 }
87
88 TEST_F(GCAPIOmahaExperimentTest,
89 SetReactivationLabelWithExistingIdenticalAtBeginning) {
90 string16 previous_labels(reactivation_label_);
91 previous_labels.append(google_update::kExperimentLabelSep);
92 previous_labels.append(kSomeExperiments);
93 GoogleUpdateSettings::SetExperimentLabels(false, previous_labels);
94
95 ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
96
97 string16 expected_labels(kSomeExperiments);
98 expected_labels.append(google_update::kExperimentLabelSep);
99 expected_labels.append(reactivation_label_);
100 VerifyExperimentLabels(expected_labels);
101 }
102
103 TEST_F(GCAPIOmahaExperimentTest,
104 SetReactivationLabelWithFakeMatchInAnExperiment) {
105 string16 previous_labels(kSomeExperiments);
106 previous_labels.append(google_update::kExperimentLabelSep);
107 previous_labels.append(L"blah_");
108 // Shouldn't match deletion criteria.
109 previous_labels.append(reactivation_label_);
110 previous_labels.append(google_update::kExperimentLabelSep);
111 previous_labels.append(kSomeOtherExperiments);
112 previous_labels.append(google_update::kExperimentLabelSep);
113 // Should match the deletion criteria.
114 previous_labels.append(reactivation_label_);
115 previous_labels.append(google_update::kExperimentLabelSep);
116 previous_labels.append(kSomeMoreExperiments);
117 GoogleUpdateSettings::SetExperimentLabels(false, previous_labels);
118
119 ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
120
121 string16 expected_labels(kSomeExperiments);
122 expected_labels.append(google_update::kExperimentLabelSep);
123 expected_labels.append(L"blah_");
124 expected_labels.append(reactivation_label_);
125 expected_labels.append(google_update::kExperimentLabelSep);
126 expected_labels.append(kSomeOtherExperiments);
127 expected_labels.append(google_update::kExperimentLabelSep);
128 expected_labels.append(kSomeMoreExperiments);
129 expected_labels.append(google_update::kExperimentLabelSep);
130 expected_labels.append(reactivation_label_);
131 VerifyExperimentLabels(expected_labels);
132 }
133
134 TEST_F(GCAPIOmahaExperimentTest,
135 SetReactivationLabelWithFakeMatchInAnExperimentAndNoRealMatch) {
136 string16 previous_labels(kSomeExperiments);
137 previous_labels.append(google_update::kExperimentLabelSep);
138 previous_labels.append(L"blah_");
139 // Shouldn't match deletion criteria.
140 previous_labels.append(reactivation_label_);
141 previous_labels.append(google_update::kExperimentLabelSep);
142 previous_labels.append(kSomeOtherExperiments);
143 GoogleUpdateSettings::SetExperimentLabels(false, previous_labels);
144
145 ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
146
147 string16 expected_labels(kSomeExperiments);
148 expected_labels.append(google_update::kExperimentLabelSep);
149 expected_labels.append(L"blah_");
150 expected_labels.append(reactivation_label_);
151 expected_labels.append(google_update::kExperimentLabelSep);
152 expected_labels.append(kSomeOtherExperiments);
153 expected_labels.append(google_update::kExperimentLabelSep);
154 expected_labels.append(reactivation_label_);
155 VerifyExperimentLabels(expected_labels);
156 }
157
158 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698