diff -r fd9b36598481 -r fb63be22ffa6 jdk/test/sun/tools/jinfo/JInfoLauncherTest.java --- a/jdk/test/sun/tools/jinfo/JInfoLauncherTest.java Mon May 09 13:12:48 2016 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,343 +0,0 @@ -/* - * Copyright (c) 2014, 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -import org.testng.annotations.Test; -import org.testng.annotations.BeforeClass; -import sun.tools.jinfo.JInfo; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.util.Arrays; - -import static org.testng.Assert.*; - -/** - * @test - * @bug 8039080 - * @modules jdk.jcmd/sun.tools.jinfo - * @run testng JInfoLauncherTest - * @summary Test JInfo launcher argument parsing - */ -@Test -public class JInfoLauncherTest { - public static final String VALIDATION_EXCEPTION_CLSNAME = - IllegalArgumentException.class.getName(); - - private Constructor jInfoConstructor; - private Field fldUseSA; - - @BeforeClass - public void setup() throws Exception { - jInfoConstructor = JInfo.class.getDeclaredConstructor(String[].class); - jInfoConstructor.setAccessible(true); - fldUseSA = JInfo.class.getDeclaredField("useSA"); - fldUseSA.setAccessible(true); - } - - private JInfo newJInfo(String[] args) throws Exception { - try { - return jInfoConstructor.newInstance((Object) args); - } catch (Exception e) { - if (isValidationException(e.getCause())) { - throw (Exception)e.getCause(); - } - throw e; - } - } - - private boolean getUseSA(JInfo jinfo) throws Exception { - return fldUseSA.getBoolean(jinfo); - } - - private void cmdPID(String cmd, String ... params) throws Exception { - int offset = (cmd != null ? 1 : 0); - String[] args = new String[offset + params.length]; - args[0] = cmd; - System.arraycopy(params, 0, args, offset, params.length); - JInfo j = newJInfo(args); - assertFalse(getUseSA(j), "Local jinfo must not forward to SA"); - } - - private void cmdCore(String cmd, String ... params) throws Exception { - int offset = (cmd != null ? 1 : 0); - String[] args = new String[offset + params.length]; - args[0] = cmd; - System.arraycopy(params, 0, args, offset, params.length); - JInfo j = newJInfo(args); - assertTrue(getUseSA(j), "Core jinfo must forward to SA"); - } - - private void cmdRemote(String cmd, String ... params) throws Exception { - int offset = (cmd != null ? 1 : 0); - String[] args = new String[offset + params.length]; - args[0] = cmd; - System.arraycopy(params, 0, args, offset, params.length); - JInfo j = newJInfo(args); - assertTrue(getUseSA(j), "Remote jinfo must forward to SA"); - } - - private void cmdExtraArgs(String cmd, int argsLen) throws Exception { - String[] args = new String[argsLen + 1 + (cmd != null ? 1 : 0)]; - Arrays.fill(args, "a"); - if (cmd != null) { - args[0] = cmd; - } else { - cmd = "default"; - } - try { - JInfo j = newJInfo(args); - fail("\"" + cmd + "\" does not support more than " + argsLen + - " arguments"); - } catch (Exception e) { - if (!isValidationException(e)) { - throw e; - } - // ignore - } - } - - private void cmdMissingArgs(String cmd, int reqArgs) throws Exception { - String[] args = new String[reqArgs - 1 + (cmd != null ? 1 : 0)]; - Arrays.fill(args, "a"); - if (cmd != null) { - args[0] = cmd; - } else { - cmd = "default"; - } - try { - JInfo j = newJInfo(args); - fail("\"" + cmd + "\" requires at least " + reqArgs + " argument"); - } catch (Exception e) { - if (!isValidationException(e)) { - throw e; - } - // ignore - } - } - - public void testDefaultPID() throws Exception { - cmdPID(null, "1234"); - } - - public void testFlagsPID() throws Exception { - cmdPID("-flags", "1234"); - } - - public void testSyspropsPID() throws Exception { - cmdPID("-sysprops", "1234"); - } - - public void testReadFlagPID() throws Exception { - cmdPID("-flag", "SomeManagementFlag", "1234"); - } - - public void testSetFlag1PID() throws Exception { - cmdPID("-flag", "+SomeManagementFlag", "1234"); - } - - public void testSetFlag2PID() throws Exception { - cmdPID("-flag", "-SomeManagementFlag", "1234"); - } - - public void testSetFlag3PID() throws Exception { - cmdPID("-flag", "SomeManagementFlag=314", "1234"); - } - - public void testDefaultCore() throws Exception { - cmdCore(null, "myapp.exe", "my.core"); - } - - public void testFlagsCore() throws Exception { - cmdCore("-flags", "myapp.exe", "my.core"); - } - - public void testSyspropsCore() throws Exception { - cmdCore("-sysprops", "myapp.exe", "my.core"); - } - - public void testReadFlagCore() throws Exception { - try { - cmdCore("-flag", "SomeManagementFlag", "myapp.exe", "my.core"); - fail("Flags can not be read from core files"); - } catch (Exception e) { - if (!isValidationException(e)) { - throw e; - } - // ignore - } - } - - public void testSetFlag1Core() throws Exception { - try { - cmdCore("-flag", "+SomeManagementFlag", "myapp.exe", "my.core"); - fail("Flags can not be set in core files"); - } catch (Exception e) { - if (!isValidationException(e)) { - throw e; - } - // ignore - } - } - - public void testSetFlag2Core() throws Exception { - try { - cmdCore("-flag", "-SomeManagementFlag", "myapp.exe", "my.core"); - fail("Flags can not be set in core files"); - } catch (Exception e) { - if (!isValidationException(e)) { - throw e; - } - // ignore - } - } - - public void testSetFlag3Core() throws Exception { - try { - cmdCore("-flag", "SomeManagementFlag=314", "myapp.exe", "my.core"); - fail("Flags can not be set in core files"); - } catch (Exception e) { - if (!isValidationException(e)) { - throw e; - } - // ignore - } - } - - public void testDefaultRemote() throws Exception { - cmdRemote(null, "serverid@host"); - } - - public void testFlagsRemote() throws Exception { - cmdRemote("-flags", "serverid@host"); - } - - public void testSyspropsRemote() throws Exception { - cmdRemote("-sysprops", "serverid@host"); - } - - public void testReadFlagRemote() throws Exception { - try { - cmdCore("-flag", "SomeManagementFlag", "serverid@host"); - fail("Flags can not be read from SA server"); - } catch (Exception e) { - if (!isValidationException(e)) { - throw e; - } - // ignore - } - } - - public void testSetFlag1Remote() throws Exception { - try { - cmdCore("-flag", "+SomeManagementFlag","serverid@host"); - fail("Flags can not be set on SA server"); - } catch (Exception e) { - if (!isValidationException(e)) { - throw e; - } - // ignore - } - } - - public void testSetFlag2Remote() throws Exception { - try { - cmdCore("-flag", "-SomeManagementFlag", "serverid@host"); - fail("Flags can not be read set on SA server"); - } catch (Exception e) { - if (!isValidationException(e)) { - throw e; - } - // ignore - } - } - - public void testSetFlag3Remote() throws Exception { - try { - cmdCore("-flag", "SomeManagementFlag=314", "serverid@host"); - fail("Flags can not be read set on SA server"); - } catch (Exception e) { - if (!isValidationException(e)) { - throw e; - } - // ignore - } - } - - public void testDefaultExtraArgs() throws Exception { - cmdExtraArgs(null, 2); - } - - public void testFlagsExtraArgs() throws Exception { - cmdExtraArgs("-flags", 2); - } - - public void testSyspropsExtraArgs() throws Exception { - cmdExtraArgs("-sysprops", 2); - } - - public void testFlagExtraArgs() throws Exception { - cmdExtraArgs("-flag", 2); - } - - public void testHelp1ExtraArgs() throws Exception { - cmdExtraArgs("-h", 0); - } - - public void testHelp2ExtraArgs() throws Exception { - cmdExtraArgs("-help", 0); - } - - public void testDefaultMissingArgs() throws Exception { - cmdMissingArgs(null, 1); - } - - public void testFlagsMissingArgs() throws Exception { - cmdMissingArgs("-flags", 1); - } - - public void testSyspropsMissingArgs() throws Exception { - cmdMissingArgs("-sysprops", 1); - } - - public void testFlagMissingArgs() throws Exception { - cmdMissingArgs("-flag", 2); - } - - public void testUnknownCommand() throws Exception { - try { - JInfo j = newJInfo(new String[]{"-unknown_command"}); - fail("JInfo accepts unknown commands"); - } catch (Exception e) { - if (!isValidationException(e)) { - throw e; - } - // ignore - } - } - - private static boolean isValidationException(Throwable e) { - return e.getClass().getName().equals(VALIDATION_EXCEPTION_CLSNAME); - } -}