WSStatisticsManagerTest.java 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package cz.senslog.analyzer.ws.manager;
  2. import cz.senslog.analyzer.domain.*;
  3. import cz.senslog.analyzer.storage.permanent.repository.StatisticsConfigRepository;
  4. import cz.senslog.analyzer.storage.permanent.repository.StatisticsRepository;
  5. import cz.senslog.analyzer.ws.dto.SensorStatisticsData;
  6. import cz.senslog.analyzer.util.Tuple;
  7. import org.junit.jupiter.api.BeforeEach;
  8. import org.junit.jupiter.api.Test;
  9. import java.time.LocalDateTime;
  10. import java.time.OffsetDateTime;
  11. import java.time.ZoneOffset;
  12. import java.time.temporal.ChronoUnit;
  13. import java.util.Arrays;
  14. import java.util.HashSet;
  15. import java.util.List;
  16. import static cz.senslog.analyzer.domain.AggregationType.DOUBLE;
  17. import static java.time.temporal.ChronoUnit.*;
  18. import static java.util.Collections.singletonList;
  19. import static org.junit.jupiter.api.Assertions.assertEquals;
  20. import static org.mockito.ArgumentMatchers.*;
  21. import static org.mockito.Mockito.mock;
  22. import static org.mockito.Mockito.when;
  23. class WSStatisticsManagerTest {
  24. @BeforeEach
  25. void setUp() {
  26. }
  27. private static WSStatisticsManager createManager(Group group, List<DoubleStatistics> doubleStatistics) {
  28. StatisticsConfigRepository.Special specialRepo = mock(StatisticsConfigRepository.Special.class);
  29. when(specialRepo.getGroupIdByUnitSensor(anyLong(), anyLong(), anyLong())).thenReturn(group.getId());
  30. StatisticsConfigRepository configRepo = mock(StatisticsConfigRepository.class);
  31. when(configRepo.special()).thenReturn(specialRepo);
  32. StatisticsRepository statisticsRepo = mock(StatisticsRepository.class);
  33. when(statisticsRepo.getByTimeRange(anyLong(), any(Tuple.class))).thenReturn(doubleStatistics);
  34. return new WSStatisticsManager(statisticsRepo, configRepo);
  35. }
  36. @Test
  37. void loadData() {
  38. long unitId = 0;
  39. long sensorId = 0;
  40. Group group = new Group(0, 3600, true, DOUBLE,
  41. new HashSet<>(singletonList(new Sensor(unitId, sensorId)))
  42. );
  43. LocalDateTime startDate = LocalDateTime.of(2020, 1, 1, 1, 1);
  44. Timestamp from = Timestamp.of(OffsetDateTime.of(startDate, ZoneOffset.UTC));
  45. Timestamp to = from.plus(1, ChronoUnit.MONTHS);
  46. IntervalGroup intervalGroup = IntervalGroup.DAY;
  47. WSStatisticsManager manager = createManager(group, Arrays.asList(
  48. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(1, DAYS).plus(1, HOURS)),
  49. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(1, DAYS).plus(22, HOURS)),
  50. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(2, DAYS).plus(1, HOURS)),
  51. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(2, DAYS).plus(22, HOURS)),
  52. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(3, DAYS).plus(1, HOURS)),
  53. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(3, DAYS).plus(22, HOURS)),
  54. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(4, DAYS).plus(1, HOURS)),
  55. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(4, DAYS).plus(22, HOURS)),
  56. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(5, DAYS).plus(1, HOURS)),
  57. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(5, DAYS).plus(22, HOURS)),
  58. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(10, DAYS).plus(1, HOURS)),
  59. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(10, DAYS).plus(22, HOURS)),
  60. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(11, DAYS).plus(1, HOURS)),
  61. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(11, DAYS).plus(22, HOURS)),
  62. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(12, DAYS).plus(1, HOURS)),
  63. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(12, DAYS).plus(22, HOURS)),
  64. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(13, DAYS).plus(1, HOURS)),
  65. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(13, DAYS).plus(22, HOURS)),
  66. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(14, DAYS).plus(1, HOURS)),
  67. new DoubleStatistics(group, 2, 10, 20, 30, from.plus(14, DAYS).plus(22, HOURS))
  68. )
  69. );
  70. List<SensorStatisticsData> dataList = manager.loadData(unitId, sensorId, from, to, intervalGroup);
  71. assertEquals(1, dataList.size());
  72. SensorStatisticsData sensorData = dataList.get(0);
  73. assertEquals(10, sensorData.getData().size());
  74. SensorStatisticsData.Data statisticsAggr = sensorData.getStatistics();
  75. assertEquals(600, statisticsAggr.getSum());
  76. assertEquals(10, statisticsAggr.getMin());
  77. assertEquals(20, statisticsAggr.getMax());
  78. assertEquals(15, statisticsAggr.getAvg());
  79. }
  80. }