blob: f8d48c5728bac448e57be581baa94e575fef3958 [file] [log] [blame]
/*
* Copyright (c) 2004, 2018, 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.
*
* 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.
*/
/*
* @test
*
* @summary converted from VM Testbase nsk/jdb/options/listconnectors/listconnectors001.
* VM Testbase keywords: [quick, jpda, jdb]
* VM Testbase readme:
* DESCRIPTION
* This is a test for '-listconnectors' option of jdb.
* This test checks that jdb started with tested option prints to stdout
* list of connectors and transports, that includes all supported
* connectors and transport configurations:
* com.sun.jdi.CommandLineLaunch (dt_socket, dt_shmem)
* com.sun.jdi.RawLineLaunch (dt_socket, dt_shmem)
* com.sun.jdi.SocketAttach (dt_socket)
* com.sun.jdi.SocketListen (dt_socket)
* com.sun.jdi.SharedMemoryAttach (dt_shmem)
* com.sun.jdi.SharedMemoryListen (dt_shmem)
* Those configurations, which are not supported on tested platform,
* are just ignored.
* This test does not actually use debuggee class and any connectors
* regardless of settings in ini-file, and the main test class
* specifically overrides default behaviour of framework classes.
* The test consists of one part:
* listconnectors001.java - test driver, i.e. launches jdb
* and checks its output.
* COMMENTS
*
* @library /vmTestbase
* /test/lib
* @run driver jdk.test.lib.FileInstaller . .
* @build nsk.jdb.options.listconnectors.listconnectors001.listconnectors001
* @run main/othervm PropertyResolvingWrapper
* nsk.jdb.options.listconnectors.listconnectors001.listconnectors001
* -arch=${os.family}-${os.simpleArch}
* -waittime=5
* -debugee.vmkind=java
* -transport.address=dynamic
* -jdb=${test.jdk}/bin/jdb
* -java.options="${test.vm.opts} ${test.java.opts}"
* -workdir=.
* -jdb.option=-listconnectors
* -debugee.vmkeys="${test.vm.opts} ${test.java.opts}"
*/
package nsk.jdb.options.listconnectors.listconnectors001;
import nsk.share.*;
import nsk.share.jdb.*;
import java.io.*;
import java.util.*;
public class listconnectors001 extends JdbTest {
public static void main (String argv[]) {
System.exit(run(argv, System.out) + JCK_STATUS_BASE);
}
public static int run(String argv[], PrintStream out) {
debuggeeClass = DEBUGGEE_CLASS;
firstBreak = FIRST_BREAK;
lastBreak = LAST_BREAK;
return new listconnectors001().runTest(argv, out);
}
static final String PACKAGE_NAME = "nsk.jdb.options.connect";
static final String TEST_CLASS = PACKAGE_NAME + ".connect001";
static final String DEBUGGEE_CLASS = null;
static final String FIRST_BREAK = null;
static final String LAST_BREAK = null;
static final String TESTED_OPTION = "-listconnectors";
static final String TESTED_CONNECTORS_LIST[] = {
"com.sun.jdi.CommandLineLaunch", "dt_socket",
"com.sun.jdi.CommandLineLaunch", "dt_shmem",
"com.sun.jdi.RawCommandLineLaunch", "dt_socket",
"com.sun.jdi.RawCommandLineLaunch", "dt_shmem",
"com.sun.jdi.SocketAttach", "dt_socket",
"com.sun.jdi.SocketListen", "dt_socket",
"com.sun.jdi.SharedMemoryAttach", "dt_shmem",
"com.sun.jdi.SharedMemoryListen", "dt_shmem",
};
static final int TESTED_CONNECTORS_COUNT = TESTED_CONNECTORS_LIST.length / 2;
/*
protected void launchJdbAndDebuggee(String debuggeeClass) throws Exception {
String jdbExecPath = argumentHandler.getJdbExecPath();
String args[] = {jdbExecPath, TESTED_OPTION};
launcher = new Launcher(argumentHandler, log);
jdb = new Jdb(launcher);
jdb.launch(args);
}
*/
protected void initJdb() {
// do nothing
}
protected void runCases() {
// do noting
}
protected void afterJdbExit() {
String[] reply = jdb.getTotalReply();
for (int i = 0; i < TESTED_CONNECTORS_COUNT; i++) {
String connector = TESTED_CONNECTORS_LIST[i*2 + 0];
String transport = TESTED_CONNECTORS_LIST[i*2 + 1];
Paragrep grep = new Paragrep(reply);
Vector<String> v = new Vector<String>();
v.add(Jdb.SUPPORTED_CONNECTOR_NAME);
v.add(connector);
v.add(Jdb.SUPPORTED_TRANSPORT_NAME);
if (!transport.equals("*")) {
v.add(transport);
}
int found = grep.find(v);
if (found == 1) {
display("expected connector found:\n"
+ " connector: " + connector
+ " transport: " + transport
+ " found: " + found);
} else if (found > 1) {
failure("duplicated connector found (see jdb.stdout):\n"
+ " connector: " + connector
+ " transport: " + transport
+ " found: " + found);
} else if (argumentHandler.shouldPass(connector)
|| argumentHandler.shouldPass(connector, transport)) {
display("unsupported connector not found:\n"
+ " connector: " + connector
+ " transport: " + transport
+ " found: " + found);
} else {
failure("no expected connector found (see jdb.stdout):\n"
+ " connector: " + connector
+ " transport: " + transport
+ " found: " + found);
}
}
}
}