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

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: Move Windows only variations_util code to variations_util_win Created 7 years, 3 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 | 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"
7 #include "chrome/installer/gcapi/gcapi_registry_overriding_test.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 GCAPIRegistryOverridingTest {
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
43 TEST_F(GCAPIOmahaExperimentTest, SetReactivationLabelFromEmptyExperiments) {
44 ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
45 VerifyExperimentLabels(reactivation_label_);
46 }
47
48 // Test the relaunch label once; all other tests go more in depth, but since
49 // both labels use the same logic underneath there is no need to test both in
50 // depth.
51 TEST_F(GCAPIOmahaExperimentTest, SetRelaunchLabelFromEmptyExperiments) {
52 ASSERT_TRUE(SetRelaunchExperimentLabels(kBrand, kUserLevel));
53 VerifyExperimentLabels(relaunch_label_);
54 }
55
56 TEST_F(GCAPIOmahaExperimentTest, SetReactivationLabelWithExistingExperiments) {
57 GoogleUpdateSettings::SetExperimentLabels(false, kSomeExperiments);
58
59 ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
60
61 string16 expected_labels(kSomeExperiments);
62 expected_labels.append(google_update::kExperimentLabelSep);
63 expected_labels.append(reactivation_label_);
64 VerifyExperimentLabels(expected_labels);
65 }
66
67 TEST_F(GCAPIOmahaExperimentTest,
68 SetReactivationLabelWithExistingIdenticalExperiment) {
69 string16 previous_labels(kSomeExperiments);
70 previous_labels.append(google_update::kExperimentLabelSep);
71 previous_labels.append(reactivation_label_);
72 previous_labels.append(google_update::kExperimentLabelSep);
73 previous_labels.append(kSomeOtherExperiments);
74 GoogleUpdateSettings::SetExperimentLabels(false, previous_labels);
75
76 ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
77
78 string16 expected_labels(kSomeExperiments);
79 expected_labels.append(google_update::kExperimentLabelSep);
80 expected_labels.append(kSomeOtherExperiments);
81 expected_labels.append(google_update::kExperimentLabelSep);
82 expected_labels.append(reactivation_label_);
83 VerifyExperimentLabels(expected_labels);
84 }
85
86 TEST_F(GCAPIOmahaExperimentTest,
87 SetReactivationLabelWithExistingIdenticalAtBeginning) {
88 string16 previous_labels(reactivation_label_);
89 previous_labels.append(google_update::kExperimentLabelSep);
90 previous_labels.append(kSomeExperiments);
91 GoogleUpdateSettings::SetExperimentLabels(false, previous_labels);
92
93 ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
94
95 string16 expected_labels(kSomeExperiments);
96 expected_labels.append(google_update::kExperimentLabelSep);
97 expected_labels.append(reactivation_label_);
98 VerifyExperimentLabels(expected_labels);
99 }
100
101 TEST_F(GCAPIOmahaExperimentTest,
102 SetReactivationLabelWithFakeMatchInAnExperiment) {
103 string16 previous_labels(kSomeExperiments);
104 previous_labels.append(google_update::kExperimentLabelSep);
105 previous_labels.append(L"blah_");
106 // Shouldn't match deletion criteria.
107 previous_labels.append(reactivation_label_);
108 previous_labels.append(google_update::kExperimentLabelSep);
109 previous_labels.append(kSomeOtherExperiments);
110 previous_labels.append(google_update::kExperimentLabelSep);
111 // Should match the deletion criteria.
112 previous_labels.append(reactivation_label_);
113 previous_labels.append(google_update::kExperimentLabelSep);
114 previous_labels.append(kSomeMoreExperiments);
115 GoogleUpdateSettings::SetExperimentLabels(false, previous_labels);
116
117 ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
118
119 string16 expected_labels(kSomeExperiments);
120 expected_labels.append(google_update::kExperimentLabelSep);
121 expected_labels.append(L"blah_");
122 expected_labels.append(reactivation_label_);
123 expected_labels.append(google_update::kExperimentLabelSep);
124 expected_labels.append(kSomeOtherExperiments);
125 expected_labels.append(google_update::kExperimentLabelSep);
126 expected_labels.append(kSomeMoreExperiments);
127 expected_labels.append(google_update::kExperimentLabelSep);
128 expected_labels.append(reactivation_label_);
129 VerifyExperimentLabels(expected_labels);
130 }
131
132 TEST_F(GCAPIOmahaExperimentTest,
133 SetReactivationLabelWithFakeMatchInAnExperimentAndNoRealMatch) {
134 string16 previous_labels(kSomeExperiments);
135 previous_labels.append(google_update::kExperimentLabelSep);
136 previous_labels.append(L"blah_");
137 // Shouldn't match deletion criteria.
138 previous_labels.append(reactivation_label_);
139 previous_labels.append(google_update::kExperimentLabelSep);
140 previous_labels.append(kSomeOtherExperiments);
141 GoogleUpdateSettings::SetExperimentLabels(false, previous_labels);
142
143 ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
144
145 string16 expected_labels(kSomeExperiments);
146 expected_labels.append(google_update::kExperimentLabelSep);
147 expected_labels.append(L"blah_");
148 expected_labels.append(reactivation_label_);
149 expected_labels.append(google_update::kExperimentLabelSep);
150 expected_labels.append(kSomeOtherExperiments);
151 expected_labels.append(google_update::kExperimentLabelSep);
152 expected_labels.append(reactivation_label_);
153 VerifyExperimentLabels(expected_labels);
154 }
155
156 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698