test/jdk/javax/management/remote/rest/RestAdapterPerfTest.java
branchjmx-rest-api
changeset 56002 60ab3b595a8e
child 56003 4f7f76f6be2f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/javax/management/remote/rest/RestAdapterPerfTest.java	Mon Jan 01 23:59:14 2018 +0530
@@ -0,0 +1,49 @@
+import org.testng.annotations.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicInteger;
+
+@Test
+public class RestAdapterPerfTest {
+
+    private static Random random = new Random(System.currentTimeMillis());
+    private static AtomicInteger count = new AtomicInteger(1);
+
+    public static void main(String[] args) throws Exception {
+        RestAdapterTest test = new RestAdapterTest();
+        List<Runnable> tasks = new ArrayList<>();
+
+        tasks.add(test::testAllMBeanServers);
+        tasks.add(test::testAllMBeanInfo);
+        tasks.add(test::testAllMBeans);
+        tasks.add(test::testMBeanFiltering);
+        tasks.add(test::testMBeanGetAttributes);
+        tasks.add(test::testMBeanSetAttributes);
+        tasks.add(test::testMbeanNoArgOperations);
+        tasks.add(test::testAllMBeansBulkRequest);
+        tasks.add(test::testThreadMXBeanBulkRequest);
+        tasks.add(test::testThreadMXBeanThreadInfo);
+
+        ThreadPoolExecutor es = (ThreadPoolExecutor) Executors.newFixedThreadPool(20);
+        es.setThreadFactory((Runnable R) -> new Thread(R, "perf-" + count.getAndIncrement()));
+        long current = System.currentTimeMillis();
+        test.setupServers();
+        for (int i = 0; i < 200; i++) {
+            Runnable task = tasks.get(random.nextInt(tasks.size()));
+            es.execute(task);
+        }
+
+        System.out.println("Submitted 200 tasks");
+        es.shutdown();
+        es.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);
+        float v = (float) (System.currentTimeMillis() - current) / (float) 1000;
+        System.out.println("Total time = " + v + "s");
+        test.tearDownServers();
+    }
+}