1
2
3
4
5
6
7
8
9
10
11 package psiprobe.beans.stats.providers;
12
13 import static org.junit.jupiter.api.Assertions.assertEquals;
14 import static org.mockito.Mockito.mock;
15
16 import com.codebox.bean.JavaBeanTester;
17
18 import jakarta.servlet.http.HttpServletRequest;
19
20 import java.util.List;
21
22 import org.jfree.data.xy.DefaultTableXYDataset;
23 import org.jfree.data.xy.XYDataItem;
24 import org.junit.jupiter.api.BeforeEach;
25 import org.junit.jupiter.api.Test;
26
27 import psiprobe.model.stats.StatsCollection;
28
29
30
31
32 class MultipleSeriesProviderTest {
33
34 private MultipleSeriesProvider provider;
35 private StatsCollection statsCollection;
36 private DefaultTableXYDataset dataset;
37
38
39
40
41 @Test
42 void javabeanTester() {
43 JavaBeanTester.builder(MultipleSeriesProvider.class).loadData().test();
44 }
45
46 @BeforeEach
47 void setUp() {
48 provider = new MultipleSeriesProvider();
49 provider.setStatNamePrefix("stat.app.");
50 provider.setTop(0);
51 provider.setMovingAvgFrame(0);
52 statsCollection = new StatsCollection();
53 dataset = new DefaultTableXYDataset();
54 }
55
56 @Test
57 void testPopulateAllSeries() {
58 List<XYDataItem> items1 = statsCollection.newStats("stat.app.app1", 10);
59 items1.add(new XYDataItem(1L, 100.0));
60 items1.add(new XYDataItem(2L, 200.0));
61
62 List<XYDataItem> items2 = statsCollection.newStats("stat.app.app2", 10);
63 items2.add(new XYDataItem(1L, 300.0));
64
65 HttpServletRequest request = mock(HttpServletRequest.class);
66 provider.populate(dataset, statsCollection, request);
67
68 assertEquals(2, dataset.getSeriesCount());
69 }
70
71 @Test
72 void testPopulateTopNSeries() {
73
74 List<XYDataItem> items1 = statsCollection.newStats("stat.app.app1", 10);
75 items1.add(new XYDataItem(1L, 50.0));
76
77 List<XYDataItem> items2 = statsCollection.newStats("stat.app.app2", 10);
78 items2.add(new XYDataItem(1L, 200.0));
79
80 List<XYDataItem> items3 = statsCollection.newStats("stat.app.app3", 10);
81 items3.add(new XYDataItem(1L, 100.0));
82
83 provider.setTop(2);
84 HttpServletRequest request = mock(HttpServletRequest.class);
85 provider.populate(dataset, statsCollection, request);
86
87 assertEquals(2, dataset.getSeriesCount());
88 }
89
90 @Test
91 void testPopulateNoMatchingStats() {
92 HttpServletRequest request = mock(HttpServletRequest.class);
93 provider.populate(dataset, statsCollection, request);
94 assertEquals(0, dataset.getSeriesCount());
95 }
96
97 @Test
98 void testPopulateWithMovingAvgFrame() {
99 provider.setMovingAvgFrame(2);
100 provider.setTop(2);
101
102 List<XYDataItem> items1 = statsCollection.newStats("stat.app.app1", 10);
103 for (int i = 0; i < 10; i++) {
104 items1.add(new XYDataItem((long) i, i * 10.0));
105 }
106
107 List<XYDataItem> items2 = statsCollection.newStats("stat.app.app2", 10);
108 for (int i = 0; i < 10; i++) {
109 items2.add(new XYDataItem((long) i, i * 5.0));
110 }
111
112 List<XYDataItem> items3 = statsCollection.newStats("stat.app.app3", 10);
113 for (int i = 0; i < 10; i++) {
114 items3.add(new XYDataItem((long) i, i * 1.0));
115 }
116
117 HttpServletRequest request = mock(HttpServletRequest.class);
118 provider.populate(dataset, statsCollection, request);
119
120 assertEquals(2, dataset.getSeriesCount());
121 }
122
123 @Test
124 void testTopEqualToSize() {
125
126 List<XYDataItem> items1 = statsCollection.newStats("stat.app.app1", 10);
127 items1.add(new XYDataItem(1L, 100.0));
128 List<XYDataItem> items2 = statsCollection.newStats("stat.app.app2", 10);
129 items2.add(new XYDataItem(1L, 200.0));
130
131 provider.setTop(2);
132 HttpServletRequest request = mock(HttpServletRequest.class);
133 provider.populate(dataset, statsCollection, request);
134
135 assertEquals(2, dataset.getSeriesCount());
136 }
137 }