Search in sources :

Example 21 with CommandRunner

use of org.glassfish.embeddable.CommandRunner in project Payara by payara.

the class CoffeeTest method getLBIPAddress.

private String getLBIPAddress(GlassFish glassfish) {
    String lbIP = null;
    String IPAddressPattern = "IP-ADDRESS\\s*\n*(.*)\\s*\n(([01]?\\d*|2[0-4]\\d|25[0-5])\\." + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + "([0-9]?\\d\\d?|2[0-4]\\d|25[0-5]))";
    try {
        CommandRunner commandRunner = glassfish.getCommandRunner();
        String result = commandRunner.run("list-services", "--type", "LB", "--output", "IP-ADDRESS").getOutput().toString();
        if (result.contains("Nothing to list.")) {
            result = commandRunner.run("list-services", "--type", "JavaEE", "--output", "IP-ADDRESS").getOutput().toString();
            Pattern p = Pattern.compile(IPAddressPattern);
            Matcher m = p.matcher(result);
            if (m.find()) {
                lbIP = m.group(2);
            } else {
                lbIP = "localhost";
            }
        } else {
            Pattern p = Pattern.compile(IPAddressPattern);
            Matcher m = p.matcher(result);
            if (m.find()) {
                lbIP = m.group(2);
            } else {
                lbIP = "localhost";
            }
        }
    } catch (Exception e) {
        System.out.println("Regex has thrown an exception " + e.getMessage());
        return "localhost";
    }
    return lbIP;
}
Also used : Pattern(java.util.regex.Pattern) Matcher(java.util.regex.Matcher) CommandRunner(org.glassfish.embeddable.CommandRunner) IOException(java.io.IOException)

Example 22 with CommandRunner

use of org.glassfish.embeddable.CommandRunner in project Payara by payara.

the class BasicDBPaaSTest method test.

@Test
public void test() throws Exception {
    // 1. Bootstrap GlassFish DAS in embedded mode.
    GlassFishProperties glassFishProperties = new GlassFishProperties();
    glassFishProperties.setInstanceRoot(System.getenv("S1AS_HOME") + "/domains/domain1");
    glassFishProperties.setConfigFileReadOnly(false);
    GlassFish glassfish = GlassFishRuntime.bootstrap().newGlassFish(glassFishProperties);
    PrintStream sysout = System.out;
    glassfish.start();
    System.setOut(sysout);
    // 2. Deploy the PaaS application.
    File archive = new File(System.getProperty("basedir") + // TODO :: use mvn apis
    "/target/basic_db_paas_sample.war");
    // to get the archive
    // location.
    Assert.assertTrue(archive.exists());
    Deployer deployer = null;
    String appName = null;
    try {
        deployer = glassfish.getDeployer();
        appName = deployer.deploy(archive);
        System.err.println("Deployed [" + appName + "]");
        Assert.assertNotNull(appName);
        CommandRunner commandRunner = glassfish.getCommandRunner();
        CommandResult result = commandRunner.run("list-services");
        System.out.println("\nlist-services command output [ " + result.getOutput() + "]");
        // 3. Access the app to make sure PaaS app is correctly provisioned.
        String HTTP_PORT = (System.getProperty("http.port") != null) ? System.getProperty("http.port") : "28080";
        /**
         * Look for a table entry by name SYSFILES in the output to ensure
         * DB is provisioned
         */
        String instanceIP = getLBIPAddress(glassfish);
        get("http://" + instanceIP + ":" + HTTP_PORT + "/basic_db_paas_sample/BasicDBPaaSServlet", "SYSFILES");
    // 4. Undeploy the PaaS-DB application using undeploy.
    } finally {
        if (appName != null) {
            deployer.undeploy(appName);
            System.err.println("Undeployed [" + appName + "]");
            try {
                boolean undeployClean = false;
                CommandResult commandResult = glassfish.getCommandRunner().run("list-services");
                if (commandResult.getOutput().contains("Nothing to list.")) {
                    undeployClean = true;
                }
                Assert.assertTrue(undeployClean);
            } catch (Exception e) {
                System.err.println("Couldn't varify whether undeploy succeeded");
            }
        }
    }
}
Also used : PrintStream(java.io.PrintStream) GlassFish(org.glassfish.embeddable.GlassFish) JarFile(java.util.jar.JarFile) File(java.io.File) CommandRunner(org.glassfish.embeddable.CommandRunner) GlassFishProperties(org.glassfish.embeddable.GlassFishProperties) Deployer(org.glassfish.embeddable.Deployer) IOException(java.io.IOException) CommandResult(org.glassfish.embeddable.CommandResult) Test(org.junit.Test)

Example 23 with CommandRunner

use of org.glassfish.embeddable.CommandRunner in project Payara by payara.

the class BasicServiceDiscoveryPaaSTest method testGenerateGFDeploymentPlan.

// Test CLI '_generate-glassfish-services-deployment-plan'
private void testGenerateGFDeploymentPlan(File archive) {
    // Execute the '_get-service-metadata' command and obtain the SDs. Change the configuration of one of the SD.
    ServiceLocator habitat = Globals.getDefaultHabitat();
    org.glassfish.api.admin.CommandRunner commandRunner = habitat.getService(org.glassfish.api.admin.CommandRunner.class);
    ActionReport report = habitat.getService(ActionReport.class);
    org.glassfish.api.admin.CommandRunner.CommandInvocation invocation = commandRunner.getCommandInvocation("_get-service-metadata", report);
    ParameterMap parameterMap = new ParameterMap();
    parameterMap.add("DEFAULT", System.getProperty("basedir") + "/target/basic_sd_paas_sample.war");
    boolean testPassed = false;
    invocation.parameters(parameterMap).execute();
    String newDBname = "UserDB";
    String newSQLFilename = "User.sql";
    String DATABASE_NAME_PROP = "database.name";
    String SQL_FILE_PROP = "database.init.sql";
    List<Map<String, Object>> serviceDescList = (List<Map<String, Object>>) report.getExtraProperties().get("list");
    for (Map<String, Object> serviceDescMap : serviceDescList) {
        if ("db-service".equals(serviceDescMap.get("name"))) {
            int index = serviceDescList.indexOf(serviceDescMap);
            Map<String, String> configurations = (Map<String, String>) serviceDescMap.get("configurations");
            configurations.put(DATABASE_NAME_PROP, newDBname);
            configurations.put(SQL_FILE_PROP, newSQLFilename);
            serviceDescMap.put("configurations", configurations);
            break;
        }
    }
    String modifiedServiceDesc = JSONUtil.javaToJSON(serviceDescList, 10);
    // System.out.println("Modified service description:: "+modifiedServiceDesc);
    parameterMap = new ParameterMap();
    parameterMap.add("archive", System.getProperty("basedir") + "/target/basic_sd_paas_sample.war");
    parameterMap.add("modifiedServiceDesc", modifiedServiceDesc);
    report = habitat.getService(ActionReport.class);
    invocation = commandRunner.getCommandInvocation("_generate-glassfish-services-deployment-plan", report);
    invocation.parameters(parameterMap).execute();
    String jarFilePath = (String) report.getExtraProperties().get("deployment-plan-file-path");
    report = habitat.getService(ActionReport.class);
    invocation = commandRunner.getCommandInvocation("undeploy", report);
    parameterMap = new ParameterMap();
    parameterMap.add("DEFAULT", "basic_sd_paas_sample");
    invocation.parameters(parameterMap).execute();
    Assert.assertFalse(report.hasFailures());
    invocation = commandRunner.getCommandInvocation("deploy", report);
    parameterMap = new ParameterMap();
    parameterMap.add("DEFAULT", System.getProperty("basedir") + "/target/basic_sd_paas_sample.war");
    parameterMap.add("deploymentplan", jarFilePath);
    invocation.parameters(parameterMap).execute();
    System.out.println("App deployed with new plan ::" + !report.hasFailures());
    String appname = "basic_sd_paas_sample";
    String servicename = "db-service";
    parameterMap = new ParameterMap();
    parameterMap.add("DEFAULT", servicename);
    parameterMap.add("appname", appname);
    invocation = commandRunner.getCommandInvocation("_get-service-description", report);
    invocation.parameters(parameterMap).execute();
    Map<String, Object> SDMap = (Map<String, Object>) report.getExtraProperties().get("list");
    Map<String, String> serviceConfigurationsMap = (Map<String, String>) SDMap.get("configurations");
    String sql_filename = serviceConfigurationsMap.get(SQL_FILE_PROP);
    String db_name = serviceConfigurationsMap.get(DATABASE_NAME_PROP);
    if (newSQLFilename.equals(sql_filename) && newDBname.equals(db_name)) {
        testPassed = true;
    }
    System.out.println("CLI _generate-glassfish-services-deployment-plan passed " + testPassed);
    Assert.assertTrue(testPassed);
}
Also used : ParameterMap(org.glassfish.api.admin.ParameterMap) ActionReport(org.glassfish.api.ActionReport) ServiceLocator(org.glassfish.hk2.api.ServiceLocator) List(java.util.List) CommandRunner(org.glassfish.embeddable.CommandRunner) ParameterMap(org.glassfish.api.admin.ParameterMap) Map(java.util.Map)

Example 24 with CommandRunner

use of org.glassfish.embeddable.CommandRunner in project Payara by payara.

the class BasicServiceDiscoveryPaaSTest method testGetServiceMetadata.

// Test for CLI : '_get-service-metadata''
/*
        The war file contains the following service definition and service reference
          1.In glassfish-services.xml
        <glassfish-services>
            <service-description name="basic-db" init-type="lazy">
                <characteristics><characteristic name="service-type" value="JavaEE"/></characteristics>
                <configurations>
                    <configuration name="min.clustersize" value="1"/>
                    <configuration name="max.clustersize" value="2"/>
                </configurations>
            </service-description>
         </glassfish-services>
         <service-description name="db-service" init-type="lazy">
        <characteristics>
            <characteristic name="service-type" value="Database"/>
        </characteristics>
        <configurations>
            <configuration name="database.name" value=""/>
            <configuration name="database.init.sql" value=""/>
        </configurations>
    </service-description>

         2.In web.xml
         <resource-ref>
                <res-ref-name>jdbc/__basic_db_paas_sample</res-ref-name>
                <res-type>javax.sql.DataSource</res-type>
         </resource-ref>
     */
private void testGetServiceMetadata(File archive) {
    ServiceLocator habitat = Globals.getDefaultHabitat();
    org.glassfish.api.admin.CommandRunner commandRunner = habitat.getService(org.glassfish.api.admin.CommandRunner.class);
    ActionReport report = habitat.getService(ActionReport.class);
    org.glassfish.api.admin.CommandRunner.CommandInvocation invocation = commandRunner.getCommandInvocation("_get-service-metadata", report);
    ParameterMap parameterMap = new ParameterMap();
    parameterMap.add("DEFAULT", System.getProperty("basedir") + "/target/basic_sd_paas_sample.war");
    boolean testPassed = false;
    invocation.parameters(parameterMap).execute();
    testPassed = !report.hasFailures();
    String appName = "basic_sd_paas_sample";
    String serviceName = "basic-sd";
    testGetServiceDescription(appName, serviceName);
    List<Map<String, Object>> serviceDescList = (List<Map<String, Object>>) report.getExtraProperties().get("list");
    Map<String, Object> serviceDescMap = serviceDescList.get(1);
    serviceName = (String) serviceDescMap.get("name");
    String init_type = (String) serviceDescMap.get("init-type");
    Map<String, String> svcCharacteristicMap = (Map<String, String>) serviceDescMap.get("characteristics");
    String serviceType = (String) svcCharacteristicMap.get("service-type");
    Map<String, String> svcConfigurationMap = (Map<String, String>) serviceDescMap.get("configurations");
    if (serviceName.equalsIgnoreCase("db-service")) {
        if ("lazy".equalsIgnoreCase(init_type)) {
            if ("Database".equals(serviceType)) {
                Map<String, String> serviceConfigurationsMap = (Map<String, String>) serviceDescMap.get("configurations");
                if (serviceConfigurationsMap.containsKey("database.init.sql") && serviceConfigurationsMap.containsKey("database.name")) {
                    testPassed = true;
                }
            }
        }
    }
    System.out.println("CLI 'get-service-metadata' test passed? :: " + testPassed);
    Assert.assertTrue(testPassed);
}
Also used : ParameterMap(org.glassfish.api.admin.ParameterMap) ActionReport(org.glassfish.api.ActionReport) ServiceLocator(org.glassfish.hk2.api.ServiceLocator) List(java.util.List) CommandRunner(org.glassfish.embeddable.CommandRunner) ParameterMap(org.glassfish.api.admin.ParameterMap) Map(java.util.Map)

Example 25 with CommandRunner

use of org.glassfish.embeddable.CommandRunner in project Payara by payara.

the class BasicServiceDiscoveryPaaSTest method testGetServiceDescription.

// Test for CLI : '_get-service-description''
private void testGetServiceDescription(String appName, String serviceName) {
    ServiceLocator habitat = Globals.getDefaultHabitat();
    org.glassfish.api.admin.CommandRunner commandRunner = habitat.getService(org.glassfish.api.admin.CommandRunner.class);
    ActionReport report = habitat.getService(ActionReport.class);
    ParameterMap parameterMap = new ParameterMap();
    parameterMap.add("appname", appName);
    parameterMap.add("DEFAULT", serviceName);
    boolean testPassed = false;
    org.glassfish.api.admin.CommandRunner.CommandInvocation invocation = commandRunner.getCommandInvocation("_get-service-description", report);
    invocation.parameters(parameterMap).execute();
    Map<String, Object> SDMap = (Map<String, Object>) report.getExtraProperties().get("list");
    if (serviceName.equalsIgnoreCase((String) SDMap.get("name"))) {
        if ("lazy".equalsIgnoreCase((String) SDMap.get("init-type"))) {
            Map<String, String> serviceCharacteristicsMap = (Map<String, String>) SDMap.get("characteristics");
            if ("JavaEE".equals(serviceCharacteristicsMap.get("service-type"))) {
                Map<String, String> serviceConfigurationsMap = (Map<String, String>) SDMap.get("configurations");
                String minclustersize = serviceConfigurationsMap.get("min.clustersize");
                String maxclustersize = serviceConfigurationsMap.get("max.clustersize");
                if (Integer.parseInt(minclustersize) == 1 && Integer.parseInt(maxclustersize) == 2) {
                    testPassed = true;
                }
            }
        }
    }
    System.out.println("CLI 'get-service-description' test passed? :: " + testPassed);
    Assert.assertTrue(testPassed);
}
Also used : ParameterMap(org.glassfish.api.admin.ParameterMap) ActionReport(org.glassfish.api.ActionReport) ServiceLocator(org.glassfish.hk2.api.ServiceLocator) CommandRunner(org.glassfish.embeddable.CommandRunner) ParameterMap(org.glassfish.api.admin.ParameterMap) Map(java.util.Map)

Aggregations

CommandRunner (org.glassfish.embeddable.CommandRunner)60 CommandResult (org.glassfish.embeddable.CommandResult)26 File (java.io.File)22 Deployer (org.glassfish.embeddable.Deployer)22 GlassFish (org.glassfish.embeddable.GlassFish)18 GlassFishProperties (org.glassfish.embeddable.GlassFishProperties)18 Test (org.junit.Test)18 Matcher (java.util.regex.Matcher)17 Pattern (java.util.regex.Pattern)17 PrintStream (java.io.PrintStream)16 ServiceLocator (org.glassfish.hk2.api.ServiceLocator)16 ActionReport (org.glassfish.api.ActionReport)15 ParameterMap (org.glassfish.api.admin.ParameterMap)15 IOException (java.io.IOException)12 JarFile (java.util.jar.JarFile)9 List (java.util.List)6 Map (java.util.Map)6 ArrayList (java.util.ArrayList)3 ExecException (com.sun.enterprise.util.ExecException)2 Exception (java.lang.Exception)2