1
2
3
4
5
6
7
8
9
10
11 package psiprobe.beans;
12
13 import static org.junit.jupiter.api.Assertions.assertEquals;
14 import static org.junit.jupiter.api.Assertions.assertNotNull;
15 import static org.mockito.Mockito.mock;
16 import static org.mockito.Mockito.mockStatic;
17
18 import java.lang.management.ManagementFactory;
19
20 import javax.management.MBeanServer;
21 import javax.management.ObjectName;
22
23 import org.junit.jupiter.api.Test;
24 import org.mockito.MockedStatic;
25 import org.mockito.Mockito;
26
27 import psiprobe.model.jmx.RuntimeInformation;
28 import psiprobe.tools.JmxTools;
29
30
31
32
33 class RuntimeInfoAccessorBeanTest {
34
35 @Test
36 void testGetRuntimeInformation_NonIbmVendor() throws Exception {
37 MBeanServer mbeanServer = mock(MBeanServer.class);
38 ObjectName runtimeObj = new ObjectName("java.lang:type=Runtime");
39 ObjectName osObj = new ObjectName("java.lang:type=OperatingSystem");
40
41 try (MockedStatic<ManagementFactory> mgmtFactoryMock =
42 Mockito.mockStatic(ManagementFactory.class)) {
43 mgmtFactoryMock.when(ManagementFactory::getPlatformMBeanServer).thenReturn(mbeanServer);
44
45 try (MockedStatic<JmxTools> jmxToolsMock = Mockito.mockStatic(JmxTools.class)) {
46 jmxToolsMock.when(() -> JmxTools.getLongAttr(mbeanServer, runtimeObj, "StartTime"))
47 .thenReturn(123L);
48 jmxToolsMock.when(() -> JmxTools.getLongAttr(mbeanServer, runtimeObj, "Uptime"))
49 .thenReturn(456L);
50 jmxToolsMock.when(() -> JmxTools.getStringAttr(mbeanServer, runtimeObj, "VmVendor"))
51 .thenReturn("Oracle Corporation");
52 jmxToolsMock.when(() -> JmxTools.getStringAttr(mbeanServer, osObj, "Name"))
53 .thenReturn("Linux");
54 jmxToolsMock.when(() -> JmxTools.getStringAttr(mbeanServer, osObj, "Version"))
55 .thenReturn("5.10");
56 jmxToolsMock.when(() -> JmxTools.getLongAttr(mbeanServer, osObj, "TotalPhysicalMemorySize"))
57 .thenReturn(1000L);
58 jmxToolsMock
59 .when(() -> JmxTools.getLongAttr(mbeanServer, osObj, "CommittedVirtualMemorySize"))
60 .thenReturn(2000L);
61 jmxToolsMock.when(() -> JmxTools.getLongAttr(mbeanServer, osObj, "FreePhysicalMemorySize"))
62 .thenReturn(3000L);
63 jmxToolsMock.when(() -> JmxTools.getLongAttr(mbeanServer, osObj, "FreeSwapSpaceSize"))
64 .thenReturn(4000L);
65 jmxToolsMock.when(() -> JmxTools.getLongAttr(mbeanServer, osObj, "TotalSwapSpaceSize"))
66 .thenReturn(5000L);
67 jmxToolsMock.when(() -> JmxTools.getLongAttr(mbeanServer, osObj, "ProcessCpuTime"))
68 .thenReturn(6000L);
69 jmxToolsMock
70 .when(() -> JmxTools.hasAttribute(mbeanServer, osObj, "OpenFileDescriptorCount"))
71 .thenReturn(true);
72 jmxToolsMock.when(() -> JmxTools.hasAttribute(mbeanServer, osObj, "MaxFileDescriptorCount"))
73 .thenReturn(true);
74 jmxToolsMock.when(() -> JmxTools.getLongAttr(mbeanServer, osObj, "OpenFileDescriptorCount"))
75 .thenReturn(7L);
76 jmxToolsMock.when(() -> JmxTools.getLongAttr(mbeanServer, osObj, "MaxFileDescriptorCount"))
77 .thenReturn(8L);
78
79 try (MockedStatic<Runtime> runtimeMock = Mockito.mockStatic(Runtime.class)) {
80 Runtime runtime = mock(Runtime.class);
81 runtimeMock.when(Runtime::getRuntime).thenReturn(runtime);
82
83 RuntimeInfoAccessorBean bean = new RuntimeInfoAccessorBean();
84 RuntimeInformation info = bean.getRuntimeInformation();
85
86 assertNotNull(info);
87 assertEquals(123L, info.getStartTime());
88 assertEquals(456L, info.getUptime());
89 assertEquals("Oracle Corporation", info.getVmVendor());
90 assertEquals("Linux", info.getOsName());
91 assertEquals("5.10", info.getOsVersion());
92 assertEquals(1000L, info.getTotalPhysicalMemorySize());
93 assertEquals(2000L, info.getCommittedVirtualMemorySize());
94 assertEquals(3000L, info.getFreePhysicalMemorySize());
95 assertEquals(4000L, info.getFreeSwapSpaceSize());
96 assertEquals(5000L, info.getTotalSwapSpaceSize());
97 assertEquals(6000L, info.getProcessCpuTime());
98 assertEquals(Runtime.getRuntime().availableProcessors(), info.getAvailableProcessors());
99 assertEquals(7L, info.getOpenFileDescriptorCount());
100 assertEquals(8L, info.getMaxFileDescriptorCount());
101 }
102 }
103 }
104 }
105
106 @Test
107 void testGetRuntimeInformation_IbmVendor() throws Exception {
108 MBeanServer mbeanServer = mock(MBeanServer.class);
109 ObjectName runtimeObj = new ObjectName("java.lang:type=Runtime");
110 ObjectName osObj = new ObjectName("java.lang:type=OperatingSystem");
111
112 try (MockedStatic<ManagementFactory> mgmtFactoryMock =
113 Mockito.mockStatic(ManagementFactory.class)) {
114 mgmtFactoryMock.when(ManagementFactory::getPlatformMBeanServer).thenReturn(mbeanServer);
115
116 try (MockedStatic<JmxTools> jmxToolsMock = Mockito.mockStatic(JmxTools.class)) {
117 jmxToolsMock.when(() -> JmxTools.getLongAttr(mbeanServer, runtimeObj, "StartTime"))
118 .thenReturn(123L);
119 jmxToolsMock.when(() -> JmxTools.getLongAttr(mbeanServer, runtimeObj, "Uptime"))
120 .thenReturn(456L);
121 jmxToolsMock.when(() -> JmxTools.getStringAttr(mbeanServer, runtimeObj, "VmVendor"))
122 .thenReturn("IBM Corporation");
123 jmxToolsMock.when(() -> JmxTools.getStringAttr(mbeanServer, osObj, "Name"))
124 .thenReturn("AIX");
125 jmxToolsMock.when(() -> JmxTools.getStringAttr(mbeanServer, osObj, "Version"))
126 .thenReturn("7.2");
127 jmxToolsMock.when(() -> JmxTools.getLongAttr(mbeanServer, osObj, "TotalPhysicalMemory"))
128 .thenReturn(9999L);
129 jmxToolsMock
130 .when(() -> JmxTools.hasAttribute(mbeanServer, osObj, "OpenFileDescriptorCount"))
131 .thenReturn(false);
132 jmxToolsMock.when(() -> JmxTools.hasAttribute(mbeanServer, osObj, "MaxFileDescriptorCount"))
133 .thenReturn(false);
134
135 RuntimeInfoAccessorBean bean = new RuntimeInfoAccessorBean();
136 RuntimeInformation info = bean.getRuntimeInformation();
137
138 assertNotNull(info);
139 assertEquals(123L, info.getStartTime());
140 assertEquals(456L, info.getUptime());
141 assertEquals("IBM Corporation", info.getVmVendor());
142 assertEquals("AIX", info.getOsName());
143 assertEquals("7.2", info.getOsVersion());
144 assertEquals(9999L, info.getTotalPhysicalMemorySize());
145 assertEquals(0L, info.getOpenFileDescriptorCount());
146 assertEquals(0L, info.getMaxFileDescriptorCount());
147 }
148 }
149 }
150 }