Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source.
   * Copyright 2014, Red Hat, Inc., and individual contributors
   * as indicated by the @author tags. See the copyright.txt file in the
   * distribution for a full listing of individual contributors.
   *
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
  * the License, or (at your option) any later version.
  *
  * This software 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
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.jboss.as.test.integration.management.cli;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.io.File;
 import java.util.List;
 import java.util.Map;
 

Author(s):
Alexey Loubyansky
 
 public class CliScriptTestBase {
 
     private static final int CLI_PROC_TIMEOUT = 10000;
     private static final int STATUS_CHECK_INTERVAL = 25;
 
     private String cliOutput;
 
 
     protected void assertSuccess(String cmd) {
         assertEquals(0, execute(cmdtrue));
     }
 
     protected void assertFailure(String cmd) {
         assertTrue(execute(cmdfalse) != 0);
     }
 
     protected String getLastCommandOutput() {
         return ;
     }
 
     protected int execute(String cmd) {
         return execute(cmdfalse);
     }
 
     protected int execute(String cmdboolean logFailure) {
         return execute(truecmdlogFailure);
     }
 
     protected int execute(boolean connectString cmd) {
         return execute(connectcmdfalse);
     }
 
     protected int execute(boolean connectString cmdboolean logFailure) {
         return execute(TestSuiteEnvironment.getServerAddress(), TestSuiteEnvironment.getServerPort(), connectcmdlogFailure);
     }
 
     protected int execute(boolean connectString cmdboolean logFailureMap<String,Stringprops) {
         return execute(TestSuiteEnvironment.getServerAddress(), TestSuiteEnvironment.getServerPort(), connectcmdlogFailureprops);
     }
 
     protected int execute(String hostint portboolean connectString cmdboolean logFailure) {
         return execute(hostportconnectcmdlogFailurenull);
     }
 
     protected int execute(String hostint portboolean connectString cmdboolean logFailureMap<String,Stringprops) {
          = null;
         final String jbossDist = TestSuiteEnvironment.getSystemProperty("jboss.dist");
         if (jbossDist == null) {
             fail("jboss.dist system property is not set");
         }
 
         String modulePath = TestSuiteEnvironment.getSystemProperty("module.path");
         if (modulePath == null) {
             modulePath = jbossDist + . + "modules";
             //fail("module.path system property is not set");
         }
 
         final ProcessBuilder builder = new ProcessBuilder();
        builder.redirectErrorStream(true);
        final List<Stringcommand = new ArrayList<String>();
        command.add(TestSuiteEnvironment.getJavaPath());
        TestSuiteEnvironment.getIpv6Args(command);
        command.add("-Djboss.cli.config=" + jbossDist + . + "bin" + . + "jboss-cli.xml");
        if(props != null && !props.isEmpty()) {
            for(String name : props.keySet()) {
                command.add("-D" + name + "=" + props.get(name));
            }
        }
        command.add("-jar");
        command.add(jbossDist + . + "jboss-modules.jar");
        command.add("-mp");
        command.add(modulePath);
        command.add("org.jboss.as.cli");
        if(connect) {
            command.add("-c");
        }
        command.add("--controller=" + host + ":" + port);
        command.add(cmd);
        builder.command(command);
        Process cliProc = null;
        try {
            cliProc = builder.start();
        } catch (IOException e) {
            fail("Failed to start CLI process: " + e.getLocalizedMessage());
        }
        final InputStream cliStream = cliProc.getInputStream();
        final StringBuilder cliOutBuf = new StringBuilder();
        boolean wait = true;
        int runningTime = 0;
        int exitCode = 0;
        do {
            try {
                Thread.sleep();
            } catch (InterruptedException e) {
                fail("Interrupted");
            }
            runningTime += ;
            readStream(cliOutBufcliStream);
            try {
                exitCode = cliProc.exitValue();
                wait = false;
                readStream(cliOutBufcliStream);
            } catch(IllegalThreadStateException e) {
                // cli still working
            }
            if(wait && runningTime >= ) {
                readStream(cliOutBufcliStream);
                 = cliOutBuf.toString();
                cliProc.destroy();
                wait = false;
                if(logFailure) {
                    logErrors(cmdcliProc);
                }
                fail("The cli process has timed out in " + runningTime);
            }
        } while(wait);
         = cliOutBuf.toString();
        if (logFailure && exitCode != 0) {
            logErrors(cmdcliProc);
        }
        return exitCode;
    }
    protected void logErrors(String cmdProcess cliProc) {
        ..println("Failed to execute '" + cmd + "'");
        ..println("Command's output: '" +  + "'");
        java.io.InputStreamReader isr = new java.io.InputStreamReader(cliProc.getErrorStream());
        java.io.BufferedReader br = new java.io.BufferedReader(isr);
        String line=null;
        try {
            line = br.readLine();
            if(line == null) {
                ..println("No output data for the command.");
            } else {
                StringBuilder buf = new StringBuilder(line);
                while((line = br.readLine()) != null) {
                    buf.append(.);
                    buf.append(line);
                }
                ..println("Command's error log: '" + buf + "'");
            }
        } catch (IOException e) {
            fail("Failed to read command's error output: " + e.getLocalizedMessage());
        }
    }
    protected void readStream(final StringBuilder cliOutBufInputStream cliStream) {
        java.io.InputStreamReader isr = new java.io.InputStreamReader(cliStream);
        java.io.BufferedReader br = new java.io.BufferedReader(isr);
        String line=null;
        try {
            while ((line = br.readLine()) != null) {
                cliOutBuf.append(line).append(.);
            }
        } catch (IOException e) {
            fail("Failed to read command's output: " + e.getLocalizedMessage());
        }
    }
New to GrepCode? Check out our FAQ X