LCOV - code coverage report
Current view: top level - tests - aggregator_suite.cpp (source / functions) Hit Total Coverage
Test: wrtstat-coverage.info Lines: 55 55 100.0 %
Date: 2019-09-13 Functions: 13 13 100.0 %

          Line data    Source code
       1             : #include <fas/testing.hpp>
       2             : #include <wrtstat/aggregator.hpp>
       3             : #include <numeric>
       4             : 
       5             : namespace {
       6             : 
       7           3 : UNIT(aggregator1, "")
       8             : {
       9             :   using namespace fas::testing;
      10             :   using namespace wrtstat;
      11             : 
      12           1 :   aggregator_options opt;
      13           1 :   opt.reducer_levels = 1;
      14           1 :   opt.reducer_limit  = 10;
      15           1 :   opt.resolution = resolutions::none;
      16           1 :   opt.aggregation_step_ts = 10;
      17           1 :   std::vector<int> values;
      18           2 :   aggregator ag(0, opt);
      19         101 :   for (int i = 0 ; i < 100; i++)
      20             :   {
      21         100 :     t << is_true<expect>( ag.add(i, i, 1) ) << FAS_FL;
      22         100 :     values.push_back(i);
      23             :   }
      24             :   
      25             : 
      26           1 :   ag.separate(100, nullptr, true);
      27           1 :   t << equal<expect, size_t>( ag.size(), 10 ) << FAS_FL;
      28          11 :   for (int i = 0 ; i < 10; i++)
      29             :   {
      30          10 :     int avg = std::accumulate(values.begin() + i*10, values.begin() + (i+1)*10 , 0) / 10;
      31          10 :     auto s = ag.pop();
      32          10 :     t << is_true<assert>( s!=nullptr ) << "i=" << i << FAS_FL;
      33          10 :     t << stop;
      34          10 :     t << equal<expect>( s->ts, i*10 ) << "i=" << FAS_FL;
      35          10 :     t << equal<expect, size_t>( s->lossy,   0  ) << "i=" << FAS_FL;
      36          10 :     t << equal<expect, size_t>( s->count,   10 ) << "i=" << FAS_FL;
      37          10 :     t << equal<expect, size_t>( s->min,     0 + i*10 ) << "i=" << FAS_FL;
      38          10 :     t << equal<expect, size_t>( s->perc50,  5 + i*10 ) << "i=" << FAS_FL;
      39          10 :     t << equal<expect, size_t>( s->perc80,  8 + i*10 ) << "i=" << FAS_FL;
      40          10 :     t << equal<expect, size_t>( s->perc95,  9 + i*10 ) << "i=" << FAS_FL;
      41          10 :     t << equal<expect, size_t>( s->perc99,  9 + i*10 ) << "i=" << FAS_FL;
      42          10 :     t << equal<expect, size_t>( s->perc100, 9 + i*10 ) << "i=" << FAS_FL;
      43          10 :     t << equal<expect, size_t>( s->max,     9 + i*10 ) << "i=" << FAS_FL;
      44          10 :     t << equal<expect, size_t>( s->avg,     avg ) << "i=" << FAS_FL;
      45             :   }
      46             : 
      47           2 :   t << nothing;
      48           1 : }
      49             : 
      50           3 : UNIT(aggregator2, "")
      51             : {
      52             :   using namespace fas::testing;
      53             :   using namespace wrtstat;
      54             : 
      55           1 :   aggregator_options opt;
      56           1 :   opt.reducer_levels = 1;
      57           1 :   opt.reducer_limit  = 8;
      58           1 :   opt.resolution = resolutions::none;
      59           1 :   opt.aggregation_step_ts = 10;
      60             : 
      61           1 :   auto ag = std::make_shared<aggregator_mt>(0, opt);
      62           2 :   auto meter = ag->create_simple_pusher(nullptr);
      63         101 :   for (int i = 0 ; i < 100; i++)
      64             :   {
      65         100 :     meter(i, i, 1);
      66         100 :     t << equal<expect, size_t>( ag->size(), i/10 ) << FAS_FL;
      67             :   }
      68             : 
      69           1 :   ag->separate(100, nullptr, true);
      70           1 :   t << equal<expect, size_t>( ag->size(), 10 ) << FAS_FL;
      71          11 :   for (int i = 0 ; i < 10; i++)
      72             :   {
      73          10 :     auto s = ag->pop();
      74          10 :     t << is_true<assert>( s!=nullptr ) << "i=" << i << FAS_FL;
      75          10 :     t << stop;
      76          10 :     t << equal<expect>( s->ts, i*10 ) << "i=" << FAS_FL;
      77             :   }
      78             : 
      79           1 :   t << warning("TOOD test for aggregate_current()") <<FAS_FL;
      80           1 :   ag->aggregate_current();  
      81             :   
      82           2 :   t << nothing;
      83           1 : }
      84             : 
      85             : }
      86             : 
      87           1 : BEGIN_SUITE(aggregator, "")
      88             :   ADD_UNIT(aggregator1)
      89             :   ADD_UNIT(aggregator2)
      90           7 : END_SUITE(aggregator)

Generated by: LCOV version 1.10