metric_serialization_test.cpp
Go to the documentation of this file.
1 //
2 // Created by root on 6/19/19.
3 //
4 
6 #include <gtest/gtest.h>
7 #include <aws/core/utils/StringUtils.h>
8 #include <aws/monitoring/model/MetricDatum.h>
11 
12 using namespace Aws::CloudWatchMetrics::Utils;
13 using namespace Aws::CloudWatch::Model;
14 
15 class TestMetricSerialization : public ::testing::Test
16 {
17 protected:
19 
20  void SetUp() override {
21  metric_datum = MetricDatum();
22  }
23 
24  void TearDown() override {
25  }
26 
27 };
28 
29 TEST_F(TestMetricSerialization, deserialize_returns_metric_datum) {
30  const Aws::String mock_serialized_metric_datum{
31  R"({"timestamp": 5, "metric_name": "awesomeness", "storage_resolution": 25, "unit": 1})"
32  };
33 
34  MetricDatum result;
35  EXPECT_NO_THROW(result = deserializeMetricDatum(mock_serialized_metric_datum));
36  Aws::Utils::DateTime ts(static_cast<int64_t>(5));
37  EXPECT_EQ(result.GetTimestamp(), ts);
38  EXPECT_EQ(result.GetMetricName(), "awesomeness");
39  auto expected_counts = Aws::Vector<double>();
40  EXPECT_EQ(result.GetStorageResolution(), 25);
41  EXPECT_EQ(result.GetUnit(), Aws::CloudWatch::Model::StandardUnit::Seconds);
42 }
43 
44 TEST_F(TestMetricSerialization, deserialize_works_with_minimum_data) {
45  const Aws::String min_json = R"({"metric_name": "minimum", "timestamp": 10})";
46  MetricDatum result;
47  EXPECT_NO_THROW(result = deserializeMetricDatum(min_json));
48  EXPECT_EQ(result.GetMetricName(), "minimum");
49 }
50 
51 TEST_F(TestMetricSerialization, deserialize_fail_throws_runtime_exception) {
52  const Aws::String bad_json = "not json";
53  EXPECT_THROW(deserializeMetricDatum(bad_json), std::invalid_argument);
54  const Aws::String json_missing_values = "{}";
55  EXPECT_THROW(deserializeMetricDatum(json_missing_values), std::invalid_argument);
56 }
57 
58 TEST_F(TestMetricSerialization, serialize_returns_valid_string) {
59  const Aws::Utils::DateTime ts = Aws::Utils::DateTime::Now();
60  const Aws::String metric_name("cerealized");
61  const Aws::Vector<double> counts = {111, 222};
62  const int storage_resolution = 25;
63  const auto metric_unit = Aws::CloudWatch::Model::StandardUnit::Seconds;
64  const double value = 42;
65 
66  metric_datum.SetTimestamp(ts);
67  metric_datum.SetMetricName(metric_name);
68  metric_datum.SetStorageResolution(storage_resolution);
69  metric_datum.SetUnit(metric_unit);
70  metric_datum.SetValue(value);
71  Aws::String serialized_metric_datum;
72  EXPECT_NO_THROW(serialized_metric_datum = serializeMetricDatum(metric_datum));
73  MetricDatum result;
74  EXPECT_NO_THROW(result = deserializeMetricDatum(serialized_metric_datum));
75  EXPECT_EQ(result.GetTimestamp().Millis(), ts.Millis());
76  EXPECT_EQ(result.GetMetricName(), metric_name);
77  EXPECT_EQ(result.GetStorageResolution(), storage_resolution);
78  EXPECT_EQ(result.GetUnit(), metric_unit);
79  EXPECT_EQ(result.GetValue(), value);
80 }
TEST_F(TestMetricSerialization, deserialize_returns_metric_datum)
Aws::String serializeMetricDatum(const MetricDatum &datum)
Aws::CloudWatch::Model::MetricDatum MetricDatum
Definition: definitions.h:22
MetricDatum deserializeMetricDatum(const Aws::String &basic_string)


cloudwatch_metrics_common
Author(s): AWS RoboMaker
autogenerated on Fri May 7 2021 02:18:25