summaryrefslogtreecommitdiff
path: root/src/components/utils/test/messagemeter_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/utils/test/messagemeter_test.cc')
-rw-r--r--src/components/utils/test/messagemeter_test.cc241
1 files changed, 112 insertions, 129 deletions
diff --git a/src/components/utils/test/messagemeter_test.cc b/src/components/utils/test/messagemeter_test.cc
index 6c13ab345e..69db658542 100644
--- a/src/components/utils/test/messagemeter_test.cc
+++ b/src/components/utils/test/messagemeter_test.cc
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2014, Ford Motor Company
+* Copyright (c) 2015, Ford Motor Company
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -40,44 +40,40 @@
#include "utils/messagemeter.h"
#include "utils/date_time.h"
-namespace test {
-namespace components {
-namespace utils {
+namespace test {
+namespace components {
+namespace utils {
// Pair of values <second, msecond>
typedef std::pair<int, int> TimePair;
-const TimePair testing_time_pairs[] = { TimePair(0, 50),
- TimePair(0, 100),
- TimePair(0, 200),
- TimePair(0, 500),
- TimePair(0, 900),
- TimePair(1, 0),
- TimePair(1, 500) };
-
-class MessageMeterTest: public ::testing::TestWithParam<TimePair> {
+const TimePair testing_time_pairs[] = {TimePair(0, 50),
+ TimePair(0, 100),
+ TimePair(0, 200),
+ TimePair(0, 500),
+ TimePair(0, 900),
+ TimePair(1, 0),
+ TimePair(1, 500)};
+
+class MessageMeterTest : public ::testing::TestWithParam<TimePair> {
protected:
void SetUp() OVERRIDE {
- usecs = date_time::DateTime::MICROSECONDS_IN_MILLISECONDS;
+ usecs = date_time::DateTime::MICROSECONDS_IN_MILLISECOND;
id1 = 0x0;
id2 = 0xABCDEF;
id3 = 0xFEBCDA;
const TimePair time_pair = GetParam();
- EXPECT_GT(usecs,
- time_pair.second) << "Wrong time (msecs) value";
+ EXPECT_GT(usecs, time_pair.second) << "Wrong time (msecs) value";
time_range.tv_sec = time_pair.first;
time_range.tv_usec = time_pair.second * usecs;
- EXPECT_LT(0,
- date_time::DateTime::getuSecs(time_range))
+ EXPECT_LT(0, date_time::DateTime::getuSecs(time_range))
<< "Wrong test case with null range value";
meter.set_time_range(time_range);
- // Get range in msec less than original for correct waitng in tests
- time_range_msecs = date_time::DateTime::getmSecs(time_range) * 0.95;
- }
- void TearDown() OVERRIDE {
+ time_range_msecs = date_time::DateTime::getmSecs(time_range);
}
+ void TearDown() OVERRIDE {}
::utils::MessageMeter<int> meter;
TimevalStruct time_range = {0, 0};
int64_t time_range_msecs;
@@ -87,29 +83,28 @@ class MessageMeterTest: public ::testing::TestWithParam<TimePair> {
TEST(MessageMeterTest, DefaultTimeRange) {
const ::utils::MessageMeter<int> default_meter;
- const TimevalStruct time_second {1, 0};
+ const TimevalStruct time_second{1, 0};
EXPECT_EQ(time_second, default_meter.time_range());
}
TEST(MessageMeterTest, TimeRangeSetter) {
::utils::MessageMeter<int> meter;
- TimevalStruct time_range {0, 0};
+ TimevalStruct time_range{0, 0};
const int test_count_secs = 1000;
// Skip 1000th msec value as wrong for TimevalStruct
const int test_count_msecs = 999;
for (int sec = test_count_secs; sec >= 0; --sec) {
for (int msec = test_count_msecs; msec >= 0; --msec) {
time_range.tv_sec = sec;
- time_range.tv_usec = msec * date_time::DateTime::MICROSECONDS_IN_MILLISECONDS;
+ time_range.tv_usec =
+ msec * date_time::DateTime::MICROSECONDS_IN_MILLISECOND;
// Setter TimevalStruct
meter.set_time_range(time_range);
- EXPECT_EQ(time_range,
- meter.time_range()) << sec << "." << msec << " sec";
+ EXPECT_EQ(time_range, meter.time_range()) << sec << "." << msec << " sec";
// Setter mSecs
meter.set_time_range(sec * date_time::DateTime::MILLISECONDS_IN_SECOND +
msec);
- EXPECT_EQ(time_range,
- meter.time_range()) << sec << "." << msec << " sec";
+ EXPECT_EQ(time_range, meter.time_range()) << sec << "." << msec << " sec";
}
}
}
@@ -118,160 +113,148 @@ TEST(MessageMeterTest, AddingWithNullTimeRange) {
::utils::MessageMeter<int> meter;
const int id1 = 1;
const int id2 = 2;
- const TimevalStruct null_time_range {0, 0};
+ const TimevalStruct null_time_range{0, 0};
meter.set_time_range(null_time_range);
for (int i = 0; i < 10000; ++i) {
// 1st Connection
- EXPECT_EQ(0u,
- meter.TrackMessage(id1));
- EXPECT_EQ(0u,
- meter.Frequency(id1));
+ EXPECT_EQ(0u, meter.TrackMessage(id1));
+ EXPECT_EQ(0u, meter.Frequency(id1));
// 2d Connection
- EXPECT_EQ(0u,
- meter.TrackMessage(id2));
- EXPECT_EQ(0u,
- meter.Frequency(id2));
+ EXPECT_EQ(0u, meter.TrackMessage(id2));
+ EXPECT_EQ(0u, meter.Frequency(id2));
}
}
-TEST_P(MessageMeterTest, AddingOverPeriod) {
+TEST_P(MessageMeterTest, TrackMessage_AddingOverPeriod_CorrectCountOfMessages) {
size_t messages = 0;
const TimevalStruct start_time = date_time::DateTime::getCurrentTime();
// Add messages for less range period
- while (date_time::DateTime::calculateTimeSpan(start_time)
- < time_range_msecs) {
+ int64_t time_span;
+ while ((time_span = date_time::DateTime::calculateTimeSpan(start_time)) <
+ time_range_msecs) {
++messages;
- EXPECT_EQ(messages,
- meter.TrackMessage(id1));
- EXPECT_EQ(messages,
- meter.Frequency(id1));
+
+ size_t tracked_frequency = meter.TrackMessage(id1);
+ size_t frequency = meter.Frequency(id1);
+
+ EXPECT_GE(messages, tracked_frequency)
+ << "Tracked messages can`t be over cycles.";
+
+ if (messages > frequency) {
+ EXPECT_GE(time_range_msecs, time_span);
+ break;
+ }
+ EXPECT_EQ(tracked_frequency, frequency);
}
}
-TEST_P(MessageMeterTest, AddingOverPeriod_MultiIds) {
+TEST_P(MessageMeterTest,
+ TrackMessage_AddingOverPeriodMultiIds_CorrectCountOfMessages) {
size_t messages = 0;
const TimevalStruct start_time = date_time::DateTime::getCurrentTime();
// Add messages for less range period
- while (date_time::DateTime::calculateTimeSpan(start_time)
- < time_range_msecs) {
+ int64_t time_span;
+ while ((time_span = date_time::DateTime::calculateTimeSpan(start_time)) <
+ time_range_msecs) {
++messages;
- // 1st Connection
- EXPECT_EQ(messages,
- meter.TrackMessage(id1));
- EXPECT_EQ(messages,
- meter.Frequency(id1));
- // 2d Connection
- EXPECT_EQ(messages,
- meter.TrackMessage(id2));
- EXPECT_EQ(messages,
- meter.Frequency(id2));
-
- // 3d Connection
- EXPECT_EQ(messages,
- meter.TrackMessage(id3));
- EXPECT_EQ(messages,
- meter.Frequency(id3));
+ size_t tracked_frequency_id1 = meter.TrackMessage(id1);
+ size_t tracked_frequency_id2 = meter.TrackMessage(id2);
+ size_t tracked_frequency_id3 = meter.TrackMessage(id3);
+ size_t frequency_id1 = meter.Frequency(id1);
+ size_t frequency_id2 = meter.Frequency(id2);
+ size_t frequency_id3 = meter.Frequency(id3);
+
+ EXPECT_GE(messages, tracked_frequency_id1)
+ << "Tracked messages can`t be over cycles.";
+ EXPECT_GE(messages, tracked_frequency_id2)
+ << "Tracked messages can`t be over cycles.";
+ EXPECT_GE(messages, tracked_frequency_id3)
+ << "Tracked messages can`t be over cycles.";
+
+ if (messages > frequency_id1 || messages > frequency_id2 ||
+ messages > frequency_id3) {
+ EXPECT_GE(time_range_msecs, time_span);
+ break;
+ }
+ EXPECT_EQ(tracked_frequency_id1, frequency_id1);
+ EXPECT_EQ(tracked_frequency_id2, frequency_id2);
+ EXPECT_EQ(tracked_frequency_id3, frequency_id3);
}
}
-TEST_P(MessageMeterTest, CountingOverPeriod) {
+TEST_P(MessageMeterTest, Frequency_CountingOverPeriod_CorrectCountOfMessages) {
const size_t one_message = 1;
const TimevalStruct start_time = date_time::DateTime::getCurrentTime();
- EXPECT_EQ(one_message,
- meter.TrackMessage(id1));
- EXPECT_EQ(one_message,
- meter.TrackMessage(id2));
- EXPECT_EQ(one_message,
- meter.TrackMessage(id3));
- const int sleep_usecs = 500;
+ EXPECT_EQ(one_message, meter.TrackMessage(id1));
+ EXPECT_EQ(one_message, meter.TrackMessage(id2));
+ EXPECT_EQ(one_message, meter.TrackMessage(id3));
+
// Check messages count over period
- while (date_time::DateTime::calculateTimeSpan(start_time)
- < time_range_msecs) {
- usleep(sleep_usecs);
- EXPECT_EQ(one_message,
- meter.Frequency(id1));
- EXPECT_EQ(one_message,
- meter.Frequency(id2));
- EXPECT_EQ(one_message,
- meter.Frequency(id3));
+ int64_t time_span;
+ while ((time_span = date_time::DateTime::calculateTimeSpan(start_time)) <
+ time_range_msecs) {
+ usleep(time_range_msecs);
+
+ if (one_message != meter.Frequency(id1) ||
+ one_message != meter.Frequency(id2) ||
+ one_message != meter.Frequency(id3)) {
+ EXPECT_GE(time_range_msecs, time_span);
+ break;
+ }
}
}
TEST_P(MessageMeterTest, CountingOutOfPeriod) {
const size_t one_message = 1;
- EXPECT_EQ(one_message,
- meter.TrackMessage(id1));
- EXPECT_EQ(one_message,
- meter.TrackMessage(id2));
- EXPECT_EQ(one_message,
- meter.TrackMessage(id3));
+ EXPECT_EQ(one_message, meter.TrackMessage(id1));
+ EXPECT_EQ(one_message, meter.TrackMessage(id2));
+ EXPECT_EQ(one_message, meter.TrackMessage(id3));
// sleep more than time range
usleep(time_range_msecs * usecs * 1.1);
- EXPECT_EQ(0u,
- meter.Frequency(id1));
- EXPECT_EQ(0u,
- meter.Frequency(id2));
- EXPECT_EQ(0u,
- meter.Frequency(id3));
+ EXPECT_EQ(0u, meter.Frequency(id1));
+ EXPECT_EQ(0u, meter.Frequency(id2));
+ EXPECT_EQ(0u, meter.Frequency(id3));
}
TEST_P(MessageMeterTest, ClearId) {
const size_t one_message = 1;
- EXPECT_EQ(one_message,
- meter.TrackMessage(id1));
- EXPECT_EQ(one_message,
- meter.TrackMessage(id2));
- EXPECT_EQ(one_message,
- meter.TrackMessage(id3));
+ EXPECT_EQ(one_message, meter.TrackMessage(id1));
+ EXPECT_EQ(one_message, meter.TrackMessage(id2));
+ EXPECT_EQ(one_message, meter.TrackMessage(id3));
meter.RemoveIdentifier(id1);
- EXPECT_EQ(0u,
- meter.Frequency(id1));
- EXPECT_EQ(one_message,
- meter.Frequency(id2));
- EXPECT_EQ(one_message,
- meter.Frequency(id3));
+ EXPECT_EQ(0u, meter.Frequency(id1));
+ EXPECT_EQ(one_message, meter.Frequency(id2));
+ EXPECT_EQ(one_message, meter.Frequency(id3));
meter.RemoveIdentifier(id2);
- EXPECT_EQ(0u,
- meter.Frequency(id1));
- EXPECT_EQ(0u,
- meter.Frequency(id2));
- EXPECT_EQ(one_message,
- meter.Frequency(id3));
+ EXPECT_EQ(0u, meter.Frequency(id1));
+ EXPECT_EQ(0u, meter.Frequency(id2));
+ EXPECT_EQ(one_message, meter.Frequency(id3));
meter.RemoveIdentifier(id3);
- EXPECT_EQ(0u,
- meter.Frequency(id1));
- EXPECT_EQ(0u,
- meter.Frequency(id2));
- EXPECT_EQ(0u,
- meter.Frequency(id3));
+ EXPECT_EQ(0u, meter.Frequency(id1));
+ EXPECT_EQ(0u, meter.Frequency(id2));
+ EXPECT_EQ(0u, meter.Frequency(id3));
}
TEST_P(MessageMeterTest, ClearIds) {
const size_t one_message = 1;
- EXPECT_EQ(one_message,
- meter.TrackMessage(id1));
- EXPECT_EQ(one_message,
- meter.TrackMessage(id2));
- EXPECT_EQ(one_message,
- meter.TrackMessage(id3));
+ EXPECT_EQ(one_message, meter.TrackMessage(id1));
+ EXPECT_EQ(one_message, meter.TrackMessage(id2));
+ EXPECT_EQ(one_message, meter.TrackMessage(id3));
meter.ClearIdentifiers();
- EXPECT_EQ(0u,
- meter.Frequency(id2));
- EXPECT_EQ(0u,
- meter.Frequency(id2));
- EXPECT_EQ(0u,
- meter.Frequency(id3));
+ EXPECT_EQ(0u, meter.Frequency(id2));
+ EXPECT_EQ(0u, meter.Frequency(id2));
+ EXPECT_EQ(0u, meter.Frequency(id3));
}
INSTANTIATE_TEST_CASE_P(MessageMeterTestCase,