| /* |
| * Copyright (c) 2009, 2018 Oracle and/or its affiliates. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0, which is available at |
| * http://www.eclipse.org/legal/epl-2.0. |
| * |
| * This Source Code may also be made available under the following Secondary |
| * Licenses when the conditions for such availability set forth in the |
| * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, |
| * version 2 with the GNU Classpath Exception, which is available at |
| * https://www.gnu.org/software/classpath/license.html. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 |
| */ |
| |
| /** |
| * This is the same class as the one in v2/appserv-tests/devtests/admin/cli/src/admin. |
| * |
| * Thanks Tom and Byron for the contributions. |
| */ |
| |
| package com.sun.appserv.test; |
| |
| //import com.sun.appserv.test.BaseDevTest; |
| import java.io.BufferedReader; |
| import java.io.IOException; |
| import java.io.InputStreamReader; |
| import java.io.StringWriter; |
| import java.net.URL; |
| import java.net.URLConnection; |
| import java.util.SortedSet; |
| import java.util.TreeSet; |
| |
| public abstract class AdminBaseDevTest extends BaseDevTest { |
| |
| public AdminBaseDevTest() { |
| boolean verbose = false; |
| try { |
| verbose = Boolean.parseBoolean(System.getProperty("verbose")); |
| } |
| catch (Exception e) {} |
| |
| setVerbose(verbose); |
| if (!verbose) { |
| // System.out.println("##### Non-Verbose: Only Failures Are Printed #####"); |
| } |
| } |
| |
| @Override |
| public String getTestName() { |
| return this.getClass().getName(); |
| } |
| |
| @Override |
| public boolean report(String name, boolean success) { |
| // bnevins june 6 2010 |
| |
| // crazy base class uses a Map to store these reports. If you use |
| // the same name > 1 time they are ignored and thrown away!!! |
| // I went with this outrageous kludge because (1) it is just tests |
| // and (2) there are tens of thousands of other files in this harness!!! |
| |
| // another issue is hacking off strings after a space. Makes no sense to me!! |
| |
| if (name.length() > MAX_LENGTH - 3) |
| name = name.substring(0, MAX_LENGTH - 3); |
| String name2 = name.replace(' ', '_'); |
| if (!name2.equals(name)) { |
| write("Found spaces in the name. Replaced with underscore. " |
| + "before: " + name + ", after: " + name2); |
| name = name2; // don't foul logic below! |
| } |
| |
| int i = 0; |
| |
| while (reportNames.add(name2) == false) { |
| name2 = name + i++; |
| } |
| |
| if (!name2.equals(name)) { |
| write("Duplicate name found (" + name |
| + ") and replaced with: " + name2); |
| } |
| |
| int numpads = 60 - name2.length(); |
| |
| if (numpads > 0) |
| name2 += DASHES.substring(0, numpads); |
| |
| super.report(name2, success); |
| |
| if(!success && !isVerbose()) |
| writeFailure(); |
| return success; |
| } |
| |
| @Override |
| public boolean report(String step, AsadminReturn ret) { |
| report(step, ret.returnValue); |
| return ret.returnValue; |
| } |
| |
| void startDomain(String domainname) { |
| report(getTestName() + "-start-domain" + startstops++, |
| asadmin("start-domain", domainname)); |
| } |
| |
| void startDomain() { |
| report(getTestName() + "-start-def-domain" + startstops++, |
| asadmin("start-domain")); |
| } |
| |
| void stopDomain(String domainname) { |
| report(getTestName() + "-stop-domain" + startstops++, |
| asadmin("stop-domain", domainname)); |
| } |
| |
| void stopDomain() { |
| report(getTestName() + "-stop-def-domain" + startstops++, |
| asadmin("stop-domain")); |
| } |
| |
| final boolean verifyNoClusters() { |
| AsadminReturn ret = asadminWithOutput("list-clusters"); |
| String s = (ret.out == null) ? "" : ret.out.trim(); |
| |
| System.out.println("WARNING!!!! Work-around for ISSUE 12320 !!!!!!!!"); |
| |
| // hack -- if there are no clusters than there is no output |
| return s.toLowerCase().endsWith("list-clusters"); |
| } |
| |
| final boolean verifyNoInstances() { |
| AsadminReturn ret = asadminWithOutput("list-instances"); |
| String s = (ret.out == null) ? "" : ret.out.trim(); |
| return s.toLowerCase().indexOf("nothing to list") >= 0; |
| } |
| |
| /* |
| * Returns true if String b contains String a. |
| */ |
| public static boolean matchString(String a, String b) { |
| return b.indexOf(a) != -1; |
| } |
| |
| public static String getURL(String urlstr) { |
| try { |
| URL u = new URL(urlstr); |
| URLConnection urlc = u.openConnection(); |
| BufferedReader ir = new BufferedReader(new InputStreamReader(urlc.getInputStream(), |
| "ISO-8859-1")); |
| StringWriter ow = new StringWriter(); |
| String line; |
| while ((line = ir.readLine()) != null) { |
| ow.write(line); |
| ow.write("\n"); |
| } |
| ir.close(); |
| ow.close(); |
| return ow.getBuffer().toString(); |
| } |
| catch (IOException ex) { |
| printf("unable to fetch URL:" + urlstr); |
| return ""; |
| } |
| } |
| |
| public static void printf(String fmt, Object... args) { |
| if (DEBUG) { |
| System.out.printf("**** DEBUG MESSAGE **** " + fmt + "\n", args); |
| } |
| } |
| private final SortedSet<String> reportNames = new TreeSet<String>(); |
| private int startstops = 0; |
| protected final static boolean DEBUG; |
| protected final static boolean isHudson = Boolean.parseBoolean(System.getenv("HUDSON")); |
| |
| static { |
| String name = System.getProperty("user.name"); |
| |
| if (name != null && name.equals("bnevins")) |
| DEBUG = true; |
| else if (isHudson) |
| DEBUG = true; |
| else if (Boolean.parseBoolean(System.getenv("AS_DEBUG"))) |
| DEBUG = true; |
| else |
| DEBUG = false; |
| } |
| |
| String generateInstanceName() { |
| String s = "" + System.currentTimeMillis(); |
| s = s.substring(4, 10); |
| return "in_" + s; |
| } |
| |
| String get(String what) { |
| // note that the returned string is full of junk -- namely the HUGE asadmin |
| // command is prepended to the output. |
| // the "get" key will appear TWICE!!!!!! Once for the echo of the command itself |
| // and once for the output of the command. |
| |
| AsadminReturn ret = asadminWithOutput("get", what); |
| if (!ret.returnValue) |
| return null; |
| |
| int index = ret.outAndErr.lastIndexOf(what); |
| int len = ret.outAndErr.length(); |
| |
| if (index < 0 || len - index <= 2) |
| return null; |
| |
| // e.g. "asadmin blah foo=xyz len==20, index==13, start at index=17 |
| // which is index+lenofget-string+1 |
| int valueIndex = index + what.length() + 1; |
| return ret.outAndErr.substring(index + what.length() + 1).trim(); |
| } |
| |
| final boolean doesGetMatch(String what, String match) { |
| String ret = get(what); |
| |
| if (!ok(match) && !ok(ret)) |
| return true; |
| |
| if (!ok(match) || !ok(ret)) |
| return false; |
| |
| return (match.equals(ret)); |
| } |
| |
| // public static void runFakeServerDaemon(int port) { |
| // Thread t = new Thread(new FakeServer(port), "FakeServerListeningOn: " + port); |
| // t.setDaemon(true); |
| // t.start(); |
| // } |
| |
| final boolean ok(String s) { |
| return s != null && s.length() > 0; |
| } |
| private static final int MAX_LENGTH = 51; |
| private static final String DASHES = |
| "------------------------------------------------------------------------------------------------------------------------------"; |
| } |