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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/installer/gcapi/gcapi_omaha_experiment.cc ('k') | chrome/installer/gcapi/gcapi_reactivation_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/installer/gcapi/gcapi_omaha_experiment_test.cc
diff --git a/chrome/installer/gcapi/gcapi_omaha_experiment_test.cc b/chrome/installer/gcapi/gcapi_omaha_experiment_test.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f2a66c8f0e8f5e8ff268882ea75495846e99e999
--- /dev/null
+++ b/chrome/installer/gcapi/gcapi_omaha_experiment_test.cc
@@ -0,0 +1,180 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/installer/gcapi/gcapi_omaha_experiment.h"
+
+#include "chrome/installer/gcapi/gcapi.h"
+#include "chrome/installer/gcapi/gcapi_test_registry_overrider.h"
+#include "chrome/installer/util/google_update_constants.h"
+#include "chrome/installer/util/google_update_settings.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+const wchar_t kBrand[] = L"ABCD";
+const uint16 kUserLevel = GCAPI_INVOKED_STANDARD_SHELL;
+
+const wchar_t kSomeExperiments[] = L"myexp=1|Aug 2;yourexp=2|Sep 5";
+const wchar_t kSomeOtherExperiments[] = L"anotherexp=joe|Jun 7 2008";
+const wchar_t kSomeMoreExperiments[] = L"moreexp=foo|Jul 31 1999";
+
+class GCAPIOmahaExperimentTest : public ::testing::Test {
+ protected:
+ GCAPIOmahaExperimentTest()
+ : brand_(kBrand),
+ reactivation_label_(gcapi_internals::GetGCAPIExperimentLabel(
+ kBrand, gcapi_internals::kReactivationLabel)),
+ relaunch_label_(gcapi_internals::GetGCAPIExperimentLabel(
+ kBrand, gcapi_internals::kRelaunchLabel)) {
+ }
+
+ void VerifyExperimentLabels(const string16& expected_labels) {
+ string16 actual_labels;
+ EXPECT_TRUE(GoogleUpdateSettings::ReadExperimentLabels(false,
+ &actual_labels));
+ EXPECT_EQ(expected_labels, actual_labels);
+ }
+
+ string16 brand_;
+ string16 reactivation_label_;
+ string16 relaunch_label_;
+
+ const GCAPITestRegistryOverrider gcapi_test_registry_overrider_;
+};
+
+TEST_F(GCAPIOmahaExperimentTest, SetReactivationLabelFromEmptyExperiments) {
+ ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
+ VerifyExperimentLabels(reactivation_label_);
+}
+
+// Test the relaunch label once; all other tests go more in depth, but since
+// both labels use the same logic underneath there is no need to test both in
+// depth.
+TEST_F(GCAPIOmahaExperimentTest, SetRelaunchLabelFromEmptyExperiments) {
+ ASSERT_TRUE(SetRelaunchExperimentLabels(kBrand, kUserLevel));
+ VerifyExperimentLabels(relaunch_label_);
+}
+
+TEST_F(GCAPIOmahaExperimentTest, SetReactivationLabelWithExistingExperiments) {
+ GoogleUpdateSettings::SetExperimentLabels(false, kSomeExperiments);
+
+ ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
+
+ string16 expected_labels(kSomeExperiments);
+ expected_labels.append(google_update::kExperimentLabelSep);
+ expected_labels.append(reactivation_label_);
+ VerifyExperimentLabels(expected_labels);
+}
+
+TEST_F(GCAPIOmahaExperimentTest,
+ SetReactivationLabelWithExistingIdenticalExperiment) {
+ string16 previous_labels(kSomeExperiments);
+ previous_labels.append(google_update::kExperimentLabelSep);
+ previous_labels.append(reactivation_label_);
+ previous_labels.append(google_update::kExperimentLabelSep);
+ previous_labels.append(kSomeOtherExperiments);
+ GoogleUpdateSettings::SetExperimentLabels(false, previous_labels);
+
+ ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
+
+ string16 expected_labels(kSomeExperiments);
+ expected_labels.append(google_update::kExperimentLabelSep);
+ expected_labels.append(kSomeOtherExperiments);
+ expected_labels.append(google_update::kExperimentLabelSep);
+ expected_labels.append(reactivation_label_);
+ VerifyExperimentLabels(expected_labels);
+}
+
+TEST_F(GCAPIOmahaExperimentTest,
+ SetReactivationLabelWithExistingIdenticalAtBeginning) {
+ string16 previous_labels(reactivation_label_);
+ previous_labels.append(google_update::kExperimentLabelSep);
+ previous_labels.append(kSomeExperiments);
+ GoogleUpdateSettings::SetExperimentLabels(false, previous_labels);
+
+ ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
+
+ string16 expected_labels(kSomeExperiments);
+ expected_labels.append(google_update::kExperimentLabelSep);
+ expected_labels.append(reactivation_label_);
+ VerifyExperimentLabels(expected_labels);
+}
+
+TEST_F(GCAPIOmahaExperimentTest,
+ SetReactivationLabelWithFakeMatchInAnExperiment) {
+ string16 previous_labels(kSomeExperiments);
+ previous_labels.append(google_update::kExperimentLabelSep);
+ previous_labels.append(L"blah_");
+ // Shouldn't match deletion criteria.
+ previous_labels.append(reactivation_label_);
+ previous_labels.append(google_update::kExperimentLabelSep);
+ previous_labels.append(kSomeOtherExperiments);
+ previous_labels.append(google_update::kExperimentLabelSep);
+ // Should match the deletion criteria.
+ previous_labels.append(reactivation_label_);
+ previous_labels.append(google_update::kExperimentLabelSep);
+ previous_labels.append(kSomeMoreExperiments);
+ GoogleUpdateSettings::SetExperimentLabels(false, previous_labels);
+
+ ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
+
+ string16 expected_labels(kSomeExperiments);
+ expected_labels.append(google_update::kExperimentLabelSep);
+ expected_labels.append(L"blah_");
+ expected_labels.append(reactivation_label_);
+ expected_labels.append(google_update::kExperimentLabelSep);
+ expected_labels.append(kSomeOtherExperiments);
+ expected_labels.append(google_update::kExperimentLabelSep);
+ expected_labels.append(kSomeMoreExperiments);
+ expected_labels.append(google_update::kExperimentLabelSep);
+ expected_labels.append(reactivation_label_);
+ VerifyExperimentLabels(expected_labels);
+}
+
+TEST_F(GCAPIOmahaExperimentTest,
+ SetReactivationLabelWithFakeMatchInAnExperimentAndNoRealMatch) {
+ string16 previous_labels(kSomeExperiments);
+ previous_labels.append(google_update::kExperimentLabelSep);
+ previous_labels.append(L"blah_");
+ // Shouldn't match deletion criteria.
+ previous_labels.append(reactivation_label_);
+ previous_labels.append(google_update::kExperimentLabelSep);
+ previous_labels.append(kSomeOtherExperiments);
+ GoogleUpdateSettings::SetExperimentLabels(false, previous_labels);
+
+ ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
+
+ string16 expected_labels(kSomeExperiments);
+ expected_labels.append(google_update::kExperimentLabelSep);
+ expected_labels.append(L"blah_");
+ expected_labels.append(reactivation_label_);
+ expected_labels.append(google_update::kExperimentLabelSep);
+ expected_labels.append(kSomeOtherExperiments);
+ expected_labels.append(google_update::kExperimentLabelSep);
+ expected_labels.append(reactivation_label_);
+ VerifyExperimentLabels(expected_labels);
+}
+
+TEST_F(GCAPIOmahaExperimentTest,
+ SetReactivationLabelWithExistingEntryWithLabelAsPrefix) {
+ string16 previous_labels(kSomeExperiments);
+ previous_labels.append(google_update::kExperimentLabelSep);
+ // Append prefix matching the label, but not followed by '='.
+ previous_labels.append(gcapi_internals::kReactivationLabel);
+ // Shouldn't match deletion criteria.
+ previous_labels.append(kSomeOtherExperiments);
+ GoogleUpdateSettings::SetExperimentLabels(false, previous_labels);
+
+ ASSERT_TRUE(SetReactivationExperimentLabels(kBrand, kUserLevel));
+
+ string16 expected_labels(kSomeExperiments);
+ expected_labels.append(google_update::kExperimentLabelSep);
+ expected_labels.append(gcapi_internals::kReactivationLabel);
+ expected_labels.append(kSomeOtherExperiments);
+ expected_labels.append(google_update::kExperimentLabelSep);
+ expected_labels.append(reactivation_label_);
+ VerifyExperimentLabels(expected_labels);
+}
+
+} // namespace
« no previous file with comments | « chrome/installer/gcapi/gcapi_omaha_experiment.cc ('k') | chrome/installer/gcapi/gcapi_reactivation_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698