test/jdk/javax/management/remote/rest/RestAdapterPerfTest.java
author hb
Thu, 04 Jan 2018 14:39:04 +0530
branchjmx-rest-api
changeset 56006 352a4f213fc6
parent 56003 4f7f76f6be2f
permissions -rw-r--r--
1. URL decoding of URL 2. MBean info availble in MBeanCollection page 3. MBeanCollection post supports objectname filtering 4. Tests now use reflection instead of Methodhndles 3. couple of bug fixes
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
56006
352a4f213fc6 1. URL decoding of URL
hb
parents: 56003
diff changeset
    13
import java.lang.reflect.InvocationTargetException;
56003
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    14
import jdk.test.lib.Utils;
56002
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    15
import java.util.List;
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    16
import java.util.Random;
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    17
import java.util.concurrent.Executors;
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    18
import java.util.concurrent.ThreadPoolExecutor;
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    19
import java.util.concurrent.TimeUnit;
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    20
import java.util.concurrent.atomic.AtomicInteger;
56006
352a4f213fc6 1. URL decoding of URL
hb
parents: 56003
diff changeset
    21
import java.util.stream.Collectors;
352a4f213fc6 1. URL decoding of URL
hb
parents: 56003
diff changeset
    22
import java.util.stream.Stream;
56002
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    23
56003
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    24
import org.testng.annotations.Test;
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    25
56002
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    26
@Test
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    27
public class RestAdapterPerfTest {
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    28
56003
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    29
    private static Random random = Utils.getRandomInstance();
56002
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    30
    private static AtomicInteger count = new AtomicInteger(1);
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
    @Test
4f7f76f6be2f * Start Rest adapter via command line arguments
hb
parents: 56002
diff changeset
    33
    public void testMultipleClients() throws Exception {
56002
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    34
        RestAdapterTest test = new RestAdapterTest();
56006
352a4f213fc6 1. URL decoding of URL
hb
parents: 56003
diff changeset
    35
        List<Runnable> tasks = Stream.of(RestAdapterTest.class.getMethods())
352a4f213fc6 1. URL decoding of URL
hb
parents: 56003
diff changeset
    36
                .filter(m -> m.getName().startsWith("test")).map(m -> (Runnable)() -> {
352a4f213fc6 1. URL decoding of URL
hb
parents: 56003
diff changeset
    37
                    try {
352a4f213fc6 1. URL decoding of URL
hb
parents: 56003
diff changeset
    38
                        m.invoke(test);
352a4f213fc6 1. URL decoding of URL
hb
parents: 56003
diff changeset
    39
                    } catch (IllegalAccessException e) {
352a4f213fc6 1. URL decoding of URL
hb
parents: 56003
diff changeset
    40
                    } catch (InvocationTargetException e) {
352a4f213fc6 1. URL decoding of URL
hb
parents: 56003
diff changeset
    41
                    }
352a4f213fc6 1. URL decoding of URL
hb
parents: 56003
diff changeset
    42
                }).collect(Collectors.toList());
56002
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    43
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    44
        ThreadPoolExecutor es = (ThreadPoolExecutor) Executors.newFixedThreadPool(20);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    45
        es.setThreadFactory((Runnable R) -> new Thread(R, "perf-" + count.getAndIncrement()));
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    46
        long current = System.currentTimeMillis();
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    47
        test.setupServers();
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    48
        for (int i = 0; i < 200; i++) {
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    49
            Runnable task = tasks.get(random.nextInt(tasks.size()));
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    50
            es.execute(task);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    51
        }
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    52
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    53
        System.out.println("Submitted 200 tasks");
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    54
        es.shutdown();
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    55
        es.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    56
        float v = (float) (System.currentTimeMillis() - current) / (float) 1000;
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    57
        System.out.println("Total time = " + v + "s");
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    58
        test.tearDownServers();
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    59
    }
60ab3b595a8e Lot of bug fixes
hb
parents:
diff changeset
    60
}