Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/sun/management/jmxremote/startstop/JMXStatusPerfCountersTest.java
41153 views
1
/*
2
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
import java.io.IOException;
25
import java.net.BindException;
26
import java.util.Properties;
27
import java.util.function.Predicate;
28
import static org.testng.Assert.*;
29
import org.testng.annotations.AfterMethod;
30
import org.testng.annotations.BeforeClass;
31
import org.testng.annotations.BeforeMethod;
32
import org.testng.annotations.BeforeTest;
33
import org.testng.annotations.Test;
34
35
import jdk.test.lib.process.ProcessTools;
36
37
38
/**
39
* @test
40
* @bug 8075926
41
* @key intermittent
42
* @summary Makes sure that the current management agent status is reflected
43
* in the related performance counters.
44
*
45
* @library /test/lib
46
*
47
* @build PortAllocator TestApp ManagementAgentJcmd
48
* @run testng/othervm -XX:+UsePerfData JMXStatusPerfCountersTest
49
*/
50
public class JMXStatusPerfCountersTest {
51
private final static String TEST_APP_NAME = "TestApp";
52
53
private final static String REMOTE_STATUS_KEY = "sun.management.JMXConnectorServer.remote.enabled";
54
55
private static ProcessBuilder testAppPb;
56
private Process testApp;
57
58
private ManagementAgentJcmd jcmd;
59
60
@BeforeClass
61
public static void setupClass() throws Exception {
62
testAppPb = ProcessTools.createJavaProcessBuilder(
63
"-XX:+UsePerfData",
64
"-cp", System.getProperty("test.class.path"),
65
TEST_APP_NAME
66
);
67
}
68
69
@BeforeTest
70
public void setup() {
71
jcmd = new ManagementAgentJcmd(TEST_APP_NAME, false);
72
}
73
74
@BeforeMethod
75
public void startTestApp() throws Exception {
76
testApp = ProcessTools.startProcess(
77
TEST_APP_NAME, testAppPb,
78
(Predicate<String>)l->l.trim().equals("main enter")
79
);
80
}
81
82
@AfterMethod
83
public void stopTestApp() throws Exception {
84
testApp.getOutputStream().write(1);
85
testApp.getOutputStream().flush();
86
testApp.waitFor();
87
testApp = null;
88
}
89
90
/**
91
* The 'sun.management.JMXConnectorServer.remote.enabled' counter must not be
92
* exported if the remote agent is not enabled.
93
* @throws Exception
94
*/
95
@Test
96
public void testNotInitializedRemote() throws Exception {
97
assertFalse(
98
getCounters().containsKey(REMOTE_STATUS_KEY),
99
"Unexpected occurrence of " + REMOTE_STATUS_KEY + " in perf counters"
100
);
101
}
102
103
/**
104
* After enabling the remote agent the 'sun.management.JMXConnectorServer.remote.enabled'
105
* counter will be exported with value of '0' - corresponding to the actual
106
* version of the associated remote connector perf counters.
107
* @throws Exception
108
*/
109
@Test
110
public void testRemoteEnabled() throws Exception {
111
while (true) {
112
try {
113
int[] ports = PortAllocator.allocatePorts(1);
114
jcmd.start(
115
"jmxremote.port=" + ports[0],
116
"jmxremote.authenticate=false",
117
"jmxremote.ssl=false"
118
);
119
String v = getCounters().getProperty(REMOTE_STATUS_KEY);
120
assertNotNull(v);
121
assertEquals("0", v);
122
return;
123
} catch (BindException e) {
124
System.out.println("Failed to allocate ports. Retrying ...");
125
}
126
}
127
}
128
129
/**
130
* After disabling the remote agent the value of 'sun.management.JMXConnectorServer.remote.enabled'
131
* counter will become '-1'.
132
* @throws Exception
133
*/
134
@Test
135
public void testRemoteDisabled() throws Exception {
136
while (true) {
137
try {
138
int[] ports = PortAllocator.allocatePorts(1);
139
jcmd.start(
140
"jmxremote.port=" + ports[0],
141
"jmxremote.authenticate=false",
142
"jmxremote.ssl=false"
143
);
144
jcmd.stop();
145
String v = getCounters().getProperty(REMOTE_STATUS_KEY);
146
assertNotNull(v);
147
assertEquals("-1", v);
148
return;
149
} catch (BindException e) {
150
System.out.println("Failed to allocate ports. Retrying ...");
151
}
152
}
153
}
154
155
/**
156
* Each subsequent re-enablement of the remote agent must keep the value of
157
* 'sun.management.JMXConnectorServer.remote.enabled' counter in sync with
158
* the actual version of the associated remote connector perf counters.
159
* @throws Exception
160
*/
161
@Test
162
public void testRemoteReEnabled() throws Exception {
163
while (true) {
164
try {
165
int[] ports = PortAllocator.allocatePorts(1);
166
jcmd.start(
167
"jmxremote.port=" + ports[0],
168
"jmxremote.authenticate=false",
169
"jmxremote.ssl=false"
170
);
171
jcmd.stop();
172
jcmd.start(
173
"jmxremote.port=" + ports[0],
174
"jmxremote.authenticate=false",
175
"jmxremote.ssl=false"
176
);
177
178
String v = getCounters().getProperty(REMOTE_STATUS_KEY);
179
assertNotNull(v);
180
assertEquals("1", v);
181
return;
182
} catch (BindException e) {
183
System.out.println("Failed to allocate ports. Retrying ...");
184
}
185
}
186
}
187
188
private Properties getCounters() throws IOException, InterruptedException {
189
return jcmd.perfCounters("sun\\.management\\.JMXConnectorServer\\..*");
190
}
191
}
192
193