blob: 3882063e4fdb8e0b32f0e9cd24b0b0bb7f0e3507 [file] [log] [blame]
// 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.
#include "config/client_config.h"
#include <memory>
#include <string>
#include <utility>
#include "./logging.h"
#include "config/cobalt_config.pb.h"
#include "config/encoding_config.h"
#include "config/encodings.pb.h"
#include "config/metric_config.h"
#include "config/metrics.pb.h"
#include "third_party/googletest/googletest/include/gtest/gtest.h"
#include "util/crypto_util/base64.h"
namespace cobalt {
namespace config {
namespace {
void AddMetric(int id, CobaltConfig* cobalt_config) {
Metric* metric = cobalt_config->add_metric_configs();
metric->set_customer_id(id);
metric->set_project_id(id);
metric->set_id(id);
}
void AddEncodingConfig(int id, CobaltConfig* cobalt_config) {
EncodingConfig* encoding_config = cobalt_config->add_encoding_configs();
encoding_config->set_customer_id(id);
encoding_config->set_project_id(id);
encoding_config->set_id(id);
}
} // namespace
TEST(ClientConfigTest, CreateFromCobaltConfigBytes) {
std::string cobalt_config_bytes;
CobaltConfig cobalt_config;
AddMetric(42, &cobalt_config);
AddMetric(43, &cobalt_config);
AddEncodingConfig(42, &cobalt_config);
AddEncodingConfig(43, &cobalt_config);
ASSERT_TRUE(cobalt_config.SerializeToString(&cobalt_config_bytes));
auto client_config =
ClientConfig::CreateFromCobaltConfigBytes(cobalt_config_bytes);
ASSERT_NE(nullptr, client_config);
EXPECT_EQ(nullptr, client_config->EncodingConfig(41, 41, 41));
EXPECT_NE(nullptr, client_config->EncodingConfig(42, 42, 42));
EXPECT_NE(nullptr, client_config->EncodingConfig(43, 43, 43));
EXPECT_EQ(nullptr, client_config->Metric(41, 41, 41));
EXPECT_NE(nullptr, client_config->Metric(42, 42, 42));
EXPECT_NE(nullptr, client_config->Metric(43, 43, 43));
}
TEST(ClientConfigTest, CreateFromCobaltConfigBase64) {
std::string cobalt_config_bytes;
CobaltConfig cobalt_config;
AddMetric(42, &cobalt_config);
AddMetric(43, &cobalt_config);
AddEncodingConfig(42, &cobalt_config);
AddEncodingConfig(43, &cobalt_config);
ASSERT_TRUE(cobalt_config.SerializeToString(&cobalt_config_bytes));
std::string cobalt_config_base64;
crypto::Base64Encode(cobalt_config_bytes, &cobalt_config_base64);
auto client_config =
ClientConfig::CreateFromCobaltConfigBase64(cobalt_config_base64);
ASSERT_NE(nullptr, client_config);
EXPECT_EQ(nullptr, client_config->EncodingConfig(41, 41, 41));
EXPECT_NE(nullptr, client_config->EncodingConfig(42, 42, 42));
EXPECT_NE(nullptr, client_config->EncodingConfig(43, 43, 43));
EXPECT_EQ(nullptr, client_config->Metric(41, 41, 41));
EXPECT_NE(nullptr, client_config->Metric(42, 42, 42));
EXPECT_NE(nullptr, client_config->Metric(43, 43, 43));
}
} // namespace config
} // namespace cobalt