test/jdk/javax/management/remote/rest/RestAdapterPerfTest.java
author hb
Tue, 02 Jan 2018 13:20:18 +0530
branchjmx-rest-api
changeset 56003 4f7f76f6be2f
parent 56002 60ab3b595a8e
child 56006 352a4f213fc6
permissions -rw-r--r--
* Start Rest adapter via command line arguments * Rest adapter config via management.properties
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56002
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
     1
56003
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
     2
/* @test
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
     3
 * @summary Performance test for rest adapter
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
     4
 * @library /test/lib
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
     5
 * @modules java.management.rest/com.oracle.jmx.remote.rest.http
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
     6
 *          java.management.rest/com.oracle.jmx.remote.rest.json
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
     7
 *          java.management.rest/com.oracle.jmx.remote.rest.json.parser
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
     8
 *          java.management.rest/com.oracle.jmx.remote.rest.mapper
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
     9
 * @build RestAdapterPerfTest RestAdapterTest
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    10
 * @run testng/othervm RestAdapterPerfTest
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    11
 */
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    12
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    13
import jdk.test.lib.Utils;
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    14
import jdk.test.lib.process.ProcessTools;
56002
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    15
import java.util.ArrayList;
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    16
import java.util.List;
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    17
import java.util.Random;
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    18
import java.util.concurrent.Executors;
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    19
import java.util.concurrent.ThreadPoolExecutor;
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    20
import java.util.concurrent.TimeUnit;
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    21
import java.util.concurrent.atomic.AtomicInteger;
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    22
56003
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    23
import org.testng.Assert;
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    24
import org.testng.annotations.AfterClass;
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    25
import org.testng.annotations.BeforeClass;
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    26
import org.testng.annotations.DataProvider;
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    27
import org.testng.annotations.Test;
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    28
56002
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    29
@Test
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    30
public class RestAdapterPerfTest {
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    31
56003
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    32
    private static Random random = Utils.getRandomInstance();
56002
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    33
    private static AtomicInteger count = new AtomicInteger(1);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    34
56003
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    35
    @Test
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    36
    public void testMultipleClients() throws Exception {
56002
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    37
        RestAdapterTest test = new RestAdapterTest();
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    38
        List<Runnable> tasks = new ArrayList<>();
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    39
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    40
        tasks.add(test::testAllMBeanServers);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    41
        tasks.add(test::testAllMBeanInfo);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    42
        tasks.add(test::testAllMBeans);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    43
        tasks.add(test::testMBeanFiltering);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    44
        tasks.add(test::testMBeanGetAttributes);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    45
        tasks.add(test::testMBeanSetAttributes);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    46
        tasks.add(test::testMbeanNoArgOperations);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    47
        tasks.add(test::testAllMBeansBulkRequest);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    48
        tasks.add(test::testThreadMXBeanBulkRequest);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    49
        tasks.add(test::testThreadMXBeanThreadInfo);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    50
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    51
        ThreadPoolExecutor es = (ThreadPoolExecutor) Executors.newFixedThreadPool(20);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    52
        es.setThreadFactory((Runnable R) -> new Thread(R, "perf-" + count.getAndIncrement()));
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    53
        long current = System.currentTimeMillis();
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    54
        test.setupServers();
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    55
        for (int i = 0; i < 200; i++) {
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    56
            Runnable task = tasks.get(random.nextInt(tasks.size()));
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    57
            es.execute(task);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    58
        }
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    59
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    60
        System.out.println("Submitted 200 tasks");
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    61
        es.shutdown();
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    62
        es.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    63
        float v = (float) (System.currentTimeMillis() - current) / (float) 1000;
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    64
        System.out.println("Total time = " + v + "s");
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    65
        test.tearDownServers();
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    66
    }
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    67
}