ShippingManagerTest: Switch from ASCII proto to YAML for test config.
Change-Id: I1e4b8057b2dec796898147ad16c1e9898d7d1460
diff --git a/encoder/BUILD.gn b/encoder/BUILD.gn
index 70ed2af..7d16356 100644
--- a/encoder/BUILD.gn
+++ b/encoder/BUILD.gn
@@ -66,6 +66,14 @@
output_file = "envelope_maker_test_config.h"
}
+# Generate shipping_manager_test_config.h from
+# shipping_manager_test_config.yaml.
+cobalt_config_header("generate_shipping_manager_test_config") {
+ input_yaml = "shipping_manager_test_config.yaml"
+ output_file = "shipping_manager_test_config.h"
+}
+
+
source_set("unittests") {
testonly = true
@@ -74,9 +82,10 @@
"encoder_test.cc",
"encoder_test_config.h",
"envelope_maker_test.cc",
- "envelope_maker_test_config.h"
+ "envelope_maker_test_config.h",
"send_retryer_test.cc",
"shipping_manager_test.cc",
+ "shipping_manager_test_config.h",
"shuffler_client_test.cc",
"system_data_test.cc",
]
@@ -85,6 +94,7 @@
":encoder",
":generate_encoder_test_config",
":generate_envelope_maker_test_config",
+ ":generate_shipping_manager_test_config",
"//third_party/gflags",
"//third_party/gtest",
diff --git a/encoder/CMakeLists.txt b/encoder/CMakeLists.txt
index 66e2cfe..899008e 100644
--- a/encoder/CMakeLists.txt
+++ b/encoder/CMakeLists.txt
@@ -23,6 +23,10 @@
generate_test_config_h(${CMAKE_CURRENT_SOURCE_DIR}/envelope_maker_test_config.yaml
${ENVELOPE_MAKER_TEST_CONFIG_H} 1 1 "cobalt_config_base64")
+set(SHIPPING_MANAGER_TEST_CONFIG_H "${CMAKE_CURRENT_BINARY_DIR}/shipping_manager_test_config.h")
+generate_test_config_h(${CMAKE_CURRENT_SOURCE_DIR}/shipping_manager_test_config.yaml
+ ${SHIPPING_MANAGER_TEST_CONFIG_H} 1 1 "cobalt_config_base64")
+
# client_secret library
add_library(client_secret client_secret.cc)
target_link_libraries(client_secret cobalt_crypto)
@@ -53,7 +57,9 @@
${ENCODER_TEST_CONFIG_H}
envelope_maker_test.cc
${ENVELOPE_MAKER_TEST_CONFIG_H}
- send_retryer_test.cc shipping_manager_test.cc
+ send_retryer_test.cc
+ shipping_manager_test.cc
+ ${SHIPPING_MANAGER_TEST_CONFIG_H}
shuffler_client_test.cc system_data_test.cc)
target_link_libraries(encoder_tests
client_secret
diff --git a/encoder/shipping_manager_test.cc b/encoder/shipping_manager_test.cc
index 768833f..a678edf 100644
--- a/encoder/shipping_manager_test.cc
+++ b/encoder/shipping_manager_test.cc
@@ -12,26 +12,32 @@
#include "./gtest.h"
#include "./logging.h"
-#include "config/config_text_parser.h"
+#include "config/client_config.h"
#include "encoder/client_secret.h"
#include "encoder/encoder.h"
#include "encoder/project_context.h"
+// Generated from shipping_manager_test_config.yaml
+#include "encoder/shipping_manager_test_config.h"
#include "third_party/gflags/include/gflags/gflags.h"
namespace cobalt {
namespace encoder {
-using config::EncodingRegistry;
-using config::MetricRegistry;
+using config::ClientConfig;
using send_retryer::CancelHandle;
using send_retryer::SendRetryer;
namespace {
+// These values must match the values specified in the invocation of
+// generate_test_config_h() in CMakeLists.txt. and in the invocation of
+// cobalt_config_header("generate_shipping_manager_test_config") in BUILD.gn.
const uint32_t kCustomerId = 1;
const uint32_t kProjectId = 1;
+
const uint32_t kMetricId = 1;
const uint32_t kEncodingConfigId = 1;
+
const size_t kNoOpEncodingByteOverhead = 30;
const size_t kMaxBytesPerObservation = 50;
const size_t kMaxBytesPerEnvelope = 200;
@@ -45,52 +51,21 @@
const std::chrono::seconds kDeadlinePerSendAttempt(60);
const std::chrono::seconds kMaxSeconds = ShippingManager::kMaxSeconds;
-const char* kMetricConfigText = R"(
-# Metric 1 has one string part.
-element {
- customer_id: 1
- project_id: 1
- id: 1
- time_zone_policy: UTC
- parts {
- key: "Part1"
- value {
- }
- }
-}
-)";
-
-const char* kEncodingConfigText = R"(
-# EncodingConfig 2 is NoOp.
-element {
- customer_id: 1
- project_id: 1
- id: 1
- no_op_encoding {
- }
-}
-
-)";
-
-// Returns a ProjectContext obtained by parsing the above configuration
-// text strings.
+// Returns a ProjectContext obtained by parsing the configuration specified
+// in shipping_manager_test_config.yaml
std::shared_ptr<ProjectContext> GetTestProject() {
- // Parse the metric config string
- auto metric_parse_result =
- config::FromString<RegisteredMetrics>(kMetricConfigText, nullptr);
- EXPECT_EQ(config::kOK, metric_parse_result.second);
- std::shared_ptr<MetricRegistry> metric_registry(
- metric_parse_result.first.release());
-
- // Parse the encoding config string
- auto encoding_parse_result =
- config::FromString<RegisteredEncodings>(kEncodingConfigText, nullptr);
- EXPECT_EQ(config::kOK, encoding_parse_result.second);
- std::shared_ptr<EncodingRegistry> encoding_registry(
- encoding_parse_result.first.release());
+ // Parse the base64-encoded, serialized CobaltConfig in
+ // shipping_manager_test_config.h. This is generated from
+ // shipping_manager_test_config.yaml. Edit that yaml file to make changes. The
+ // variable name below, |cobalt_config_base64|, must match what is
+ // specified in the build files.
+ std::unique_ptr<ClientConfig> client_config =
+ ClientConfig::CreateFromCobaltConfigBase64(cobalt_config_base64);
+ EXPECT_NE(nullptr, client_config);
return std::shared_ptr<ProjectContext>(new ProjectContext(
- kCustomerId, kProjectId, metric_registry, encoding_registry));
+ kCustomerId, kProjectId,
+ std::shared_ptr<ClientConfig>(client_config.release())));
}
class FakeSystemData : public SystemDataInterface {
diff --git a/encoder/shipping_manager_test_config.yaml b/encoder/shipping_manager_test_config.yaml
new file mode 100644
index 0000000..0281e44
--- /dev/null
+++ b/encoder/shipping_manager_test_config.yaml
@@ -0,0 +1,30 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+################################################################################
+# This file contains the Metrics and EncodingConfigs used in
+# shipping_manager_test.cc
+#
+# It is compiled into shipping_manager_test_config.h which is included into the
+# test.
+################################################################################
+
+################################################################################
+# Metrics
+################################################################################
+metric_configs:
+# Metric 1 has one string part, and local time_zone_policy.
+- id: 1
+ time_zone_policy: UTC
+ parts:
+ "Part1":
+
+################################################################################
+# EncodingConfigs
+################################################################################
+encoding_configs:
+
+# EncodingConfig 1 is the NoOp encoding.
+- id: 1
+ no_op_encoding: