@@ -179,7 +179,7 @@ class PipelineTest : public ::testing::Test {
179
179
std::shared_ptr<Aws::DataFlow::QueueMonitor<TaskPtr<MetricDatumCollection>>>queue_monitor;
180
180
};
181
181
182
- MetricObject createTestMetricObject (
182
+ MetricObject createTestMetricObjectWithValue (
183
183
const std::string & name,
184
184
const double value = 2.42 ,
185
185
const std::string & unit = " gigawatts" ,
@@ -190,6 +190,23 @@ MetricObject createTestMetricObject(
190
190
return MetricObject {name, value, unit, timestamp, dimensions, storage_resolution};
191
191
}
192
192
193
+ MetricObject createTestMetricObjectWithStatisticValues (
194
+ const std::string & name,
195
+ const double value = 2.42 ,
196
+ const std::string & unit = " gigawatts" ,
197
+ const int64_t timestamp = 1234 ,
198
+ const std::map<std::string, std::string> & dimensions = std::map<std::string, std::string>(),
199
+ const int storage_resolution = 60
200
+ ) {
201
+ std::map<StatisticValuesType, double > statistic_values = {
202
+ {StatisticValuesType::MINIMUM, value},
203
+ {StatisticValuesType::MAXIMUM, value},
204
+ {StatisticValuesType::SUM, value},
205
+ {StatisticValuesType::SAMPLE_COUNT, 1.0 }
206
+ };
207
+ return MetricObject{name, statistic_values, unit, timestamp, dimensions, storage_resolution};
208
+ }
209
+
193
210
TEST_F (PipelineTest, Sanity) {
194
211
ASSERT_TRUE (true );
195
212
}
@@ -198,23 +215,51 @@ TEST(MetricPipelineTest, TestCreateMetricObject) {
198
215
199
216
std::string name (" HeWhoShallNotBenamed" );
200
217
201
- auto object = createTestMetricObject (name);
202
- auto empty = std::map<std::string, std::string>();
203
-
218
+ auto object = createTestMetricObjectWithValue (name);
204
219
EXPECT_EQ (name, object.metric_name );
205
220
EXPECT_EQ (2.42 , object.value );
206
221
EXPECT_EQ (" gigawatts" , object.unit );
207
222
EXPECT_EQ (1234 , object.timestamp );
208
- EXPECT_EQ (empty, object.dimensions );
223
+ EXPECT_TRUE (object.statistic_values .empty ());
224
+ EXPECT_TRUE (object.dimensions .empty ());
209
225
EXPECT_EQ (60 , object.storage_resolution );
210
226
}
211
227
228
+ TEST_F (PipelineTest, TestConvertToBatchedData) {
229
+
230
+ const std::string metric_name = " test_object" ;
231
+ const std::string dimension_name = " blah" ;
232
+ const std::string dimension_value = " blah blah" ;
233
+
234
+ auto object = createTestMetricObjectWithStatisticValues (metric_name);
235
+ object.unit = " percent" ;
236
+ object.statistic_values .clear ();
237
+ object.statistic_values [StatisticValuesType::SUM] = 111.1 ;
238
+ object.statistic_values [StatisticValuesType::SAMPLE_COUNT] = 24 ;
239
+ object.dimensions [dimension_name] = dimension_value;
240
+
241
+ auto datum = cw_service->convertInputToBatched (object);
242
+ EXPECT_EQ (metric_name, datum.GetMetricName ().c_str ());
243
+ EXPECT_EQ (Aws::CloudWatch::Model::StandardUnit::Percent, datum.GetUnit ());
244
+ EXPECT_EQ (1234 , datum.GetTimestamp ().Millis ());
245
+ EXPECT_EQ (60 , datum.GetStorageResolution ());
246
+
247
+ const auto & statistic_values = datum.GetStatisticValues ();
248
+ EXPECT_DOUBLE_EQ (24 , statistic_values.GetSampleCount ());
249
+ EXPECT_DOUBLE_EQ (111.1 , statistic_values.GetSum ());
250
+
251
+ const auto & dimensions = datum.GetDimensions ();
252
+ EXPECT_EQ (1u , dimensions.size ());
253
+ EXPECT_EQ (dimension_name, dimensions[0 ].GetName ().c_str ());
254
+ EXPECT_EQ (dimension_value, dimensions[0 ].GetValue ().c_str ());
255
+ }
256
+
212
257
/* *
213
258
* Simple Pipeline test to check that everything was hooked up correctly.
214
259
*/
215
260
TEST_F (PipelineTest, TestBatcherManualPublish) {
216
261
217
- auto toBatch = createTestMetricObject (std::string (" testMetric" ));
262
+ auto toBatch = createTestMetricObjectWithValue (std::string (" testMetric" ));
218
263
EXPECT_EQ (0u , batcher->getCurrentBatchSize ());
219
264
bool is_batched = cw_service->batchData (toBatch);
220
265
EXPECT_EQ (1u , batcher->getCurrentBatchSize ());
@@ -244,12 +289,12 @@ TEST_F(PipelineTest, TestBatcherManualPublish) {
244
289
*/
245
290
TEST_F (PipelineTest, TestBatcherManualPublishMultipleItems) {
246
291
247
- auto toBatch = createTestMetricObject (std::string (" TestBatcherManualPublish" ));
292
+ auto toBatch = createTestMetricObjectWithValue (std::string (" TestBatcherManualPublish" ));
248
293
bool is_batched = cw_service->batchData (toBatch);
249
294
EXPECT_TRUE (is_batched);
250
295
251
296
for (int i=99 ; i>0 ; i--) {
252
- auto batchedBottles = createTestMetricObject (std::to_string (99 ) + std::string (" bottles of beer on the wall" ));
297
+ auto batchedBottles = createTestMetricObjectWithValue (std::to_string (99 ) + std::string (" bottles of beer on the wall" ));
253
298
is_batched = cw_service->batchData (batchedBottles);
254
299
EXPECT_TRUE (is_batched);
255
300
}
@@ -281,7 +326,7 @@ TEST_F(PipelineTest, TestBatcherSize) {
281
326
EXPECT_EQ (PublisherState::UNKNOWN, test_publisher->getPublisherState ());
282
327
283
328
for (size_t i=1 ; i<size; i++) {
284
- auto toBatch = createTestMetricObject (std::string (" test message " ) + std::to_string (i));
329
+ auto toBatch = createTestMetricObjectWithValue (std::string (" test message " ) + std::to_string (i));
285
330
bool is_batched = cw_service->batchData (toBatch);
286
331
287
332
EXPECT_TRUE (is_batched);
@@ -291,7 +336,7 @@ TEST_F(PipelineTest, TestBatcherSize) {
291
336
}
292
337
293
338
ASSERT_EQ (size, batcher->getTriggerBatchSize ());
294
- auto toBatch = createTestMetricObject ((" test message " + std::to_string (size)));
339
+ auto toBatch = createTestMetricObjectWithValue ((" test message " + std::to_string (size)));
295
340
bool is_batched = cw_service->batchData (toBatch);
296
341
297
342
EXPECT_TRUE (is_batched);
@@ -312,7 +357,7 @@ TEST_F(PipelineTest, TestSinglePublisherFailureToFileManager) {
312
357
batcher->setMetricFileManager (fileManager);
313
358
314
359
// batch
315
- auto toBatch = createTestMetricObject (std::string (" TestBatcherManualPublish" ));
360
+ auto toBatch = createTestMetricObjectWithValue (std::string (" TestBatcherManualPublish" ));
316
361
EXPECT_EQ (0u , batcher->getCurrentBatchSize ());
317
362
bool is_batched = cw_service->batchData (toBatch);
318
363
EXPECT_EQ (1u , batcher->getCurrentBatchSize ());
@@ -346,7 +391,7 @@ TEST_F(PipelineTest, TestInvalidDataNotPassedToFileManager) {
346
391
batcher->setMetricFileManager (fileManager);
347
392
348
393
// batch
349
- auto toBatch = createTestMetricObject (std::string (" TestBatcherManualPublish" ));
394
+ auto toBatch = createTestMetricObjectWithValue (std::string (" TestBatcherManualPublish" ));
350
395
EXPECT_EQ (0u , batcher->getCurrentBatchSize ());
351
396
bool is_batched = cw_service->batchData (toBatch);
352
397
EXPECT_EQ (1u , batcher->getCurrentBatchSize ());
@@ -390,7 +435,7 @@ TEST_F(PipelineTest, TestPublisherIntermittant) {
390
435
batcher->setMetricFileManager (fileManager);
391
436
392
437
// batch
393
- auto toBatch = createTestMetricObject (std::string (" TestPublisherIntermittant" ));
438
+ auto toBatch = createTestMetricObjectWithValue (std::string (" TestPublisherIntermittant" ));
394
439
EXPECT_EQ (0u , batcher->getCurrentBatchSize ());
395
440
bool is_batched = cw_service->batchData (toBatch);
396
441
EXPECT_EQ (1u , batcher->getCurrentBatchSize ());
@@ -438,7 +483,7 @@ TEST_F(PipelineTest, TestBatchDataTooFast) {
438
483
EXPECT_EQ (max, batcher->getMaxAllowableBatchSize ());
439
484
440
485
for (size_t i=1 ; i<=max; i++) {
441
- auto toBatch = createTestMetricObject (std::string (" test message " + std::to_string (i)));
486
+ auto toBatch = createTestMetricObjectWithValue (std::string (" test message " + std::to_string (i)));
442
487
bool is_batched = cw_service->batchData (toBatch);
443
488
444
489
EXPECT_TRUE (is_batched);
@@ -447,7 +492,7 @@ TEST_F(PipelineTest, TestBatchDataTooFast) {
447
492
EXPECT_EQ (PublisherState::UNKNOWN, test_publisher->getPublisherState ());
448
493
}
449
494
450
- auto toBatch = createTestMetricObject (std::string (" iocaine powder" ));
495
+ auto toBatch = createTestMetricObjectWithValue (std::string (" iocaine powder" ));
451
496
bool b = cw_service->batchData (toBatch);
452
497
453
498
EXPECT_FALSE (b);
@@ -468,4 +513,4 @@ int main(int argc, char ** argv)
468
513
{
469
514
testing::InitGoogleTest (&argc, argv);
470
515
return RUN_ALL_TESTS ();
471
- }
516
+ }
0 commit comments