/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
*
* Copyright (c) 1997-2017 Oracle and/or its affiliates. All rights reserved.
*
* The contents of this file are subject to the terms of either the GNU
* General Public License Version 2 only ("GPL") or the Common Development
* and Distribution License("CDDL") (collectively, the "License"). You
* may not use this file except in compliance with the License. You can
* obtain a copy of the License at
* https://oss.oracle.com/licenses/CDDL+GPL-1.1
* or LICENSE.txt. See the License for the specific
* language governing permissions and limitations under the License.
*
* When distributing the software, include this License Header Notice in each
* file and include the License file at LICENSE.txt.
*
* GPL Classpath Exception:
* Oracle designates this particular file as subject to the "Classpath"
* exception as provided by Oracle in the GPL Version 2 section of the License
* file that accompanied this code.
*
* Modifications:
* If applicable, add the following below the License Header, with the fields
* enclosed by brackets [] replaced by your own identifying information:
* "Portions Copyright [year] [name of copyright owner]"
*
* Contributor(s):
* If you wish your version of this file to be governed by only the CDDL or
* only the GPL Version 2, indicate your decision by adding "[Contributor]
* elects to include this software in this distribution under the [CDDL or GPL
* Version 2] license." If you don't indicate a single choice of license, a
* recipient has the option to distribute your version of this file under
* either the CDDL, the GPL Version 2 or to extend the choice of license to
* its licensees as provided above. However, if you add GPL Version 2 code
* and therefore, elected the GPL Version 2 license, then the option applies
* only if the new code is made subject to such option by the copyright
* holder.
*/
package admin;
import java.io.File;
import javax.xml.xpath.XPathConstants;
/*
* Dev test for create/delete/list cluster
* @author Bhakti Mehta
*/
public class ClusterTest extends AdminBaseDevTest {
boolean runGMSTests = true;
public static void main(String[] args) {
new ClusterTest().runTests();
}
private boolean asadmin(int numTries, int sleepBetweenCalls, final String... args) {
for (int count = 0; count < numTries; ++count) {
AsadminReturn ret = asadminWithOutput(args);
if (ret.returnValue)
return true;
TestUtils.writeErrorToDebugLog(ret, "asadmin multi-try. Try # " + (count + 1));
try {
Thread.sleep(sleepBetweenCalls);
}
catch (Exception e) {
// ignore
}
}
return false;
}
@Override
protected String getTestDescription() {
return "Unit test for create/delete/list cluster";
}
public void runTests() {
startDomain();
checkIfMulticastIsAvailable();
String xpathExpr = "count" + "(" + "/domain/clusters/cluster" + ")";
double startingNumberOfClusters = 0.0;
Object o = evalXPath(xpathExpr, XPathConstants.NUMBER);
if (o instanceof Double) {
startingNumberOfClusters = (Double) o;
}
// should fail since cluster not created yet
report("get-health-no-cluster-before", !asadmin("get-health", "cl1"));
report("create-cluster", asadmin("create-cluster", "cl1"));
testGetHealthEmptyCluster();
//create-cluster using existing config
report("create-cluster-with-config", asadmin("create-cluster",
"--config", "cl1-config",
"cl2"));
//check for duplicates
report("create-cluster-duplicates", !asadmin("create-cluster", "cl1"));
//create-cluster using non existing config
report("create-cluster-nonexistent-config", !asadmin("create-cluster",
"--config", "junk-config",
"cl3"));
//create-cluster using systemproperties
report("create-cluster-system-props", asadmin("create-cluster",
"--systemproperties", "foo=bar",
"cl4"));
AsadminReturn ret = asadminWithOutput("get", "clusters.cluster.cl4.system-property.foo.name");
boolean success = ret.outAndErr.indexOf("clusters.cluster.cl4.system-property.foo.name=foo") >= 0;
report("check-cluster-syspropname", success);
ret = asadminWithOutput("get", "clusters.cluster.cl4.system-property.foo.value");
success = ret.outAndErr.indexOf("clusters.cluster.cl4.system-property.foo.value=bar") >= 0;
report("check-cluster-syspropvalue", success);
//evaluate using xpath that there are 3 elements in the domain.xml
o = evalXPath(xpathExpr, XPathConstants.NUMBER);
if (o instanceof Double) {
report("evaluation-xpath-create-cluster", o.equals(new Double(3.0 + startingNumberOfClusters)));
}
else {
report("evaluation-xpath-create-cluster", false);
}
//list-clusters
report("list-clusters", asadmin("list-clusters"));
testDeleteClusterWithInstances();
testClusterWithObsoleteOptions();
testEndToEndDemo();
testListClusters();
testDynamicReconfigEnabledFlag();
testGetSetListCommands();
testRestartRequired();
testInfraCLIs();
testGMSSetGetValues();
cleanup();
stopDomain();
stat.printSummary();
}
/*
* Stop instance, check health, restart instance, and check again.
* This method relies on another for the actual call. It will wait
* for a bit for a positive result since the GMS notifications
* may take a few seconds to be sent.
*/
private void testGetHealthStopRestartInstance(String c, String i) {
if (!runGMSTests)
return;
final String stopped = "stopped";
final String started = "started";
final int tries = 6;
final int sleepSeconds = 10;
boolean success = false;
asadmin("stop-local-instance", i);
for (int x = 0; x < tries; x++) {
sleep(sleepSeconds);
printf("Checking instance health for instance %s, expect %s",
i, stopped);
success = checkInstanceHealth(c, i, stopped);
if (success) {
break;
}
}
report("get-health-instance-stopped", success);
success = false;
asadmin("start-local-instance", i);
for (int x = 0; x < tries; x++) {
sleep(sleepSeconds);
printf("Checking instance health for instance %s, expect %s",
i, started);
success = checkInstanceHealth(c, i, started);
if (success) {
break;
}
}
report("get-health-instance-started", success);
}
/*
* Restart the domain, wait, and check health of instances. This
* method expects that they're all in Started state.
*/
private void testGetHealthRestartedDomain(String c, String i) {
if (!runGMSTests)
return;
final int tries = 6;
final int sleepSeconds = 10;
final String started = "started";
boolean success = false;
asadmin("restart-domain");
for (int x = 0; x < tries; x++) {
sleep(sleepSeconds);
success = checkInstanceHealth(c, i, started);
if (success) {
break;
}
}
report("get-health-das-restart", success);
}
private void testGetHealthInstancesNotStarted(String c) {
if (!runGMSTests)
return;
final String state = "not started";
String out = asadminWithOutput("get-health", c).outAndErr;
boolean success = out.indexOf(state) > 0;
report("get-health-instances-not-running", success);
}
/*
* Given a status and instance in cluster cl1, reports whether or
* not that status is returned.
*/
private boolean checkInstanceHealth(String cluster,
String instanceName, String status) {
final String expected = String.format("%s %s",
instanceName, status);
String out = asadminWithOutput("get-health", cluster).outAndErr;
return out.indexOf(expected) >= 0;
}
private void testGetHealthEmptyCluster() {
AsadminReturn retVal = asadminWithOutput("get-health", "cl1");
final String expected = "No instances found for cluster cl1";
boolean success = retVal.outAndErr.indexOf(expected) >= 0;
report("get-health-empty-cluster", success);
}
/*
* Use the validate-multicast command to see if multicast is working for the
* local machine. It is known not to work on Oracle VPN. If it's not
* working, skip the GMS tests.
*/
private void checkIfMulticastIsAvailable() {
AsadminReturn retVal = asadminWithOutput("validate-multicast", "--timeout", "1");
final String expected = "Received data from";
if (retVal.outAndErr.indexOf(expected) == -1) {
runGMSTests = false;
System.out.println("WARNING: multicast unavailable, skipping GMS tests.");
}
}
private void testListClusters() {
final String testName = "issue12249-";
final String cname = "12249-cl";
final String iname = "12249-ins";
report(testName + "create-cl", asadmin("create-cluster", cname));
for (int i = 0; i < 3; i++) {
report(testName + "create-li" + i, asadmin("create-local-instance", "--cluster", cname, iname + i));
}
report(testName + "list-cl", !isClusterRunning(cname));
testGetHealthInstancesNotStarted(cname);
for (int i = 0; i < 3; i++) {
report(testName + "start-li" + i, asadmin("start-local-instance", iname + i));
}
AsadminReturn ret = asadminWithOutput("list-instances", "--long");
AsadminReturn lc = asadminWithOutput("list-clusters");
report(testName + "list-cl1", isClusterRunning(cname));
testGetHealthStopRestartInstance(cname, iname + 1);
testGetHealthRestartedDomain(cname, iname + 0);
report(testName + "stop-one", asadmin("stop-local-instance", iname + 1));
report(testName + "list-cl2", isClusterPartiallyRunning(cname));
report(testName + "start-one", asadmin("start-local-instance", iname + 1));
for (int i = 0; i < 3; i++) {
report(testName + "stop-again" + i, asadmin("stop-local-instance", iname + i));
report(testName + "delete-li" + i, asadmin("delete-local-instance", iname + i));
}
report(testName + "delete-cl", asadmin("delete-cluster", cname));
}
private void testClusterWithObsoleteOptions() {
final String cluster = "obscl";
final String testName = "obsoleteOpts-";
//Create the cluster with all of the obsolete options
//That should not fail
//Create cluster with obsolete option --haagentport
report(testName + "create-cl1", asadmin("create-cluster", "--haagentport", "4567", cluster));
report(testName + "check-cl1", asadmin("get", "clusters.cluster." + cluster));
report(testName + "delete-cl1", asadmin("delete-cluster", cluster));
//create the cluster with obsolete opts --hosts
report(testName + "create-cl2", asadmin("create-cluster", "--hosts", "junk", cluster));
//asadmin get should return the cluster
report(testName + "check-cl2", asadmin("get", "clusters.cluster." + cluster));
report(testName + "delete-cl2", asadmin("delete-cluster", cluster));
//create the cluster with obsolete opts --haadminpassword
report(testName + "create-cl3", asadmin("create-cluster", "--haadminpassword", "junk", cluster));
//asadmin get should return the cluster
report(testName + "check-cl3", asadmin("get", "clusters.cluster." + cluster));
report(testName + "delete-cl3", asadmin("delete-cluster", cluster));
//create the cluster with obsolete opts --haadminpasswordfile
report(testName + "create-cl4", asadmin("create-cluster", "--haadminpasswordfile", "junk", cluster));
//asadmin get should return the cluster
report(testName + "check-cl4", asadmin("get", "clusters.cluster." + cluster));
report(testName + "delete-cl4", asadmin("delete-cluster", cluster));
//create the cluster with obsolete opts --devicesize
report(testName + "create-cl5", asadmin("create-cluster", "--devicesize", "200", cluster));
//asadmin get should return the cluster
report(testName + "check-cl5", asadmin("get", "clusters.cluster." + cluster));
report(testName + "delete-cl5", asadmin("delete-cluster", cluster));
//create the cluster with obsolete opts --haproperty
report(testName + "create-cl6", asadmin("create-cluster", "--haproperty", "foo", cluster));
//asadmin get should return the cluster
report(testName + "check-cl6", asadmin("get", "clusters.cluster." + cluster));
report(testName + "delete-cl6", asadmin("delete-cluster", cluster));
//create the cluster with obsolete opts --autohadb
report(testName + "create-cl7", asadmin("create-cluster", "--autohadb", "foo", cluster));
//asadmin get should return the cluster
report(testName + "check-cl7", asadmin("get", "clusters.cluster." + cluster));
report(testName + "delete-cl7", asadmin("delete-cluster", cluster));
}
private void testDeleteClusterWithInstances() {
//test for issue 12172
final String iname = "xyz1";
final String cluster = "cl7";
final String testName = "issue-12172-";
report(testName + "create-cl", asadmin("create-cluster", cluster));
report(testName + "create-l-i", asadmin("create-local-instance", "--cluster", cluster, iname));
report(testName + "delete-cl-with-instance", !asadmin("delete-cluster", cluster));
report(testName + "delete-l-i", asadmin("delete-local-instance", iname));
//check if there is no server-ref property in the cluster element
report(testName + "check-serverRef", !asadmin("get", "clusters.cluster." + cluster + ".server-ref." + iname));
report(testName + "delete-cl-no-ins", asadmin("delete-cluster", cluster));
}
/*
* This is a test based on the MS1 demo of the basic clustering infrastructure.
* See http://wiki.glassfish.java.net/Wiki.jsp?page=3.1MS1ClusteringDemo
*/
private void testEndToEndDemo() {
final String tn = "end-to-end-";
final String cname = "eec1";
final String dasurl = "http://localhost:8080/";
final String i1url = "http://localhost:18080/";
final String i1name = "eein1-with-a-very-very-very-long-name";
final String i2url = "http://localhost:28080/";
final String i2name = "eein2";
final String dasmurl = "http://localhost:4848/management/domain/";
// create a cluster and two instances
report(tn + "create-cluster", asadmin("create-cluster", cname));
report(tn + "create-local-instance1", asadmin("create-local-instance",
"--cluster", cname, "--systemproperties",
"HTTP_LISTENER_PORT=18080:HTTP_SSL_LISTENER_PORT=18181:IIOP_SSL_LISTENER_PORT=13800:"
+ "IIOP_LISTENER_PORT=13700:JMX_SYSTEM_CONNECTOR_PORT=17676:IIOP_SSL_MUTUALAUTH_PORT=13801:"
+ "JMS_PROVIDER_PORT=18686:ASADMIN_LISTENER_PORT=14848", i1name));
report(tn + "create-local-instance2", asadmin("create-local-instance",
"--cluster", cname, "--systemproperties",
"HTTP_LISTENER_PORT=28080:HTTP_SSL_LISTENER_PORT=28181:IIOP_SSL_LISTENER_PORT=23800:"
+ "IIOP_LISTENER_PORT=23700:JMX_SYSTEM_CONNECTOR_PORT=27676:IIOP_SSL_MUTUALAUTH_PORT=23801:"
+ "JMS_PROVIDER_PORT=28686:ASADMIN_LISTENER_PORT=24848", i2name));
// start the instances
report(tn + "start-local-instance1", asadmin("start-local-instance", i1name));
report(tn + "start-local-instance2", asadmin("start-local-instance", i2name));
// check that the instances are there
report(tn + "list-instances", asadmin("list-instances"));
report(tn + "getindex1", matchString("GlassFish Server", getURL(i1url)));
report(tn + "getindex2", matchString("GlassFish Server", getURL(i2url)));
// To check fix for 12494 and stop such regressions
// deploy to default server before deploy to cluster and undeploy
// after undeploy from cluster
File dasapp = new File("resources", "servletonly.war");
report(tn + "DAS-deploy", asadmin("deploy", dasapp.getAbsolutePath()));
report(tn + "DAS-getapp1", matchString("So what is your lucky number?", getURL(dasurl + "war/servletonly")));
String x = getURL(dasurl + "war/servletonly");
// deploy an application to the cluster
File webapp = new File("resources", "helloworld.war");
report(tn + "CLUSTER-deploy", asadmin("deploy", "--target", cname, webapp.getAbsolutePath()));
report(tn + "CLUSTER-getapp1", matchString("Hello", getURL(i1url + "helloworld/hi.jsp")));
String s1 = getURL(i2url + "helloworld/hi.jsp");
report(tn + "CLUSTER-getapp2", matchString("Hello", s1));
report(tn + "CLUSTER-undeploy", asadmin("undeploy", "--target", cname, "helloworld"));
report(tn + "CLUSTER-get-del-app1", !matchString("Hello", getURL(i1url + "helloworld/hi.jsp")));
report(tn + "DAS-undeploy", asadmin("undeploy", "servletonly"));
report(tn + "DAS-get-del-app1", !matchString("So what is your lucky number?", getURL(i1url + "war/servletonly")));
String s = getURL(dasmurl + "servers/server");
report(tn + "getREST3a", matchString(i1name, s));
report(tn + "getREST3b", matchString(i2name, s));
report(tn + "getREST3c", matchString("server", s));
// dynamic configuration
// create several resources
report(tn + "create-jdbc-connection-pool", asadmin("create-jdbc-connection-pool",
"--datasourceclassname", "org.apache.derby.jdbc.ClientDataSource",
"--restype", "javax.sql.XADataSource",
"--target", cname, "sample_jdbc_pool"));
report(tn + "create-iiop-listener", asadmin("create-iiop-listener",
"--target", cname,
"--listeneraddress", "192.168.1.100",
"--iiopport", "1400", "sample_iiop_listener"));
report(tn + "create-connector-connection-pool", asadmin("create-connector-connection-pool",
"--target", cname,
"--raname", "jmsra",
"--connectiondefinition", "javax.jms.QueueConnectionFactory",
"jms/qConnPool"));
// delete the resources
report(tn + "delete-jdbc-connection-pool", asadmin("delete-jdbc-connection-pool",
"--target", cname, "sample_jdbc_pool"));
report(tn + "delete-iiop-listener", asadmin("delete-iiop-listener",
"--target", cname, "sample_iiop_listener"));
report(tn + "delete-connector-connection-pool", asadmin("delete-connector-connection-pool",
"--target", cname, "jms/qConnPool"));
// stop the instances
report(tn + "stop-local-instance1", asadmin("stop-local-instance", i1name));
report(tn + "stop-local-instance2", asadmin("stop-local-instance", i2name));
// delete the instances and the cluster
report(tn + "delete-local-instance1", asadmin("delete-local-instance", i1name));
report(tn + "delete-local-instance2", asadmin("delete-local-instance", i2name));
report(tn + "delete-cluster", asadmin("delete-cluster", cname));
}
private void sleep(int n) {
try {
// Give instances time to come down
Thread.sleep(n * 1000);
}
catch (InterruptedException e) {
}
}
/*
* Test for dynamic-reconfig-enabled flag
*/
private void testDynamicReconfigEnabledFlag() {
final String tn = "dref-";
final String cname = "dec1";
final String dasurl = "http://localhost:8080/";
final String i1url = "http://localhost:18080/";
final String i1name = "dein1";
final String i2url = "http://localhost:28080/";
final String i2name = "dein2";
// create a cluster and two instances
report(tn + "create-cluster", asadmin("create-cluster", cname));
report(tn + "create-local-instance1", asadmin("create-local-instance",
"--cluster", cname, "--systemproperties",
"HTTP_LISTENER_PORT=18080:HTTP_SSL_LISTENER_PORT=18181:IIOP_SSL_LISTENER_PORT=13800:"
+ "IIOP_LISTENER_PORT=13700:JMX_SYSTEM_CONNECTOR_PORT=17676:IIOP_SSL_MUTUALAUTH_PORT=13801:"
+ "JMS_PROVIDER_PORT=18686:ASADMIN_LISTENER_PORT=14848", i1name));
report(tn + "create-local-instance2", asadmin("create-local-instance",
"--cluster", cname, "--systemproperties",
"HTTP_LISTENER_PORT=28080:HTTP_SSL_LISTENER_PORT=28181:IIOP_SSL_LISTENER_PORT=23800:"
+ "IIOP_LISTENER_PORT=23700:JMX_SYSTEM_CONNECTOR_PORT=27676:IIOP_SSL_MUTUALAUTH_PORT=23801:"
+ "JMS_PROVIDER_PORT=28686:ASADMIN_LISTENER_PORT=24848", i2name));
// start the instances
report(tn + "start-local-instance1", asadmin("start-local-instance", i1name));
report(tn + "start-local-instance2", asadmin("start-local-instance", i2name));
//sleep(15);
// check that the instances are there
report(tn + "list-instances", asadmin("list-instances"));
report(tn + "getindex1", matchString("GlassFish Server", getURL(i1url)));
report(tn + "getindex2", matchString("GlassFish Server", getURL(i2url)));
// Set dynamic reconfig enabled flag for c1 to false
report(tn + "set-dyn-recfg-flag", asadmin("set", "configs.config." + cname + "-config.dynamic-reconfiguration-enabled=false"));
// deploy an application to the cluster
File webapp = new File("resources", "helloworld.war");
report(tn + "CLUSTER-deploy", asadmin("deploy", "--target", cname, webapp.getAbsolutePath()));
// Ensure that the app is not available in the instances
report(tn + "CLUSTER-getapp1-dynrecfg-disabled-beforerestart", !matchString("Hello", getURL(i1url + "helloworld/hi.jsp")));
report(tn + "CLUSTER-getapp2-dynrecfg-disabled-beforerestart", !matchString("Hello", getURL(i2url + "helloworld/hi.jsp")));
// restart the instance 1 and ensure that app is on instance1 only
report(tn + "stop-local-instance1", asadmin("stop-local-instance", i1name));
report(tn + "start-local-instance1", asadmin("start-local-instance", i1name));
report(tn + "CLUSTER-getapp1-dr-disabled-afterrestart", matchString("Hello", getURL(i1url + "helloworld/hi.jsp")));
report(tn + "CLUSTER-getapp2-dr-disabled-beforerestart", !matchString("Hello", getURL(i2url + "helloworld/hi.jsp")));
// restart the instance 2 and ensure that app is on both instances
report(tn + "stop-local-instance2", asadmin("stop-local-instance", i2name));
report(tn + "start-local-instance2", asadmin("start-local-instance", i2name));
report(tn + "CLUSTER-getapp1-dr-disabled-afterrestart", matchString("Hello", getURL(i1url + "helloworld/hi.jsp")));
report(tn + "CLUSTER-getapp2-dr-disabled-afterrestart", matchString("Hello", getURL(i2url + "helloworld/hi.jsp")));
//Undeploy the app; ensure that the app is still available
report(tn + "CLUSTER-undeploy", asadmin("undeploy", "--target", cname, "helloworld"));
report(tn + "CLUSTER-getapp1-dr-disabled-beforerestart", matchString("Hello", getURL(i1url + "helloworld/hi.jsp")));
report(tn + "CLUSTER-getapp2-dr-disabled-beforerestart", matchString("Hello", getURL(i2url + "helloworld/hi.jsp")));
// restart the instance 1 and ensure that app is gone on instance1 only
report(tn + "stop-local-instance1", asadmin("stop-local-instance", i1name));
report(tn + "start-local-instance1", asadmin("start-local-instance", i1name));
report(tn + "CLUSTER-getapp1-dr-disabled-afterrestart", !matchString("Hello", getURL(i1url + "helloworld/hi.jsp")));
report(tn + "CLUSTER-getapp2-dr-disabled-beforerestart", matchString("Hello", getURL(i2url + "helloworld/hi.jsp")));
// restart the instance 2 and ensure that app is gone on both instances
report(tn + "stop-local-instance2", asadmin("stop-local-instance", i2name));
report(tn + "start-local-instance2", asadmin("start-local-instance", i2name));
report(tn + "CLUSTER-getapp1-dr-disabled-afterrestart", !matchString("Hello", getURL(i1url + "helloworld/hi.jsp")));
report(tn + "CLUSTER-getapp2-dr-disabled-afterrestart", !matchString("Hello", getURL(i2url + "helloworld/hi.jsp")));
// Set dynamic reconfig enabled flag for c1 to true
report(tn + "set-dyn-recfg-flag", asadmin("set", "configs.config." + cname + "-config.dynamic-reconfiguration-enabled=true"));
// deploy an application to the cluster
report(tn + "CLUSTER-deploy", asadmin("deploy", "--target", cname, webapp.getAbsolutePath()));
// Ensure that the app is available in the instances
report(tn + "CLUSTER-getapp1-dr-enabled", matchString("Hello", getURL(i1url + "helloworld/hi.jsp")));
report(tn + "CLUSTER-getapp2-dr-enabled", matchString("Hello", getURL(i2url + "helloworld/hi.jsp")));
//Undeploy the app; ensure that the app is not available
report(tn + "CLUSTER-undeploy", asadmin("undeploy", "--target", cname, "helloworld"));
report(tn + "CLUSTER-getapp1-dr-enabled", !matchString("Hello", getURL(i1url + "helloworld/hi.jsp")));
report(tn + "CLUSTER-getapp2-dr-enabled", !matchString("Hello", getURL(i2url + "helloworld/hi.jsp")));
// Cleanup
report(tn + "stop-local-instance1", asadmin("stop-local-instance", i1name));
report(tn + "stop-local-instance2", asadmin("stop-local-instance", i2name));
report(tn + "delete-local-instance1", asadmin("delete-local-instance", i1name));
report(tn + "delete-local-instance2", asadmin("delete-local-instance", i2name));
report(tn + "delete-cluster", asadmin("delete-cluster", cname));
}
/*
* Test for get, set, list commands
*/
private void testGetSetListCommands() {
final String tn = "getsetlist-";
final String cname = "gslc1";
final String dasurl = "http://localhost:8080/";
final String i1url = "http://localhost:18080/";
final String i1name = "gslin1";
final String i2url = "http://localhost:28080/";
final String i2name = "gslin2";
final String i3url = "http://localhost:38080/";
final String i3name = "gslin3";
// create a cluster and two instances
report(tn + "create-cluster", asadmin("create-cluster", cname));
report(tn + "create-local-instance1", asadmin("create-local-instance",
"--cluster", cname, "--systemproperties",
"HTTP_LISTENER_PORT=18080:HTTP_SSL_LISTENER_PORT=18181:IIOP_SSL_LISTENER_PORT=13800:"
+ "IIOP_LISTENER_PORT=13700:JMX_SYSTEM_CONNECTOR_PORT=17676:IIOP_SSL_MUTUALAUTH_PORT=13801:"
+ "JMS_PROVIDER_PORT=18686:ASADMIN_LISTENER_PORT=14848", i1name));
report(tn + "create-local-instance2", asadmin("create-local-instance",
"--cluster", cname, "--systemproperties",
"HTTP_LISTENER_PORT=28080:HTTP_SSL_LISTENER_PORT=28181:IIOP_SSL_LISTENER_PORT=23800:"
+ "IIOP_LISTENER_PORT=23700:JMX_SYSTEM_CONNECTOR_PORT=27676:IIOP_SSL_MUTUALAUTH_PORT=23801:"
+ "JMS_PROVIDER_PORT=28686:ASADMIN_LISTENER_PORT=24848", i2name));
report(tn + "create-local-instance3", asadmin("create-local-instance",
"--systemproperties",
"HTTP_LISTENER_PORT=38080:HTTP_SSL_LISTENER_PORT=38181:IIOP_SSL_LISTENER_PORT=33800:"
+ "IIOP_LISTENER_PORT=33700:JMX_SYSTEM_CONNECTOR_PORT=37676:IIOP_SSL_MUTUALAUTH_PORT=33801:"
+ "JMS_PROVIDER_PORT=38686:ASADMIN_LISTENER_PORT=34848", i3name));
// start the instances
// 5/22/2013 bnevins
// the following start-cluster is failing intermittently.
// Added some more diagnostics.
AsadminReturn ret = asadminWithOutput(600000, "start-cluster", cname);
if(!ret.returnValue) {
report(tn + "start-cluster", false);
ret = asadminWithOutput("list-clusters");
TestUtils.writeErrorToDebugLog(ret, "Followup diagnostics. the cluster ought to be running!");
ret = asadminWithOutput("list-instances", "--long");
TestUtils.writeErrorToDebugLog(ret, "Followup diagnostics. the instances (gsli1,2,3) ought to all be running!");
}
else
report(tn + "start-cluster", true);
report(tn + "start-local-instance3", asadmin("start-local-instance", i3name));
// bnevins
// fixme
// get rid of this !!!!
sleep(10);
// check that the instances are there
report(tn + "getindex1", matchString("GlassFish Server", getURL(i1url)));
report(tn + "getindex2", matchString("GlassFish Server", getURL(i2url)));
report(tn + "getindex3", matchString("GlassFish Server", getURL(i3url)));
// check if list lists all configs created
ret = asadminWithOutput("list", "configs.config");
boolean success = ret.outAndErr.indexOf("configs.config." + cname + "-config") >= 0;
report("list-cluster-config", success);
success = ret.outAndErr.indexOf("configs.config." + i3name + "-config") >= 0;
report("list-instance-config", success);
success = ret.outAndErr.indexOf("configs.config." + i2name + "-config") < 0;
report("list-instance-config-error-test", success);
// Check is get/set gets replicated
ret = asadminWithOutput("get", "clusters.cluster." + cname);
success = ret.outAndErr.indexOf("clusters.cluster." + cname + ".gms-enabled=true") >= 0;
report("get-cluster-gms-attr", success);
ret = asadminWithOutput("set", "clusters.cluster." + cname + ".gms-enabled=false");
ret = asadminWithOutput("get", "clusters.cluster." + cname + ".gms-enabled");
success = ret.outAndErr.indexOf("clusters.cluster." + cname + ".gms-enabled=false") >= 0;
report("get-cluster-gms-attr-after-reset", success);
ret = asadminWithOutput("get", "clusters.cluster." + cname + ".gms-enabled");
success = ret.outAndErr.indexOf("clusters.cluster." + cname + ".gms-enabled=false") >= 0;
report("get-target-gms-attr-after-reset1", success);
// Test fix for 12880 : short path names in get/set
File webapp = new File("resources", "helloworld.war");
report(tn + "in3-deploy", asadmin("deploy", "--target", i3name, webapp.getAbsolutePath()));
ret = asadminWithOutput("get", i3name + ".application-ref.*");
success = ret.outAndErr.indexOf(i3name + ".application-ref.helloworld.enabled=true") >= 0;
report("get-enable-attr-before-reset", success);
ret = asadminWithOutput("set", i3name + ".application-ref.helloworld.enabled=false");
ret = asadminWithOutput("get", i3name + ".application-ref.*");
success = ret.outAndErr.indexOf(i3name + ".application-ref.helloworld.enabled=false") >= 0;
report("get-enable-attr-after-reset1", success);
ret = asadminWithOutput("set", i3name + ".application-ref.helloworld.enabled=true");
ret = asadminWithOutput("get", "servers.server." + i3name + ".application-ref.*");
success = ret.outAndErr.indexOf("servers.server." + i3name + ".application-ref.helloworld.enabled=true") >= 0;
report("get-enable-attr-before-reset2", success);
report(tn + "in3-undeploy", asadmin("undeploy", "--target", i3name, "helloworld"));
// Test Get, Set, List for monitoring option
ret = asadminWithOutput("list", "-m", i3name + ".*");
success = ret.outAndErr.indexOf(i3name + ".jvm") < 0;
report("list-without-enabling-monitoring", success);
ret = asadminWithOutput("set", i3name + "-config.monitoring-service.module-monitoring-levels.jvm=HIGH");
ret = asadminWithOutput("list", "-m", i3name + ".*");
success = ret.outAndErr.indexOf(i3name + ".jvm") >= 0;
report("list-after-enabling-monitoring", success);
ret = asadminWithOutput("list", "-m", i2name + ".*");
success = ret.outAndErr.indexOf(i2name + ".jvm") < 0;
report("list-without-enabling-monitoring-in2", success);
ret = asadminWithOutput("get", i3name + "-config.monitoring-service.module-monitoring-levels.jvm");
success = ret.outAndErr.indexOf(i3name + "-config.monitoring-service.module-monitoring-levels.jvm=HIGH") >= 0;
report("get-after-enabling-monitoring-without-m", success);
// Cleanup
report(tn + "stop-local-instance1", asadmin("stop-local-instance", i1name));
report(tn + "stop-local-instance2", asadmin("stop-local-instance", i2name));
report(tn + "stop-local-instance3", asadmin("stop-local-instance", i3name));
report(tn + "delete-local-instance1", asadmin("delete-local-instance", i1name));
report(tn + "delete-local-instance2", asadmin("delete-local-instance", i2name));
report(tn + "delete-local-instance3", asadmin("delete-local-instance", i3name));
report(tn + "delete-cluster", asadmin("delete-cluster", cname));
}
/*
* Test for restart required
*/
private void testRestartRequired() {
final String tn = "resreq-";
final String cname = "resreqcluster";
final String i1name = "resreq1";
final String i2name = "resreq2";
final String i3name = "resreq3";
// create a cluster and two instances
report(tn + "create-cluster", asadmin("create-cluster", cname));
report(tn + "create-local-instance1", asadmin("create-local-instance",
"--cluster", cname, i1name));
report(tn + "create-local-instance2", asadmin("create-local-instance",
"--cluster", cname, i2name));
report(tn + "create-local-instance3", asadmin("create-local-instance",
i3name));
// start the instances
report(tn + "start-local-instance1", asadmin("start-local-instance", i1name));
report(tn + "start-local-instance2", asadmin("start-local-instance", i2name));
report(tn + "start-local-instance3", asadmin("start-local-instance", i3name));
// check that the instances are there
AsadminReturn ret = asadminWithOutput("list-instances");
boolean success = checkListInstancesOutputIfRunning(ret.outAndErr, i1name);
report(tn + "test-in1-running", success);
success = checkListInstancesOutputIfRunning(ret.outAndErr, i2name);
report(tn + "test-in2-running", success);
success = checkListInstancesOutputIfRunning(ret.outAndErr, i3name);
report(tn + "test-in3-running", success);
// Set dynamic reconfig enabled flag for c1 to false
report(tn + "set-dyn-recfg-flag", asadmin("set", "configs.config." + cname + "-config.dynamic-reconfiguration-enabled=false"));
// Execute command
ret = asadminWithOutput("create-jdbc-connection-pool",
"--datasourceclassname",
"org.apache.derby.jdbc.ClientDataSource", "--restype",
"javax.sql.XADataSource", "--target", cname, "testPool");
success = ret.outAndErr.indexOf("WARNING") >= 0;
report(tn + "test-dyn-recfg-disabled", success);
// Test instance states
ret = asadminWithOutput("list-instances", i1name);
success = ret.outAndErr.indexOf("[pending config changes are:") >= 0;
report(tn + "test-in1-requires-restart", success);
ret = asadminWithOutput("list-instances", i2name);
success = ret.outAndErr.indexOf("[pending config changes are:") >= 0;
report(tn + "test-in2-requires-restart", success);
ret = asadminWithOutput("list-instances", i3name);
success = checkListInstancesOutputIfRunning(ret.outAndErr, i3name);
report(tn + "test-in3-does-not-require-restart", success);
// Test failed command being appended
// Execute command
ret = asadminWithOutput("create-jdbc-connection-pool",
"--datasourceclassname",
"org.apache.derby.jdbc.ClientDataSource", "--restype",
"javax.sql.XADataSource", "--target", cname, "testPool2");
success = ret.outAndErr.indexOf("WARNING") >= 0;
report(tn + "test-dyn-recfg-disabled", success);
// Test instance states
ret = asadminWithOutput("list-instances", i1name);
success = ret.outAndErr.indexOf("create-jdbc-connection-pool testPool;") >= 0;
report(tn + "test-in1-has-1st-failed-cmd", success);
success = ret.outAndErr.indexOf("create-jdbc-connection-pool testPool2") >= 0;
report(tn + "test-in1-has-2nd-failed-cmd", success);
ret = asadminWithOutput("list-instances", i2name);
success = ret.outAndErr.indexOf("create-jdbc-connection-pool testPool;") >= 0;
report(tn + "test-in2-has-1st-failed-cmd", success);
success = ret.outAndErr.indexOf("create-jdbc-connection-pool testPool2") >= 0;
report(tn + "test-in2-has-2nd-failed-cmd", success);
ret = asadminWithOutput("list-instances", i3name);
success = checkListInstancesOutputIfRunning(ret.outAndErr, i3name);
report(tn + "test-in3-does-not-require-restart", success);
// Test that restart-required persisted across DAS restarts
asadminWithOutput("restart-domain");
// Test instance states
ret = asadminWithOutput("list-instances", i1name);
success = ret.outAndErr.indexOf("create-jdbc-connection-pool testPool;") >= 0;
report(tn + "test-in1-state-after-restart", success);
success = ret.outAndErr.indexOf("create-jdbc-connection-pool testPool2") >= 0;
report(tn + "test-in1-state-after-restart", success);
ret = asadminWithOutput("list-instances", i2name);
success = ret.outAndErr.indexOf("create-jdbc-connection-pool testPool;") >= 0;
report(tn + "test-in2-state-after-restart", success);
success = ret.outAndErr.indexOf("create-jdbc-connection-pool testPool2") >= 0;
report(tn + "test-in2-state-after-restart", success);
ret = asadminWithOutput("list-instances", i3name);
success = checkListInstancesOutputIfRunning(ret.outAndErr, i3name);
report(tn + "test-in3-state-after-restart", success);
// Test that instance restart, clears restart-required flag
report(tn + "stop-local-instance1", asadmin("stop-local-instance", i1name));
report(tn + "stop-local-instance2", asadmin("stop-local-instance", i2name));
// the following line occasionally fails in Windows. Do multi-try and gather
// diagnostic info...
report(tn + "start-local-instance1", asadmin(5, 100000, "start-local-instance", i1name));
report(tn + "start-local-instance2", asadmin(5, 100000, "start-local-instance", i2name));
// Test instance states
ret = asadminWithOutput("list-instances");
success = checkListInstancesOutputIfRunning(ret.outAndErr, i1name);
report(tn + "test-in1-running", success);
success = checkListInstancesOutputIfRunning(ret.outAndErr, i2name);
report(tn + "test-in2-running", success);
// Cleanup
report(tn + "set-dyn-recfg-flag", asadmin("set", "configs.config." + cname + "-config.dynamic-reconfiguration-enabled=true"));
asadmin("delete-jdbc-connection-pool", "testPool");
asadmin("delete-jdbc-connection-pool", "testPool2");
report(tn + "stop-local-instance1", asadmin("stop-local-instance", i1name));
report(tn + "stop-local-instance2", asadmin("stop-local-instance", i2name));
report(tn + "stop-local-instance3", asadmin("stop-local-instance", i3name));
report(tn + "delete-local-instance1", asadmin("delete-local-instance", i1name));
report(tn + "delete-local-instance2", asadmin("delete-local-instance", i2name));
report(tn + "delete-local-instance3", asadmin("delete-local-instance", i3name));
report(tn + "delete-cluster", asadmin("delete-cluster", cname));
}
/*
* Test for infra commands *system-properties, *profiler, *jvmoptions
*/
private void testInfraCLIs() {
final String tn = "infracli-";
final String cname = "infrac1";
final String i1name = "infrai1";
final String i2name = "infrai2";
final String i3name = "infrai3";
// create a cluster and two instances
report(tn + "create-cluster", asadmin("create-cluster", cname));
report(tn + "create-local-instance1", asadmin("create-local-instance",
"--cluster", cname, i1name));
report(tn + "create-local-instance2", asadmin("create-local-instance",
"--cluster", cname, i2name));
report(tn + "create-local-instance2", asadmin("create-local-instance",
i3name));
// start the instances
report(tn + "start-local-instance1", asadmin("start-local-instance", i1name));
report(tn + "start-local-instance2", asadmin("start-local-instance", i2name));
report(tn + "start-local-instance2", asadmin("start-local-instance", i3name));
// create jvm-options command
report(tn + "create-jvm-option-das", asadmin("create-jvm-options", "-Ddas=server"));
report(tn + "create-jvm-option-cluster", asadmin("create-jvm-options",
"--target", cname, "-Dcl=in1in2"));
report(tn + "create-jvm-option-instance", asadmin("create-jvm-options",
"--target", i3name, "-Din3=in3"));
// Test list output
AsadminReturn ret = asadminWithOutput("list-jvm-options");
boolean success = ret.outAndErr.indexOf("-Ddas=server") >= 0;
report(tn + "test-das-has-das-jvm-option", success);
success = ret.outAndErr.indexOf("-Dcl=in1in2") < 0;
report(tn + "test-das-has-no-cl-jvm-option", success);
success = ret.outAndErr.indexOf("-Din3=in3") < 0;
report(tn + "test-das-has-no-in3-jvm-option", success);
ret = asadminWithOutput("list-jvm-options", "--target", cname);
success = ret.outAndErr.indexOf("-Ddas=server") < 0;
report(tn + "test-cluster-has-no-das-jvm-option", success);
success = ret.outAndErr.indexOf("-Dcl=in1in2") >= 0;
report(tn + "test-cluster-has-cl-jvm-option", success);
success = ret.outAndErr.indexOf("-Din3=in3") < 0;
report(tn + "test-cluster-has-no-in3-jvm-option", success);
ret = asadminWithOutput("list-jvm-options", "--target", i3name);
success = ret.outAndErr.indexOf("-Ddas=server") < 0;
report(tn + "test-instance-has-no-das-jvm-option", success);
success = ret.outAndErr.indexOf("-Dcl=in1in2") < 0;
report(tn + "test-instance-has-no-cl-jvm-option", success);
success = ret.outAndErr.indexOf("-Din3=in3") >= 0;
report(tn + "test-instance-has-in3-jvm-option", success);
// delete jvm-options command
report(tn + "delete-jvm-option-das", asadmin("delete-jvm-options", "-Ddas=server"));
report(tn + "delete-jvm-option-cluster", asadmin("delete-jvm-options",
"--target", cname, "-Dcl=in1in2"));
report(tn + "delete-jvm-option-instance", asadmin("delete-jvm-options",
"--target", i3name, "-Din3=in3"));
// Test list output
ret = asadminWithOutput("list-jvm-options");
success = ret.outAndErr.indexOf("-Ddas=server") < 0;
report(tn + "test-das-has-no-das-jvm-option", success);
success = ret.outAndErr.indexOf("-Dcl=in1in2") < 0;
report(tn + "test-das-has-no-cl-jvm-option", success);
success = ret.outAndErr.indexOf("-Din3=in3") < 0;
report(tn + "test-das-has-no-in3-jvm-option", success);
ret = asadminWithOutput("list-jvm-options", "--target", cname);
success = ret.outAndErr.indexOf("-Ddas=server") < 0;
report(tn + "test-cluster-has-no-das-jvm-option", success);
success = ret.outAndErr.indexOf("-Dcl=in1in2") < 0;
report(tn + "test-cluster-has-no-cl-jvm-option", success);
success = ret.outAndErr.indexOf("-Din3=in3") < 0;
report(tn + "test-cluster-has-no-in3-jvm-option", success);
ret = asadminWithOutput("list-jvm-options", "--target", i3name);
success = ret.outAndErr.indexOf("-Ddas=server") < 0;
report(tn + "test-instance-has-no-das-jvm-option", success);
success = ret.outAndErr.indexOf("-Dcl=in1in2") < 0;
report(tn + "test-instance-has-no-cl-jvm-option", success);
success = ret.outAndErr.indexOf("-Din3=in3") < 0;
report(tn + "test-instance-has-no-in3-jvm-option", success);
// Test create-jvm fails on clustered instances
report(tn + "create-jvm-option-clustered-instance", !asadmin("create-jvm-options", "--target", i2name, "-Dcl=in1in2"));
// create-system-properties command
report(tn + "create-system-properties-das", asadmin("create-system-properties", "das=server"));
report(tn + "create-system-properties-cluster", asadmin("create-system-properties", "--target", cname, "cl=in1in2"));
report(tn + "create-system-properties-clusteredins", asadmin("create-system-properties", "--target", i2name, "clins=in2"));
report(tn + "create-system-properties-instance", asadmin("create-system-properties", "--target", i3name, "in3=in3"));
// Test list output
ret = asadminWithOutput("list-system-properties");
success = ret.outAndErr.indexOf("das=server") >= 0;
report(tn + "test-das-has-das-system-properties", success);
success = ret.outAndErr.indexOf("cl=in1in2") < 0;
report(tn + "test-das-has-no-cl-system-properties", success);
success = ret.outAndErr.indexOf("clins=in2") < 0;
report(tn + "test-das-has-no-clins-system-properties", success);
success = ret.outAndErr.indexOf("in3=in3") < 0;
report(tn + "test-das-has-no-in3-system-properties", success);
ret = asadminWithOutput("list-system-properties", cname);
success = ret.outAndErr.indexOf("das=server") < 0;
report(tn + "test-cluster-has-no-das-system-properties", success);
success = ret.outAndErr.indexOf("cl=in1in2") >= 0;
report(tn + "test-cluster-has-cl-system-properties", success);
success = ret.outAndErr.indexOf("clins=in2") < 0;
report(tn + "test-das-has-no-clins-system-properties", success);
success = ret.outAndErr.indexOf("in3=in3") < 0;
report(tn + "test-cluster-has-no-in3-system-properties", success);
ret = asadminWithOutput("list-system-properties", i3name);
success = ret.outAndErr.indexOf("das=server") < 0;
report(tn + "test-instance-has-no-das-system-properties", success);
success = ret.outAndErr.indexOf("cl=in1in2") < 0;
report(tn + "test-instance-has-no-cl-system-properties", success);
success = ret.outAndErr.indexOf("clins=in2") < 0;
report(tn + "test-das-has-no-clins-system-properties", success);
success = ret.outAndErr.indexOf("in3=in3") >= 0;
report(tn + "test-instance-has-in3-system-properties", success);
ret = asadminWithOutput("list-system-properties", i2name);
success = ret.outAndErr.indexOf("das=server") < 0;
report(tn + "test-instance-has-no-das-system-properties", success);
success = ret.outAndErr.indexOf("cl=in1in2") < 0;
report(tn + "test-instance-has-no-cl-system-properties", success);
success = ret.outAndErr.indexOf("clins=in2") >= 0;
report(tn + "test-das-has-clins-system-properties", success);
success = ret.outAndErr.indexOf("in3=in3") < 0;
report(tn + "test-instance-has-in3-system-properties", success);
// delete system-properties command
report(tn + "delete-system-property-das", asadmin("delete-system-property", "das"));
report(tn + "delete-system-property-cluster", asadmin("delete-system-property", "--target", cname, "cl"));
report(tn + "delete-system-property-instance", asadmin("delete-system-property", "--target", i3name, "in3"));
report(tn + "delete-system-property-instance", asadmin("delete-system-property", "--target", i2name, "clins"));
// Test list output
ret = asadminWithOutput("list-system-properties");
success = ret.outAndErr.indexOf("das=server") < 0;
report(tn + "test-das-has-no-das-system-properties", success);
success = ret.outAndErr.indexOf("cl=in1in2") < 0;
report(tn + "test-das-has-no-cl-system-properties", success);
success = ret.outAndErr.indexOf("clins=in2") < 0;
report(tn + "test-das-has-no-clins-system-properties", success);
success = ret.outAndErr.indexOf("in3=in3") < 0;
report(tn + "test-das-has-no-in3-system-properties", success);
ret = asadminWithOutput("list-system-properties", "--target", cname);
success = ret.outAndErr.indexOf("das=server") < 0;
report(tn + "test-cluster-has-no-das-system-properties", success);
success = ret.outAndErr.indexOf("cl=in1in2") < 0;
report(tn + "test-cluster-has-no-cl-system-properties", success);
success = ret.outAndErr.indexOf("clins=in2") < 0;
report(tn + "test-das-has-no-clins-system-properties", success);
success = ret.outAndErr.indexOf("in3=in3") < 0;
report(tn + "test-cluster-has-no-in3-system-properties", success);
ret = asadminWithOutput("list-system-properties", "--target", i3name);
success = ret.outAndErr.indexOf("das=server") < 0;
report(tn + "test-instance-has-no-das-system-properties", success);
success = ret.outAndErr.indexOf("cl=in1in2") < 0;
report(tn + "test-instance-has-no-cl-system-properties", success);
success = ret.outAndErr.indexOf("clins=in2") < 0;
report(tn + "test-das-has-no-clins-system-properties", success);
success = ret.outAndErr.indexOf("in3=in3") < 0;
report(tn + "test-instance-has-no-in3-system-properties", success);
ret = asadminWithOutput("list-system-properties", "--target", i2name);
success = ret.outAndErr.indexOf("das=server") < 0;
report(tn + "test-instance-has-no-das-system-properties", success);
success = ret.outAndErr.indexOf("cl=in1in2") < 0;
report(tn + "test-instance-has-no-cl-system-properties", success);
success = ret.outAndErr.indexOf("clins=in2") < 0;
report(tn + "test-das-has-no-clins-system-properties", success);
success = ret.outAndErr.indexOf("in3=in3") < 0;
report(tn + "test-instance-has-no-in3-system-properties", success);
// Cleanup
report(tn + "stop-local-instance1", asadmin("stop-local-instance", i1name));
report(tn + "stop-local-instance2", asadmin("stop-local-instance", i2name));
report(tn + "stop-local-instance3", asadmin("stop-local-instance", i3name));
report(tn + "delete-local-instance1", asadmin("delete-local-instance", i1name));
report(tn + "delete-local-instance2", asadmin("delete-local-instance", i2name));
report(tn + "delete-local-instance3", asadmin("delete-local-instance", i3name));
report(tn + "delete-cluster", asadmin("delete-cluster", cname));
}
private void testGMSSetGetValues() {
final String tn = "setgetGMSvaluescli-";
final String cname = "gmscl";
final String i1name = "i1";
//create-cluster for gms set get testing
report(tn + "create-cluster-" + cname, asadmin("create-cluster",
"--multicastport", "2231",
"--multicastaddress", "228.9.1.3", cname));
// create an instance
report(tn + "create-instance-" + i1name, asadmin("create-instance",
"--node", "localhost-domain1", "--cluster", cname,
"--systemproperties", "GMS-BIND-INTERFACE-ADDRESS-" + cname + "=192.168.10.1:GMS_LISTENER_PORT-" + cname + "=9492",
i1name));
String expected = "true";
String dottedattributename = "clusters.cluster." + cname + ".gms-enabled";
AsadminReturn ret = asadminWithOutput("get", dottedattributename);
boolean success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-get-gms-enabled=" + expected, success);
expected = "false";
dottedattributename = "clusters.cluster." + cname + ".gms-enabled";
ret = asadminWithOutput("set", dottedattributename + "=" + expected);
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-set-get-gms-enabled=" + expected, success);
expected = "228.9.1.3";
dottedattributename = "clusters.cluster." + cname + ".gms-multicast-address";
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-get-gms-multicast-address=" + expected, success);
expected = "229.10.2.2";
dottedattributename = "clusters.cluster." + cname + ".gms-multicast-address";
ret = asadminWithOutput("set", dottedattributename + "=" + expected);
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-set-get-gms-multicast-address=" + expected, success);
expected = "2231";
dottedattributename = "clusters.cluster." + cname + ".gms-multicast-port";
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-get-gms-multicast-port=" + expected, success);
expected = "3388";
dottedattributename = "clusters.cluster." + cname + ".gms-multicast-port";
ret = asadminWithOutput("set", dottedattributename + "=" + expected);
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-set-get-gms-multicast-port=" + expected, success);
expected = "3";
dottedattributename = "configs.config." + cname + "-config.group-management-service.failure-detection.max-missed-heartbeats";
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-get-max-missed-heartbeats=" + expected, success);
expected = "4";
dottedattributename = "configs.config." + cname + "-config.group-management-service.failure-detection.max-missed-heartbeats";
ret = asadminWithOutput("set", dottedattributename + "=" + expected);
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-set-get-max-missed-heartbeats=" + expected, success);
expected = "2000";
dottedattributename = "configs.config." + cname + "-config.group-management-service.failure-detection.heartbeat-frequency-in-millis";
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-get-heartbeat-frequency-in-millis=" + expected, success);
expected = "3111";
dottedattributename = "configs.config." + cname + "-config.group-management-service.failure-detection.heartbeat-frequency-in-millis";
ret = asadminWithOutput("set", dottedattributename + "=" + expected);
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-set-get-heartbeat-frequency-in-millis=" + expected, success);
expected = "1500";
dottedattributename = "configs.config." + cname + "-config.group-management-service.failure-detection.verify-failure-waittime-in-millis";
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-get-heartbeat-frequency-in-millis=" + expected, success);
expected = "2611";
dottedattributename = "configs.config." + cname + "-config.group-management-service.failure-detection.verify-failure-waittime-in-millis";
ret = asadminWithOutput("set", dottedattributename + "=" + expected);
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-set-get-verify-failure-waittime-in-millis=" + expected, success);
expected = "10000";
dottedattributename = "configs.config." + cname + "-config.group-management-service.failure-detection.verify-failure-connect-timeout-in-millis";
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-get-verify-failure-connect-timeout-in-millis=" + expected, success);
expected = "21111";
dottedattributename = "configs.config." + cname + "-config.group-management-service.failure-detection.verify-failure-connect-timeout-in-millis";
ret = asadminWithOutput("set", dottedattributename + "=" + expected);
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-set-get-verify-failure-connect-timeout-in-millis=" + expected, success);
expected = "GMS-BIND-INTERFACE-ADDRESS-" + cname;
String expected2 = "129.166.10.1";
String setValue = expected + "=" + expected2;
dottedattributename = "servers.server.server.system-property.GMS-BIND-INTERFACE-ADDRESS-" + cname + ".name";
ret = asadminWithOutput("create-system-properties", setValue);
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-create-system-properties-get-das-GMS-BIND-INTERFACE-ADDRESS-name=" + expected, success);
dottedattributename = "servers.server.server.system-property.GMS-BIND-INTERFACE-ADDRESS-" + cname + ".value";
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected2) >= 0;
report(tn + "test-create-system-properties-get-das-GMS-BIND-INTERFACE-ADDRESS-value=" + expected2, success);
expected = "${GMS_LISTENER_PORT-" + cname + "}";
dottedattributename = "clusters.cluster." + cname + ".property.GMS_LISTENER_PORT";
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-get-GMS_LISTENER_PORT=" + expected, success);
expected = "${GMS-BIND-INTERFACE-ADDRESS-" + cname + "}";
dottedattributename = "clusters.cluster." + cname + ".gms-bind-interface-address";
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-get-gms-bind-interface-address=" + expected, success);
expected = "192.168.10.1";
dottedattributename = "servers.server." + i1name + ".system-property.GMS-BIND-INTERFACE-ADDRESS-" + cname + ".value";
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-get--instance-GMS-BIND-INTERFACE-ADDRESS-value=" + expected, success);
expected = "193.169.11.2";
dottedattributename = "servers.server." + i1name + ".system-property.GMS-BIND-INTERFACE-ADDRESS-" + cname + ".value";
ret = asadminWithOutput("set", dottedattributename + "=" + expected);
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-set-get-instance-GMS-BIND-INTERFACE-ADDRESS-value=" + expected, success);
expected = "GMS-BIND-INTERFACE-ADDRESS-" + cname;
dottedattributename = "servers.server." + i1name + ".system-property.GMS-BIND-INTERFACE-ADDRESS-" + cname + ".name";
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-get-instance-GMS-BIND-INTERFACE-ADDRESS-name=" + expected, success);
expected = "9492";
dottedattributename = "servers.server." + i1name + ".system-property.GMS_LISTENER_PORT-" + cname + ".value";
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-get-GMS_LISTENER_PORT-" + cname + ".value=" + expected, success);
expected = "8583";
dottedattributename = "servers.server." + i1name + ".system-property.GMS_LISTENER_PORT-" + cname + ".value";
ret = asadminWithOutput("set", dottedattributename + "=" + expected);
ret = asadminWithOutput("get", dottedattributename);
success = ret.outAndErr.indexOf(dottedattributename + "=" + expected) >= 0;
report(tn + "test-set-get-GMS_LISTENER_PORT-" + cname + ".value=" + expected, success);
// Cleanup
report(tn + "delete-instance", asadmin("delete-instance", i1name));
report(tn + "delete-cluster", asadmin("delete-cluster", cname));
}
@Override
public void cleanup() {
//Cleanup the code so that tests run successfully next time
report("delete-cl1", asadmin("delete-cluster", "cl1"));
report("delete-cl2", asadmin("delete-cluster", "cl2"));
report("delete-cl1-config", asadmin("delete-config", "cl1-config"));
report("delete-cl3", !asadmin("delete-cluster", "cl3")); // should not have been created
report("delete-cl4", asadmin("delete-cluster", "cl4"));
report("get-health-no-cluster-after", !asadmin("get-health", "cl1"));
AsadminReturn ret = asadminWithOutput("list-clusters");
String s = (ret.out == null) ? "" : ret.out.trim();
// make sure none of OUR clusters are in there. Other clusters that are
// in the user's domain are OK...
boolean success = s.indexOf("cl1") < 0
&& s.indexOf("cl2") < 0
&& s.indexOf("cl3") < 0
&& s.indexOf("cl4") < 0;
if (!success) {
System.out.println("IT 12153 is apparently not fixed!! \nLet's try a restart and call list-clusters again...");
asadmin("restart-domain");
asadmin("list-clusters");
}
else
report("verify-list-of-zero-clusters", success);
}
boolean checkListInstancesOutputIfRunning(String output, String iname) {
return output.split(iname + " +running").length == 2;
}
}