8 * java.management.rest/com.oracle.jmx.remote.rest.mapper |
8 * java.management.rest/com.oracle.jmx.remote.rest.mapper |
9 * @build RestAdapterPerfTest RestAdapterTest |
9 * @build RestAdapterPerfTest RestAdapterTest |
10 * @run testng/othervm RestAdapterPerfTest |
10 * @run testng/othervm RestAdapterPerfTest |
11 */ |
11 */ |
12 |
12 |
|
13 import java.lang.reflect.InvocationTargetException; |
13 import jdk.test.lib.Utils; |
14 import jdk.test.lib.Utils; |
14 import jdk.test.lib.process.ProcessTools; |
|
15 import java.util.ArrayList; |
|
16 import java.util.List; |
15 import java.util.List; |
17 import java.util.Random; |
16 import java.util.Random; |
18 import java.util.concurrent.Executors; |
17 import java.util.concurrent.Executors; |
19 import java.util.concurrent.ThreadPoolExecutor; |
18 import java.util.concurrent.ThreadPoolExecutor; |
20 import java.util.concurrent.TimeUnit; |
19 import java.util.concurrent.TimeUnit; |
21 import java.util.concurrent.atomic.AtomicInteger; |
20 import java.util.concurrent.atomic.AtomicInteger; |
|
21 import java.util.stream.Collectors; |
|
22 import java.util.stream.Stream; |
22 |
23 |
23 import org.testng.Assert; |
|
24 import org.testng.annotations.AfterClass; |
|
25 import org.testng.annotations.BeforeClass; |
|
26 import org.testng.annotations.DataProvider; |
|
27 import org.testng.annotations.Test; |
24 import org.testng.annotations.Test; |
28 |
25 |
29 @Test |
26 @Test |
30 public class RestAdapterPerfTest { |
27 public class RestAdapterPerfTest { |
31 |
28 |
33 private static AtomicInteger count = new AtomicInteger(1); |
30 private static AtomicInteger count = new AtomicInteger(1); |
34 |
31 |
35 @Test |
32 @Test |
36 public void testMultipleClients() throws Exception { |
33 public void testMultipleClients() throws Exception { |
37 RestAdapterTest test = new RestAdapterTest(); |
34 RestAdapterTest test = new RestAdapterTest(); |
38 List<Runnable> tasks = new ArrayList<>(); |
35 List<Runnable> tasks = Stream.of(RestAdapterTest.class.getMethods()) |
39 |
36 .filter(m -> m.getName().startsWith("test")).map(m -> (Runnable)() -> { |
40 tasks.add(test::testAllMBeanServers); |
37 try { |
41 tasks.add(test::testAllMBeanInfo); |
38 m.invoke(test); |
42 tasks.add(test::testAllMBeans); |
39 } catch (IllegalAccessException e) { |
43 tasks.add(test::testMBeanFiltering); |
40 } catch (InvocationTargetException e) { |
44 tasks.add(test::testMBeanGetAttributes); |
41 } |
45 tasks.add(test::testMBeanSetAttributes); |
42 }).collect(Collectors.toList()); |
46 tasks.add(test::testMbeanNoArgOperations); |
|
47 tasks.add(test::testAllMBeansBulkRequest); |
|
48 tasks.add(test::testThreadMXBeanBulkRequest); |
|
49 tasks.add(test::testThreadMXBeanThreadInfo); |
|
50 |
43 |
51 ThreadPoolExecutor es = (ThreadPoolExecutor) Executors.newFixedThreadPool(20); |
44 ThreadPoolExecutor es = (ThreadPoolExecutor) Executors.newFixedThreadPool(20); |
52 es.setThreadFactory((Runnable R) -> new Thread(R, "perf-" + count.getAndIncrement())); |
45 es.setThreadFactory((Runnable R) -> new Thread(R, "perf-" + count.getAndIncrement())); |
53 long current = System.currentTimeMillis(); |
46 long current = System.currentTimeMillis(); |
54 test.setupServers(); |
47 test.setupServers(); |