mirror of
https://github.com/emqx/neuron.git
synced 2026-10-17 04:40:42 +08:00
46 lines
1.2 KiB
C++
46 lines
1.2 KiB
C++
#include <gtest/gtest.h>
|
|
|
|
#include "utils/log.h"
|
|
#include "utils/rolling_counter.h"
|
|
|
|
zlog_category_t *neuron = NULL;
|
|
TEST(RollingCounterTest, neu_rolling_counter_inc)
|
|
{
|
|
uint64_t ts = 0;
|
|
neu_rolling_counter_t *counter = neu_rolling_counter_new(4000);
|
|
EXPECT_NE(nullptr, counter);
|
|
|
|
for (int i = 1; i <= 4; ++i) {
|
|
ts += 1000;
|
|
EXPECT_EQ(i, neu_rolling_counter_inc(counter, ts, 1));
|
|
}
|
|
|
|
// wrap around
|
|
for (int i = 1; i <= 4; ++i) {
|
|
ts += 1000;
|
|
EXPECT_EQ(4, neu_rolling_counter_inc(counter, ts, 1));
|
|
}
|
|
|
|
// increment without time stamp update
|
|
EXPECT_EQ(4, neu_rolling_counter_value(counter));
|
|
for (int i = 1; i <= 10; ++i) {
|
|
EXPECT_EQ(4 + i, neu_rolling_counter_inc(counter, ts, 1));
|
|
}
|
|
|
|
EXPECT_EQ(4 + 10, neu_rolling_counter_value(counter));
|
|
|
|
// stale value will be clean
|
|
ts += 4000;
|
|
EXPECT_EQ(0, neu_rolling_counter_inc(counter, ts, 0));
|
|
|
|
neu_rolling_counter_free(counter);
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
zlog_init("./config/dev.conf");
|
|
neuron = zlog_get_category("neuron");
|
|
::testing::InitGoogleTest(&argc, argv);
|
|
return RUN_ALL_TESTS();
|
|
}
|