Skip to content

Commit

Permalink
Refactoring in admin-tests
Browse files Browse the repository at this point in the history
- separation - jersey/asadmin/url
- shutdownHook
- set of rest clients targeting usage, less confusion
  • Loading branch information
dmatej committed Apr 4, 2022
1 parent 8c29a78 commit c95fa71
Show file tree
Hide file tree
Showing 40 changed files with 1,647 additions and 1,460 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,24 +17,30 @@

package org.glassfish.nucleus.admin;

import org.glassfish.nucleus.test.tool.DomainLifecycleExtension;
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 org.glassfish.nucleus.test.tool.asadmin.Asadmin;
import org.glassfish.nucleus.test.tool.asadmin.GlassFishTestEnvironment;
import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.extension.ExtendWith;

import static org.glassfish.nucleus.test.tool.NucleusTestUtils.getURL;
import static org.glassfish.nucleus.test.tool.NucleusTestUtils.nadmin;
import static java.nio.charset.StandardCharsets.ISO_8859_1;
import static org.glassfish.nucleus.test.tool.AsadminResultMatcher.asadminOK;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.stringContainsInOrder;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;

/**
* @author Tom Mueller
*/
@TestMethodOrder(OrderAnnotation.class)
@ExtendWith(DomainLifecycleExtension.class)
public class ClusterITest {

private static final String PORT1 = "55123";
Expand All @@ -44,69 +50,110 @@ public class ClusterITest {
private static final String INSTANCE_NAME_2 = "eein2";
private static final String URL1 = "http://localhost:" + PORT1;
private static final String URL2 = "http://localhost:" + PORT2;
private static final Asadmin ASADMIN = GlassFishTestEnvironment.getAsadmin();

@Test
@Order(1)
public void createClusterTest() {
assertTrue(nadmin("create-cluster", CLUSTER_NAME), "create cluster");
assertThat(ASADMIN.exec("create-cluster", CLUSTER_NAME), asadminOK());
}

@Test
@Order(2)
public void createInstancesTest() {
assertTrue(
nadmin("create-local-instance", "--cluster", CLUSTER_NAME, "--systemproperties",
"HTTP_LISTENER_PORT=" + PORT1 + ":" +
"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",
INSTANCE_NAME_1), "create instance1");

assertTrue(
nadmin("create-local-instance", "--cluster", CLUSTER_NAME, "--systemproperties",
"HTTP_LISTENER_PORT=" + PORT2 +
":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",
INSTANCE_NAME_2), "create instance2");
assertThat(
ASADMIN.exec("create-local-instance", "--cluster", CLUSTER_NAME, "--systemproperties",
"HTTP_LISTENER_PORT=" + PORT1
+ ":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",
INSTANCE_NAME_1), asadminOK());

assertThat(
ASADMIN.exec("create-local-instance", "--cluster", CLUSTER_NAME, "--systemproperties",
"HTTP_LISTENER_PORT=" + PORT2
+ ":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",
INSTANCE_NAME_2), asadminOK());
}


@Test
@Order(3)
public void startInstancesTest() {
assertTrue(nadmin("start-local-instance", INSTANCE_NAME_1), "start instance1");
assertTrue(nadmin("start-local-instance", INSTANCE_NAME_2), "start instance2");
assertThat(ASADMIN.exec(30_000, false, "start-local-instance", INSTANCE_NAME_1), asadminOK());
assertThat(ASADMIN.exec(30_000, false, "start-local-instance", INSTANCE_NAME_2), asadminOK());
}

@Test
@Order(4)
public void checkClusterTest() {
assertTrue(nadmin("list-instances"), "list-instances");
assertThat(ASADMIN.exec("list-instances"), asadminOK());
assertThat(getURL(URL1), stringContainsInOrder("GlassFish Server"));
assertThat(getURL(URL2), stringContainsInOrder("GlassFish Server"));
}

@Test
@Order(5)
public void stopInstancesTest() {
assertTrue(nadmin("stop-local-instance", "--kill", INSTANCE_NAME_1), "stop instance1");
assertTrue(nadmin("stop-local-instance", "--kill", INSTANCE_NAME_2), "stop instance2");
assertThat(ASADMIN.exec("stop-local-instance", "--kill", INSTANCE_NAME_1), asadminOK());
assertThat(ASADMIN.exec("stop-local-instance", "--kill", INSTANCE_NAME_2), asadminOK());
}

@Test
@Order(6)
public void deleteInstancesTest() {
assertTrue(nadmin("delete-local-instance", INSTANCE_NAME_1), "delete instance1");
assertTrue(nadmin("delete-local-instance", INSTANCE_NAME_2), "delete instance2");
assertThat(ASADMIN.exec("delete-local-instance", INSTANCE_NAME_1), asadminOK());
assertThat(ASADMIN.exec("delete-local-instance", INSTANCE_NAME_2), asadminOK());
}

@Test
@Order(7)
public void deleteClusterTest() {
assertTrue(nadmin("delete-cluster", CLUSTER_NAME), "delete cluster");
assertThat(ASADMIN.exec("delete-cluster", CLUSTER_NAME), asadminOK());
}


/**
* This methods opens a connection to the given URL and
* returns the string that is returned from that URL. This
* is useful for simple servlet retrieval
*
* @param urlstr The URL to connect to
* @return The string returned from that URL, or empty
* string if there was a problem contacting the URL
*/
public static String getURL(String urlstr) {
URLConnection urlc = openConnection(urlstr);
try (
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");
}
return ow.getBuffer().toString();
} catch (IOException ex) {
return fail(ex);
}
}

private static URLConnection openConnection(String url) {
try {
return new URL(url).openConnection();
} catch (IOException e) {
throw new IllegalArgumentException(e);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,40 +17,47 @@

package org.glassfish.nucleus.admin;

import org.glassfish.nucleus.test.tool.DomainLifecycleExtension;
import org.glassfish.nucleus.test.tool.asadmin.Asadmin;
import org.glassfish.nucleus.test.tool.asadmin.GlassFishTestEnvironment;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.MethodOrderer.OrderAnnotation;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.extension.ExtendWith;

import static org.glassfish.nucleus.test.tool.NucleusTestUtils.nadmin;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.glassfish.nucleus.test.tool.AsadminResultMatcher.asadminOK;
import static org.hamcrest.MatcherAssert.assertThat;


/**
* @author Tom Mueller
*/
@ExtendWith(DomainLifecycleExtension.class)
@TestMethodOrder(OrderAnnotation.class)
public class MiscCommandsITest {

private static final Asadmin ASADMIN = GlassFishTestEnvironment.getAsadmin();

@AfterAll
public static void startDomainAgain() {
assertThat(ASADMIN.exec("start-domain"), asadminOK());
}

@Test
@Order(1)
public void uptime() {
assertTrue(nadmin("uptime"));
assertThat(ASADMIN.exec("uptime"), asadminOK());
}

@Test
@Order(1)
public void version1() {
assertTrue(nadmin("version"));
assertThat(ASADMIN.exec("version"), asadminOK());
}

@Test
@Order(100)
public void version2() {
assertTrue(nadmin("stop-domain"));
assertTrue(nadmin("version", "--local"));
assertThat(ASADMIN.exec("stop-domain"), asadminOK());
assertThat(ASADMIN.exec("version", "--local"), asadminOK());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,13 @@
import java.util.List;
import java.util.Set;

import org.glassfish.nucleus.test.tool.DomainLifecycleExtension;
import org.glassfish.nucleus.test.tool.NucleusTestUtils;
import org.glassfish.nucleus.test.tool.NucleusTestUtils.NadminReturn;
import org.glassfish.nucleus.test.tool.asadmin.Asadmin;
import org.glassfish.nucleus.test.tool.asadmin.AsadminResult;
import org.glassfish.nucleus.test.tool.asadmin.GlassFishTestEnvironment;
import org.hamcrest.collection.IsEmptyCollection;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;

import static org.glassfish.nucleus.test.tool.NucleusTestUtils.nadmin;
import static org.glassfish.nucleus.test.tool.NucleusTestUtils.nadminWithOutput;
import static org.glassfish.nucleus.test.tool.AsadminResultMatcher.asadminOK;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.not;
import static org.junit.jupiter.api.Assertions.assertEquals;
Expand All @@ -44,12 +42,13 @@
/**
* @author sanjeeb.sahoo@oracle.com
*/
@ExtendWith(DomainLifecycleExtension.class)
public class OSGiCommandsITest {

private static final Asadmin ASADMIN = GlassFishTestEnvironment.getAsadmin();

@Test
public void basicOsgiCmd() {
assertTrue(nadmin("osgi", "lb"));
assertThat(ASADMIN.exec("osgi", "lb"), asadminOK());
}


Expand Down Expand Up @@ -103,28 +102,12 @@ public void osgiShell() throws IOException {
try (PrintStream ps = new PrintStream(new FileOutputStream(cmdFile))) {
ps.println("help");
ps.println("lb");
NucleusTestUtils.NadminReturn value = nadminWithOutput("osgi-shell", "--file", cmdFile.getAbsolutePath());
assertTrue(value.out.contains("System Bundle"));
AsadminResult value = ASADMIN.exec("osgi-shell", "--file", cmdFile.getAbsolutePath());
assertTrue(value.getStdOut().contains("System Bundle"));
}
}


private List<String> runCmd(String... cmd) throws Exception {
NadminReturn value = nadminWithOutput(cmd);
if (!value.returnValue) {
throw new Exception("Cmd failed: \n" + value.outAndErr);
}
List<String> output = new ArrayList<>();
for (String line : value.out.split("\\n")) {
line = line.trim();
if (line.isEmpty() || line.startsWith("nadmin") || line.startsWith("Command")) {
continue;
}
output.add(line);
}
return output;
}

private String newCmdSession() throws Exception {
List<String> value = runCmd("osgi", "--session", "new");
if (value.size() != 1) {
Expand All @@ -137,4 +120,19 @@ private Set<String> listCmdSessions() throws Exception {
List<String> sessions = runCmd("osgi", "--session", "list");
return new HashSet<>(sessions);
}


private List<String> runCmd(String... cmd) throws Exception {
AsadminResult value = ASADMIN.exec(cmd);
assertThat(value, asadminOK());
List<String> output = new ArrayList<>();
for (String line : value.getStdOut().split("\\n")) {
line = line.trim();
if (line.isEmpty() || line.startsWith(ASADMIN.getCommandName()) || line.startsWith("Command")) {
continue;
}
output.add(line);
}
return output;
}
}

0 comments on commit c95fa71

Please sign in to comment.