test/runtime/SharedArchiveFile/SharedSymbolTableBucketSize.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 28,70 **** * @library /test/lib * @modules java.base/jdk.internal.misc * java.management */ ! import jdk.test.lib.process.ProcessTools; import jdk.test.lib.process.OutputAnalyzer; public class SharedSymbolTableBucketSize { public static void main(String[] args) throws Exception { int bucket_size = 8; - ProcessBuilder pb = ProcessTools.createJavaProcessBuilder( - "-Xshare:dump", "-XX:+PrintSharedSpaces", - "-XX:+UnlockDiagnosticVMOptions", - "-XX:SharedArchiveFile=./SharedSymbolTableBucketSize.jsa", - "-XX:SharedSymbolTableBucketSize=" + Integer.valueOf(bucket_size)); - OutputAnalyzer output = new OutputAnalyzer(pb.start()); - output.shouldContain("Loading classes to share"); - output.shouldHaveExitValue(0); String s = output.firstMatch("Average bucket size : .*"); Float f = Float.parseFloat(s.substring(25)); int size = Math.round(f); if (size != bucket_size) { throw new Exception("FAILED: incorrect bucket size " + size + ", expect " + bucket_size); } ! // Invalid SharedSymbolTableBucketSize input String input[] = {"-XX:SharedSymbolTableBucketSize=-1", "-XX:SharedSymbolTableBucketSize=2.5"}; for (int i = 0; i < input.length; i++) { ! pb = ProcessTools.createJavaProcessBuilder( ! "-Xshare:dump", "-XX:+PrintSharedSpaces", ! "-XX:+UnlockDiagnosticVMOptions", ! "-XX:SharedArchiveFile=./SharedSymbolTableBucketSize.jsa", ! input[i]); ! output = new OutputAnalyzer(pb.start()); ! output.shouldContain("Improperly specified VM option"); } } } --- 28,64 ---- * @library /test/lib * @modules java.base/jdk.internal.misc * java.management */ ! import jdk.test.lib.cds.CDSTestUtils; import jdk.test.lib.process.OutputAnalyzer; public class SharedSymbolTableBucketSize { public static void main(String[] args) throws Exception { int bucket_size = 8; + OutputAnalyzer output = + CDSTestUtils.createArchive("-XX:SharedSymbolTableBucketSize=" + + Integer.valueOf(bucket_size)); + CDSTestUtils.checkDump(output); + + if (!CDSTestUtils.isUnableToMap(output)) { String s = output.firstMatch("Average bucket size : .*"); Float f = Float.parseFloat(s.substring(25)); int size = Math.round(f); if (size != bucket_size) { throw new Exception("FAILED: incorrect bucket size " + size + ", expect " + bucket_size); } ! } // Invalid SharedSymbolTableBucketSize input String input[] = {"-XX:SharedSymbolTableBucketSize=-1", "-XX:SharedSymbolTableBucketSize=2.5"}; for (int i = 0; i < input.length; i++) { ! CDSTestUtils.createArchive(input[i]) ! .shouldContain("Improperly specified VM option") ! .shouldHaveExitValue(1); } } }