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

Unified Diff: common/experiment_labels_unittest.cc

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « common/experiment_labels.cc ('k') | common/extra_args_parser.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: common/experiment_labels_unittest.cc
diff --git a/common/experiment_labels_unittest.cc b/common/experiment_labels_unittest.cc
deleted file mode 100644
index 1cc0e50f4ab75ecbbc17c205c79fe9df50f1a365..0000000000000000000000000000000000000000
--- a/common/experiment_labels_unittest.cc
+++ /dev/null
@@ -1,729 +0,0 @@
-// Copyright 2011 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// ========================================================================
-
-#include "omaha/common/experiment_labels.h"
-#include "omaha/testing/resource.h"
-#include "omaha/testing/unit_test.h"
-
-namespace omaha {
-
-namespace {
-
-#define LABEL_DELIMITER_KV _T("=")
-#define LABEL_DELIMITER_EX _T("|")
-#define LABEL_DELIMITER_LA _T(";")
-
-#define LABELONE_KEY _T("test_key_1")
-#define LABELONE_VALUE _T("test_value_1")
-#define LABELONE_EXP_STR _T("Fri, 14 Aug 2015 16:13:03 GMT")
-#define LABELONE_EXP_INT 130840423830000000uI64
-#define LABELONE_COMBINED LABELONE_KEY \
- LABEL_DELIMITER_KV \
- LABELONE_VALUE \
- LABEL_DELIMITER_EX \
- LABELONE_EXP_STR
-
-#define LABELTWO_KEY _T("test_key_2")
-#define LABELTWO_VALUE _T("test_value_2")
-#define LABELTWO_EXP_STR _T("Thu, 27 Nov 2014 23:59:59 GMT")
-#define LABELTWO_EXP_INT 130616063990000000uI64
-#define LABELTWO_COMBINED LABELTWO_KEY \
- LABEL_DELIMITER_KV \
- LABELTWO_VALUE \
- LABEL_DELIMITER_EX \
- LABELTWO_EXP_STR
-
-#define LABELOLD_KEY _T("test_key_old")
-#define LABELOLD_VALUE _T("test_value_old")
-#define LABELOLD_EXP_STR _T("Mon, 04 Jan 2010 08:00:00 GMT")
-#define LABELOLD_EXP_INT 129070656000000000uI64
-#define LABELOLD_COMBINED LABELOLD_KEY \
- LABEL_DELIMITER_KV \
- LABELOLD_VALUE \
- LABEL_DELIMITER_EX \
- LABELOLD_EXP_STR
-
-
-const TCHAR* const kLabelOneKey = LABELONE_KEY;
-const TCHAR* const kLabelOneValue = LABELONE_VALUE;
-const TCHAR* const kLabelOneExpStr = LABELONE_EXP_STR;
-const time64 kLabelOneExpInt = LABELONE_EXP_INT;
-const TCHAR* const kLabelOneCombined = LABELONE_COMBINED;
-
-const TCHAR* const kLabelTwoKey = LABELTWO_KEY;
-const TCHAR* const kLabelTwoValue = LABELTWO_VALUE;
-const TCHAR* const kLabelTwoExpStr = LABELTWO_EXP_STR;
-const time64 kLabelTwoExpInt = LABELTWO_EXP_INT;
-const TCHAR* const kLabelTwoCombined = LABELTWO_COMBINED;
-
-const TCHAR* const kLabelOldKey = LABELOLD_KEY;
-const TCHAR* const kLabelOldValue = LABELOLD_VALUE;
-const TCHAR* const kLabelOldExpStr = LABELOLD_EXP_STR;
-const time64 kLabelOldExpInt = LABELOLD_EXP_INT;
-const TCHAR* const kLabelOldCombined = LABELOLD_COMBINED;
-
-const TCHAR* const kLabelNewCombined = LABELONE_COMBINED
- LABEL_DELIMITER_LA
- LABELTWO_COMBINED;
-
-const TCHAR* const kLabelAllCombined = LABELONE_COMBINED
- LABEL_DELIMITER_LA
- LABELTWO_COMBINED
- LABEL_DELIMITER_LA
- LABELOLD_COMBINED;
-
-} // end namespace
-
-TEST(ExperimentLabelsTest, Empty) {
- ExperimentLabels el;
-
- EXPECT_EQ(0, el.NumLabels());
- EXPECT_FALSE(el.ContainsKey(kLabelOneKey));
- EXPECT_FALSE(el.ContainsKey(kLabelTwoKey));
- EXPECT_FALSE(el.ContainsKey(kLabelOldKey));
- EXPECT_FALSE(el.FindLabelByKey(kLabelOneKey, NULL, NULL));
- EXPECT_FALSE(el.FindLabelByKey(kLabelTwoKey, NULL, NULL));
- EXPECT_FALSE(el.FindLabelByKey(kLabelOldKey, NULL, NULL));
-}
-
-TEST(ExperimentLabelsTest, BasicOperations) {
- ExperimentLabels el;
-
- EXPECT_EQ(0, el.NumLabels());
- EXPECT_FALSE(el.ContainsKey(kLabelOneKey));
- EXPECT_FALSE(el.ContainsKey(kLabelTwoKey));
- EXPECT_FALSE(el.ContainsKey(kLabelOldKey));
-
- // Start by adding a single label.
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelOneValue, kLabelOneExpInt));
- EXPECT_EQ(1, el.NumLabels());
- EXPECT_TRUE(el.ContainsKey(kLabelOneKey));
- EXPECT_FALSE(el.ContainsKey(kLabelTwoKey));
- EXPECT_FALSE(el.ContainsKey(kLabelOldKey));
-
- // Add both future labels now.
- EXPECT_TRUE(el.SetLabel(kLabelTwoKey, kLabelTwoValue, kLabelTwoExpInt));
- EXPECT_EQ(2, el.NumLabels());
- EXPECT_TRUE(el.ContainsKey(kLabelOneKey));
- EXPECT_TRUE(el.ContainsKey(kLabelTwoKey));
- EXPECT_FALSE(el.ContainsKey(kLabelOldKey));
-
- // Clear the first label; it should not appear.
- EXPECT_TRUE(el.ClearLabel(kLabelOneKey));
- EXPECT_EQ(1, el.NumLabels());
- EXPECT_FALSE(el.ContainsKey(kLabelOneKey));
- EXPECT_TRUE(el.ContainsKey(kLabelTwoKey));
- EXPECT_FALSE(el.ContainsKey(kLabelOldKey));
-
- // ClearLabel should return false if the key isn't present.
- EXPECT_FALSE(el.ClearLabel(kLabelOldKey));
-
- // ClearAllLabels should clear all labels.
- el.ClearAllLabels();
- EXPECT_EQ(0, el.NumLabels());
- EXPECT_FALSE(el.ContainsKey(kLabelOneKey));
- EXPECT_FALSE(el.ContainsKey(kLabelTwoKey));
- EXPECT_FALSE(el.ContainsKey(kLabelOldKey));
-}
-
-TEST(ExperimentLabelsTest, SetInvalidParameters) {
- ExperimentLabels el;
-
- // Verify that our core test parameters are okay by adding a key, then
- // clearing all.
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelOneValue, kLabelOneExpInt));
- el.ClearAllLabels();
-
- // Don't allow zero length names or values, or expirations in the past.
- EXPECT_FALSE(el.SetLabel(_T(""), kLabelOneValue, kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(kLabelOneKey, _T(""), kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(kLabelOneKey, kLabelOneValue, 0));
-
- // Explicitly validate that names and values do not contain delimiters,
- // quotes, angle brackets, question marks, or ampersands, as these could
- // break parsing at the label-string, extraargs, or XML levels.
- EXPECT_FALSE(el.SetLabel(_T("=test"), kLabelOneValue, kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(_T("te=st"), kLabelOneValue, kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(_T("test="), kLabelOneValue, kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(_T("|test"), kLabelOneValue, kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(_T("te|st"), kLabelOneValue, kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(_T("test|"), kLabelOneValue, kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(_T("test<"), kLabelOneValue, kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(_T("test>"), kLabelOneValue, kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(_T("test&"), kLabelOneValue, kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(_T("test?"), kLabelOneValue, kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(_T("test^"), kLabelOneValue, kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(_T("test'"), kLabelOneValue, kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(_T("test\""), kLabelOneValue, kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(kLabelOneKey, _T("=test"), kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(kLabelOneKey, _T("te=st"), kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(kLabelOneKey, _T("test="), kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(kLabelOneKey, _T("|test"), kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(kLabelOneKey, _T("te|st"), kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(kLabelOneKey, _T("test|"), kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(kLabelOneKey, _T("test<"), kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(kLabelOneKey, _T("test>"), kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(kLabelOneKey, _T("test&"), kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(kLabelOneKey, _T("test?"), kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(kLabelOneKey, _T("test^"), kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(kLabelOneKey, _T("test'"), kLabelOneExpInt));
- EXPECT_FALSE(el.SetLabel(kLabelOneKey, _T("test\""), kLabelOneExpInt));
- EXPECT_EQ(0, el.NumLabels());
-
- // Allow an expiration in the past if and only if we override the default
- // preserve-expired-labels setting.
- el.SetPreserveExpiredLabels(true);
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelOneValue, kLabelOldExpInt));
- EXPECT_EQ(1, el.NumLabels());
-}
-
-TEST(ExperimentLabelsTest, SetWillOverwrite) {
- ExperimentLabels el;
- CString value;
- time64 expiration;
-
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelOneValue, kLabelOneExpInt));
-
- EXPECT_EQ(1, el.NumLabels());
- EXPECT_TRUE(el.FindLabelByKey(kLabelOneKey, &value, &expiration));
- EXPECT_STREQ(value, kLabelOneValue);
- EXPECT_EQ(expiration, kLabelOneExpInt);
-
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelTwoValue, kLabelTwoExpInt));
-
- EXPECT_EQ(1, el.NumLabels());
- EXPECT_TRUE(el.FindLabelByKey(kLabelOneKey, &value, &expiration));
- EXPECT_STREQ(value, kLabelTwoValue);
- EXPECT_EQ(expiration, kLabelTwoExpInt);
-}
-
-TEST(ExperimentLabelsTest, FindLabelByKey) {
- ExperimentLabels el;
- CString value;
- time64 expiration;
-
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelOneValue, kLabelOneExpInt));
- EXPECT_TRUE(el.SetLabel(kLabelTwoKey, kLabelTwoValue, kLabelTwoExpInt));
- EXPECT_EQ(2, el.NumLabels());
-
- // Safely return partial values if either or both out parameters are NULL.
- EXPECT_TRUE(el.FindLabelByKey(kLabelOneKey, NULL, NULL));
- EXPECT_TRUE(el.FindLabelByKey(kLabelOneKey, &value, NULL));
- EXPECT_STREQ(value, kLabelOneValue);
- EXPECT_TRUE(el.FindLabelByKey(kLabelOneKey, NULL, &expiration));
- EXPECT_EQ(expiration, kLabelOneExpInt);
-
- // Overwrite values if they already have values.
- EXPECT_TRUE(el.FindLabelByKey(kLabelTwoKey, &value, &expiration));
- EXPECT_STREQ(value, kLabelTwoValue);
- EXPECT_EQ(expiration, kLabelTwoExpInt);
-
- // If the key isn't present, return false; both out-params are unmodified.
- EXPECT_FALSE(el.FindLabelByKey(kLabelOldKey, &value, &expiration));
- EXPECT_STREQ(value, kLabelTwoValue);
- EXPECT_EQ(expiration, kLabelTwoExpInt);
-}
-
-TEST(ExperimentLabelsTest, Serialize_Empty) {
- ExperimentLabels el;
-
- CString serialized = el.Serialize();
- EXPECT_STREQ(serialized, _T(""));
-}
-
-TEST(ExperimentLabelsTest, Serialize_Single_Valid) {
- ExperimentLabels el;
-
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelOneValue, kLabelOneExpInt));
- EXPECT_EQ(1, el.NumLabels());
-
- CString serialized = el.Serialize();
- EXPECT_STREQ(serialized, kLabelOneCombined);
-}
-
-TEST(ExperimentLabelsTest, Serialize_Single_Expired) {
- ExperimentLabels el;
-
- el.SetPreserveExpiredLabels(true);
- EXPECT_TRUE(el.SetLabel(kLabelOldKey, kLabelOldValue, kLabelOldExpInt));
- EXPECT_EQ(1, el.NumLabels());
-
- el.SetPreserveExpiredLabels(false);
- CString serialized = el.Serialize();
- EXPECT_STREQ(serialized, _T(""));
-
- el.SetPreserveExpiredLabels(true);
- serialized = el.Serialize();
- EXPECT_STREQ(serialized, kLabelOldCombined);
-}
-
-TEST(ExperimentLabelsTest, Serialize_Multi_Valid) {
- ExperimentLabels el;
-
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelOneValue, kLabelOneExpInt));
- EXPECT_TRUE(el.SetLabel(kLabelTwoKey, kLabelTwoValue, kLabelTwoExpInt));
- EXPECT_EQ(2, el.NumLabels());
-
- CString serialized = el.Serialize();
- EXPECT_STREQ(serialized, kLabelNewCombined);
-}
-
-TEST(ExperimentLabelsTest, Serialize_Multi_Valid_Expired) {
- ExperimentLabels el;
-
- el.SetPreserveExpiredLabels(true);
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelOneValue, kLabelOneExpInt));
- EXPECT_TRUE(el.SetLabel(kLabelTwoKey, kLabelTwoValue, kLabelTwoExpInt));
- EXPECT_TRUE(el.SetLabel(kLabelOldKey, kLabelOldValue, kLabelOldExpInt));
- EXPECT_EQ(3, el.NumLabels());
-
- el.SetPreserveExpiredLabels(false);
- CString serialized = el.Serialize();
- EXPECT_STREQ(serialized, kLabelNewCombined);
-
- el.SetPreserveExpiredLabels(true);
- serialized = el.Serialize();
- EXPECT_STREQ(serialized, kLabelAllCombined);
-}
-
-
-TEST(ExperimentLabelsTest, Deserialize_EmptyString) {
- ExperimentLabels el;
-
- EXPECT_TRUE(el.Deserialize(_T("")));
- EXPECT_EQ(0, el.NumLabels());
-}
-
-TEST(ExperimentLabelsTest, Deserialize_Single_Valid) {
- ExperimentLabels el;
-
- EXPECT_TRUE(el.Deserialize(kLabelOneCombined));
- EXPECT_EQ(1, el.NumLabels());
-
- CString key;
- CString value;
- time64 expiration;
- el.GetLabelByIndex(0, &key, &value, &expiration);
- EXPECT_STREQ(key, kLabelOneKey);
- EXPECT_STREQ(value, kLabelOneValue);
- EXPECT_EQ(expiration, kLabelOneExpInt);
-}
-
-TEST(ExperimentLabelsTest, Deserialize_Multi_Valid) {
- ExperimentLabels el;
-
- EXPECT_TRUE(el.Deserialize(kLabelNewCombined));
- EXPECT_EQ(2, el.NumLabels());
-
- CString key;
- CString value;
- time64 expiration;
- el.GetLabelByIndex(0, &key, &value, &expiration);
- EXPECT_STREQ(key, kLabelOneKey);
- EXPECT_STREQ(value, kLabelOneValue);
- EXPECT_EQ(expiration, kLabelOneExpInt);
- el.GetLabelByIndex(1, &key, &value, &expiration);
- EXPECT_STREQ(key, kLabelTwoKey);
- EXPECT_STREQ(value, kLabelTwoValue);
- EXPECT_EQ(expiration, kLabelTwoExpInt);
-}
-
-TEST(ExperimentLabelsTest, Deserialize_Single_Valid_Expired) {
- ExperimentLabels el;
-
- EXPECT_TRUE(el.Deserialize(kLabelOldCombined));
- EXPECT_EQ(0, el.NumLabels());
-
- el.SetPreserveExpiredLabels(true);
- EXPECT_TRUE(el.Deserialize(kLabelOldCombined));
- EXPECT_EQ(1, el.NumLabels());
-
- CString key;
- CString value;
- time64 expiration;
- el.GetLabelByIndex(0, &key, &value, &expiration);
- EXPECT_STREQ(key, kLabelOldKey);
- EXPECT_STREQ(value, kLabelOldValue);
- EXPECT_EQ(expiration, kLabelOldExpInt);
-}
-
-TEST(ExperimentLabelsTest, Deserialize_Multi_Valid_Expired) {
- ExperimentLabels el;
-
- EXPECT_TRUE(el.Deserialize(kLabelAllCombined));
- EXPECT_EQ(2, el.NumLabels());
- EXPECT_TRUE(el.ContainsKey(kLabelOneKey));
- EXPECT_TRUE(el.ContainsKey(kLabelTwoKey));
- EXPECT_FALSE(el.ContainsKey(kLabelOldKey));
-
- el.ClearAllLabels();
-
- el.SetPreserveExpiredLabels(true);
- EXPECT_TRUE(el.Deserialize(kLabelAllCombined));
- EXPECT_EQ(3, el.NumLabels());
- EXPECT_TRUE(el.ContainsKey(kLabelOneKey));
- EXPECT_TRUE(el.ContainsKey(kLabelTwoKey));
- EXPECT_TRUE(el.ContainsKey(kLabelOldKey));
-}
-
-TEST(ExperimentLabelsTest, Deserialize_Invalid_ZeroLengthKey) {
- ExperimentLabels el;
-
- // Base case: "=valid_value|valid_exp"
- const TCHAR* const invalid_segment = LABEL_DELIMITER_KV
- LABELONE_VALUE
- LABEL_DELIMITER_EX
- LABELONE_EXP_STR;
- EXPECT_FALSE(el.Deserialize(invalid_segment));
- EXPECT_EQ(0, el.NumLabels());
-
- // Variant case 1: "=valid_value|valid_exp;valid_key=valid_value|valid_exp"
- CString variant1 = invalid_segment;
- variant1.Append(LABEL_DELIMITER_LA);
- variant1.Append(LABELTWO_COMBINED);
- EXPECT_FALSE(el.Deserialize(variant1));
- EXPECT_EQ(0, el.NumLabels());
-
- // Variant case 2: "valid_key=valid_value|valid_exp;=valid_value|valid_exp"
- CString variant2 = LABELTWO_COMBINED;
- variant2.Append(LABEL_DELIMITER_LA);
- variant2.Append(invalid_segment);
- EXPECT_FALSE(el.Deserialize(variant2));
- EXPECT_EQ(0, el.NumLabels());
-}
-
-TEST(ExperimentLabelsTest, Deserialize_Invalid_ZeroLengthValue) {
- ExperimentLabels el;
-
- // Base case: "valid_key=|valid_exp"
- const TCHAR* const invalid_segment = LABELONE_KEY
- LABEL_DELIMITER_KV
- LABEL_DELIMITER_EX
- LABELONE_EXP_STR;
- EXPECT_FALSE(el.Deserialize(invalid_segment));
- EXPECT_EQ(0, el.NumLabels());
-
- // Variant case 1: "valid_key=|valid_exp;valid_key=valid_value|valid_exp"
- CString variant1 = invalid_segment;
- variant1.Append(LABEL_DELIMITER_LA);
- variant1.Append(LABELTWO_COMBINED);
- EXPECT_FALSE(el.Deserialize(variant1));
- EXPECT_EQ(0, el.NumLabels());
-
- // Variant case 2: "valid_key=valid_value|valid_exp;valid_key=|valid_exp"
- el.ClearAllLabels();
- CString variant2 = LABELTWO_COMBINED;
- variant2.Append(LABEL_DELIMITER_LA);
- variant2.Append(invalid_segment);
- EXPECT_FALSE(el.Deserialize(variant2));
- EXPECT_EQ(0, el.NumLabels());
-}
-
-TEST(ExperimentLabelsTest, Deserialize_Invalid_ZeroLengthDate) {
- ExperimentLabels el;
-
- // Base case: "valid_key=valid_value|"
- const TCHAR* const invalid_segment = LABELONE_KEY
- LABEL_DELIMITER_KV
- LABELONE_VALUE
- LABEL_DELIMITER_EX;
- EXPECT_FALSE(el.Deserialize(invalid_segment));
- EXPECT_EQ(0, el.NumLabels());
-
- // Variant case 1: "valid_key=valid_value|;valid_key=valid_value|valid_exp"
- CString variant1 = invalid_segment;
- variant1.Append(LABEL_DELIMITER_LA);
- variant1.Append(LABELTWO_COMBINED);
- EXPECT_FALSE(el.Deserialize(variant1));
- EXPECT_EQ(0, el.NumLabels());
-
- // Variant case 2: "valid_key=valid_value|valid_exp;valid_key=valid_value|"
- CString variant2 = LABELTWO_COMBINED;
- variant2.Append(LABEL_DELIMITER_LA);
- variant2.Append(invalid_segment);
- EXPECT_FALSE(el.Deserialize(variant2));
- EXPECT_EQ(0, el.NumLabels());
-}
-
-TEST(ExperimentLabelsTest, Deserialize_Invalid_ExtraDelimiters) {
- ExperimentLabels el;
-
- // Repeated equals: "k==v|e"
- EXPECT_FALSE(el.Deserialize(LABELONE_KEY
- LABEL_DELIMITER_KV
- LABEL_DELIMITER_KV
- LABELONE_VALUE
- LABEL_DELIMITER_EX
- LABELONE_EXP_STR));
-
- // Repeated pipe: "k=v||e"
- EXPECT_FALSE(el.Deserialize(LABELONE_KEY
- LABEL_DELIMITER_KV
- LABELONE_VALUE
- LABEL_DELIMITER_EX
- LABEL_DELIMITER_EX
- LABELONE_EXP_STR));
-
- // Degenerate: "=|;=|"
- EXPECT_FALSE(el.Deserialize(LABEL_DELIMITER_KV
- LABEL_DELIMITER_EX
- LABEL_DELIMITER_LA
- LABEL_DELIMITER_KV
- LABEL_DELIMITER_EX));
-
- EXPECT_EQ(0, el.NumLabels());
-}
-
-TEST(ExperimentLabelsTest, Deserialize_Valid_ExtraLabelDelimiters) {
- ExperimentLabels el;
-
- // We support (but discourage) leading/trailing/repeated separators;
- // for example, "k=v|e;;;;k=v|e" should cleanly parse (two keys), as
- // should ";;;k=v|e" and "k=v|e;;;" (one key each) and ";;;;;" (no keys).
-
- // Repeated separator: "k=v|e;;k=v|e"
- EXPECT_TRUE(el.Deserialize(LABELONE_COMBINED
- LABEL_DELIMITER_LA
- LABEL_DELIMITER_LA
- LABELTWO_COMBINED));
- EXPECT_EQ(2, el.NumLabels());
- el.ClearAllLabels();
-
- // Leading separator: ";k=v|e"
- EXPECT_TRUE(el.Deserialize(LABEL_DELIMITER_LA LABELONE_COMBINED));
- EXPECT_EQ(1, el.NumLabels());
- el.ClearAllLabels();
-
- // Trailing separator: "k=v|e;"
- EXPECT_TRUE(el.Deserialize(LABELONE_COMBINED LABEL_DELIMITER_LA));
- EXPECT_EQ(1, el.NumLabels());
- el.ClearAllLabels();
-
- // Degenerate: ";;;"
- EXPECT_TRUE(el.Deserialize(LABEL_DELIMITER_LA
- LABEL_DELIMITER_LA
- LABEL_DELIMITER_LA));
- EXPECT_EQ(0, el.NumLabels());
-}
-
-TEST(ExperimentLabelsTest, Deserialize_Invalid_MissingDelimiters) {
- ExperimentLabels el;
-
- // Missing all delimiters, single string (kve)
- EXPECT_FALSE(el.Deserialize(LABELONE_KEY
- LABELONE_VALUE
- LABELONE_EXP_STR));
-
- // Missing expiration delimiter, single string (k=ve)
- EXPECT_FALSE(el.Deserialize(LABELONE_KEY
- LABEL_DELIMITER_KV
- LABELONE_VALUE
- LABELONE_EXP_STR));
-
- // Missing value delimiter, single string (kv|e)
- EXPECT_FALSE(el.Deserialize(LABELONE_KEY
- LABELONE_VALUE
- LABEL_DELIMITER_EX
- LABELONE_EXP_STR));
-
- // Missing label delimiter, multi-label (k=v|ek=v|e)
- EXPECT_FALSE(el.Deserialize(LABELONE_COMBINED LABELTWO_COMBINED));
-
- // Missing value+exp delimiter, multi-label, first (kve;k=v|e)
- EXPECT_FALSE(el.Deserialize(LABELONE_KEY
- LABELONE_VALUE
- LABELONE_EXP_STR
- LABEL_DELIMITER_LA
- LABELTWO_COMBINED));
-
- // Missing value+exp delimiter, multi-label, second (k=v|e;kve)
- EXPECT_FALSE(el.Deserialize(LABELONE_COMBINED
- LABEL_DELIMITER_LA
- LABELTWO_KEY
- LABELTWO_VALUE
- LABELTWO_EXP_STR));
-
- // Missing value delimiter, multi-label, first (kv|e;k=v|e)
- EXPECT_FALSE(el.Deserialize(LABELONE_KEY
- LABELONE_VALUE
- LABEL_DELIMITER_EX
- LABELONE_EXP_STR
- LABEL_DELIMITER_LA
- LABELTWO_COMBINED));
-
- // Missing value delimiter, multi-label, second (k=v|e;kv|e)
- EXPECT_FALSE(el.Deserialize(LABELONE_COMBINED
- LABEL_DELIMITER_LA
- LABELTWO_KEY
- LABELTWO_VALUE
- LABEL_DELIMITER_EX
- LABELTWO_EXP_STR));
-
- // Missing expiration delimiter, multi-label, first (k=ve;k=v|e)
- EXPECT_FALSE(el.Deserialize(LABELONE_KEY
- LABEL_DELIMITER_KV
- LABELONE_VALUE
- LABELONE_EXP_STR
- LABEL_DELIMITER_LA
- LABELTWO_COMBINED));
-
- // Missing expiration delimiter, multi-label, second (k=v|e;k=ve)
- EXPECT_FALSE(el.Deserialize(LABELONE_COMBINED
- LABEL_DELIMITER_LA
- LABELTWO_KEY
- LABEL_DELIMITER_KV
- LABELTWO_VALUE
- LABELTWO_EXP_STR));
-
- EXPECT_EQ(0, el.NumLabels());
-}
-
-TEST(ExperimentLabelsTest, DeserializeAndApplyDelta_Append) {
- ExperimentLabels el;
-
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelOneValue, kLabelOneExpInt));
- EXPECT_EQ(1, el.NumLabels());
- EXPECT_TRUE(el.DeserializeAndApplyDelta(kLabelTwoCombined));
- EXPECT_EQ(2, el.NumLabels());
-
- CString value;
- time64 expiration;
- EXPECT_TRUE(el.FindLabelByKey(kLabelOneKey, &value, &expiration));
- EXPECT_STREQ(value, kLabelOneValue);
- EXPECT_EQ(expiration, kLabelOneExpInt);
- EXPECT_TRUE(el.FindLabelByKey(kLabelTwoKey, &value, &expiration));
- EXPECT_STREQ(value, kLabelTwoValue);
- EXPECT_EQ(expiration, kLabelTwoExpInt);
-}
-
-TEST(ExperimentLabelsTest, DeserializeAndApplyDelta_Append_Expired) {
- ExperimentLabels el;
-
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelOneValue, kLabelOneExpInt));
- EXPECT_EQ(1, el.NumLabels());
- EXPECT_TRUE(el.ContainsKey(kLabelOneKey));
- EXPECT_FALSE(el.ContainsKey(kLabelOldKey));
-
- EXPECT_TRUE(el.DeserializeAndApplyDelta(kLabelOldCombined));
- EXPECT_EQ(1, el.NumLabels());
- EXPECT_TRUE(el.ContainsKey(kLabelOneKey));
- EXPECT_FALSE(el.ContainsKey(kLabelOldKey));
-}
-
-TEST(ExperimentLabelsTest, DeserializeAndApplyDelta_Overwrite_Single) {
- ExperimentLabels el;
-
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelOldValue, kLabelOneExpInt));
- EXPECT_EQ(1, el.NumLabels());
- EXPECT_TRUE(el.ContainsKey(kLabelOneKey));
- EXPECT_FALSE(el.ContainsKey(kLabelTwoKey));
-
- CString value;
- time64 expiration;
- EXPECT_TRUE(el.FindLabelByKey(kLabelOneKey, &value, &expiration));
- EXPECT_STREQ(value, kLabelOldValue);
- EXPECT_EQ(expiration, kLabelOneExpInt);
-
- EXPECT_TRUE(el.DeserializeAndApplyDelta(kLabelOneCombined));
- EXPECT_EQ(1, el.NumLabels());
- EXPECT_TRUE(el.ContainsKey(kLabelOneKey));
- EXPECT_FALSE(el.ContainsKey(kLabelTwoKey));
-
- EXPECT_TRUE(el.FindLabelByKey(kLabelOneKey, &value, &expiration));
- EXPECT_STREQ(value, kLabelOneValue);
- EXPECT_EQ(expiration, kLabelOneExpInt);
-}
-
-TEST(ExperimentLabelsTest, DeserializeAndApplyDelta_Overwrite_Multi) {
- ExperimentLabels el;
-
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelOldValue, kLabelOneExpInt));
- EXPECT_EQ(1, el.NumLabels());
- EXPECT_TRUE(el.ContainsKey(kLabelOneKey));
- EXPECT_FALSE(el.ContainsKey(kLabelTwoKey));
-
- EXPECT_TRUE(el.DeserializeAndApplyDelta(kLabelNewCombined));
- EXPECT_EQ(2, el.NumLabels());
- EXPECT_TRUE(el.ContainsKey(kLabelOneKey));
- EXPECT_TRUE(el.ContainsKey(kLabelTwoKey));
-
- CString value;
- time64 expiration;
- EXPECT_TRUE(el.FindLabelByKey(kLabelOneKey, &value, &expiration));
- EXPECT_STREQ(value, kLabelOneValue);
- EXPECT_EQ(expiration, kLabelOneExpInt);
- EXPECT_TRUE(el.FindLabelByKey(kLabelTwoKey, &value, &expiration));
- EXPECT_STREQ(value, kLabelTwoValue);
- EXPECT_EQ(expiration, kLabelTwoExpInt);
-}
-
-TEST(ExperimentLabelsTest, DeserializeAndApplyDelta_Overwrite_Single_Expired) {
- ExperimentLabels el;
-
- EXPECT_TRUE(el.SetLabel(kLabelOldKey, kLabelOldValue, kLabelOneExpInt));
- EXPECT_TRUE(el.SetLabel(kLabelTwoKey, kLabelTwoValue, kLabelTwoExpInt));
- EXPECT_EQ(2, el.NumLabels());
- EXPECT_TRUE(el.ContainsKey(kLabelOldKey));
- EXPECT_TRUE(el.ContainsKey(kLabelTwoKey));
-
- EXPECT_TRUE(el.DeserializeAndApplyDelta(kLabelOldCombined));
- EXPECT_EQ(1, el.NumLabels());
- EXPECT_FALSE(el.ContainsKey(kLabelOldKey));
- EXPECT_TRUE(el.ContainsKey(kLabelTwoKey));
-}
-
-TEST(ExperimentLabelsTest, DeserializeAndApplyDelta_Overwrite_Multi_Expired) {
- ExperimentLabels el;
-
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelTwoValue, kLabelOneExpInt));
- EXPECT_TRUE(el.SetLabel(kLabelTwoKey, kLabelOneValue, kLabelTwoExpInt));
- EXPECT_TRUE(el.SetLabel(kLabelOldKey, kLabelOldValue, kLabelOneExpInt));
- EXPECT_EQ(3, el.NumLabels());
- EXPECT_TRUE(el.ContainsKey(kLabelOneKey));
- EXPECT_TRUE(el.ContainsKey(kLabelTwoKey));
- EXPECT_TRUE(el.ContainsKey(kLabelOldKey));
-
- EXPECT_TRUE(el.DeserializeAndApplyDelta(kLabelAllCombined));
- EXPECT_EQ(2, el.NumLabels());
- EXPECT_TRUE(el.ContainsKey(kLabelOneKey));
- EXPECT_TRUE(el.ContainsKey(kLabelTwoKey));
- EXPECT_FALSE(el.ContainsKey(kLabelOldKey));
-}
-
-TEST(ExperimentLabelsTest, Expire) {
- ExperimentLabels el;
-
- el.SetPreserveExpiredLabels(true);
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelOneValue, kLabelOneExpInt));
- EXPECT_TRUE(el.SetLabel(kLabelTwoKey, kLabelTwoValue, kLabelTwoExpInt));
- EXPECT_TRUE(el.SetLabel(kLabelOldKey, kLabelOldValue, kLabelOldExpInt));
- EXPECT_EQ(3, el.NumLabels());
-
- el.ExpireLabels();
- EXPECT_EQ(2, el.NumLabels());
- EXPECT_TRUE(el.ContainsKey(kLabelOneKey));
- EXPECT_TRUE(el.ContainsKey(kLabelTwoKey));
- EXPECT_FALSE(el.ContainsKey(kLabelOldKey));
-
- EXPECT_TRUE(el.SetLabel(kLabelOneKey, kLabelOneValue, kLabelOldExpInt));
- el.ExpireLabels();
- EXPECT_EQ(1, el.NumLabels());
- EXPECT_FALSE(el.ContainsKey(kLabelOneKey));
- EXPECT_TRUE(el.ContainsKey(kLabelTwoKey));
- EXPECT_FALSE(el.ContainsKey(kLabelOldKey));
-}
-
-} // namespace omaha
-
« no previous file with comments | « common/experiment_labels.cc ('k') | common/extra_args_parser.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698