View Javadoc
1   /*
2    * Licensed under the GPL License. You may not use this file except in compliance with the License.
3    * You may obtain a copy of the License at
4    *
5    *   https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
6    *
7    * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
8    * WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
9    * PURPOSE.
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  import static org.mockito.Mockito.when;
16  
17  import com.codebox.bean.JavaBeanTester;
18  
19  import jakarta.servlet.http.HttpServletRequest;
20  
21  import java.util.Arrays;
22  import java.util.List;
23  
24  import org.jfree.data.xy.DefaultTableXYDataset;
25  import org.jfree.data.xy.XYDataItem;
26  import org.junit.jupiter.api.BeforeEach;
27  import org.junit.jupiter.api.Test;
28  
29  import psiprobe.model.stats.StatsCollection;
30  
31  /**
32   * The Class StandardSeriesProviderTest.
33   */
34  class StandardSeriesProviderTest {
35  
36    private StandardSeriesProvider provider;
37    private StatsCollection statsCollection;
38    private DefaultTableXYDataset dataset;
39  
40    /**
41     * Javabean tester.
42     */
43    @Test
44    void javabeanTester() {
45      JavaBeanTester.builder(StandardSeriesProvider.class).loadData().test();
46    }
47  
48    @BeforeEach
49    void setUp() {
50      provider = new StandardSeriesProvider();
51      statsCollection = new StatsCollection();
52      dataset = new DefaultTableXYDataset();
53    }
54  
55    @Test
56    void testPopulateWithStaticStatName() {
57      List<XYDataItem> items = statsCollection.newStats("stat.memory.heap", 10);
58      items.add(new XYDataItem(1L, 512.0));
59      items.add(new XYDataItem(2L, 1024.0));
60  
61      provider.setStatNames(Arrays.asList("stat.memory.heap"));
62  
63      HttpServletRequest request = mock(HttpServletRequest.class);
64      when(request.getParameter("sp")).thenReturn(null);
65      when(request.getParameter("s1l")).thenReturn("Heap");
66  
67      provider.populate(dataset, statsCollection, request);
68  
69      assertEquals(1, dataset.getSeriesCount());
70      assertEquals(2, dataset.getItemCount(0));
71    }
72  
73    @Test
74    void testPopulateWithSeriesParam() {
75      List<XYDataItem> items = statsCollection.newStats("stat.connector.http-8080.requests", 10);
76      items.add(new XYDataItem(1L, 42.0));
77  
78      provider.setStatNames(Arrays.asList("stat.connector.{0}.requests"));
79  
80      HttpServletRequest request = mock(HttpServletRequest.class);
81      when(request.getParameter("sp")).thenReturn("http-8080");
82      when(request.getParameter("s1l")).thenReturn("Requests");
83  
84      provider.populate(dataset, statsCollection, request);
85  
86      assertEquals(1, dataset.getSeriesCount());
87    }
88  
89    @Test
90    void testPopulateMultipleSeries() {
91      List<XYDataItem> items1 = statsCollection.newStats("stat.mem.heap", 10);
92      items1.add(new XYDataItem(1L, 100.0));
93  
94      List<XYDataItem> items2 = statsCollection.newStats("stat.mem.nonheap", 10);
95      items2.add(new XYDataItem(1L, 50.0));
96  
97      provider.setStatNames(Arrays.asList("stat.mem.heap", "stat.mem.nonheap"));
98  
99      HttpServletRequest request = mock(HttpServletRequest.class);
100     when(request.getParameter("sp")).thenReturn(null);
101     when(request.getParameter("s1l")).thenReturn("Heap");
102     when(request.getParameter("s2l")).thenReturn("NonHeap");
103 
104     provider.populate(dataset, statsCollection, request);
105 
106     assertEquals(2, dataset.getSeriesCount());
107   }
108 
109   @Test
110   void testPopulateMissingStats() {
111     provider.setStatNames(Arrays.asList("stat.nonexistent"));
112 
113     HttpServletRequest request = mock(HttpServletRequest.class);
114     when(request.getParameter("sp")).thenReturn(null);
115 
116     provider.populate(dataset, statsCollection, request);
117 
118     assertEquals(0, dataset.getSeriesCount());
119   }
120 }