From 9b1e2e77b422c4a5bb264970e8c3a28a0dca7657 Mon Sep 17 00:00:00 2001 From: Kanagaraj Manickam k00365106 Date: Mon, 13 Aug 2018 18:17:53 +0530 Subject: Command profile testcase addition Issue-ID: CLI-123 Change-Id: Icecf98da2cf85cd4a30b7109eedba57767ff3319 Signed-off-by: Kanagaraj Manickam k00365106 --- .../onap/cli/fw/cmd/cmd/OpenCommandShellCmd.java | 124 +++++----- .../org/onap/cli/fw/cmd/cmd/ProcessRunner.java | 264 ++++++++++----------- .../cli/fw/cmd/conf/OnapCommandCmdConstants.java | 4 +- .../fw/cmd/schema/OnapCommandSchemaCmdLoader.java | 62 ++--- 4 files changed, 227 insertions(+), 227 deletions(-) (limited to 'profiles/command/src/main') diff --git a/profiles/command/src/main/java/org/onap/cli/fw/cmd/cmd/OpenCommandShellCmd.java b/profiles/command/src/main/java/org/onap/cli/fw/cmd/cmd/OpenCommandShellCmd.java index d6e0e8c0..7b74e6ca 100644 --- a/profiles/command/src/main/java/org/onap/cli/fw/cmd/cmd/OpenCommandShellCmd.java +++ b/profiles/command/src/main/java/org/onap/cli/fw/cmd/cmd/OpenCommandShellCmd.java @@ -38,92 +38,92 @@ import org.onap.cli.fw.utils.OnapCommandUtils; */ @OnapCommandSchema(type = "cmd") public class OpenCommandShellCmd extends OnapCommand { - - public OpenCommandShellCmd() { + + public OpenCommandShellCmd() { super.addDefaultSchemas(OnapCommandCmdConstants.DEFAULT_PARAMETER_CMD_FILE_NAME); } - private Map resultMap = new HashMap<>(); - - private List command; - - private Map envs; - - private String wd = null; - - private List successStatusCodes = new ArrayList<>(); - - public List getSuccessStatusCodes() { - return successStatusCodes; - } - - public void setSuccessStatusCodes(ArrayList successStatusCodes) { - this.successStatusCodes = successStatusCodes; - } - - public String getWd() { - return wd; - } - - public void setWd(String wd) { - this.wd = wd; - } - - public Map getEnvs() { - return envs; - } - - public void setEnvs(Map envs) { - this.envs = envs; - } - - - - public List getCommand() { - return command; - } - - public void setCommand(List command) { - this.command = command; - } - - public Map getResultMap() { + private Map resultMap = new HashMap<>(); + + private List command; + + private Map envs; + + private String wd = null; + + private List successStatusCodes = new ArrayList<>(); + + public List getSuccessStatusCodes() { + return successStatusCodes; + } + + public void setSuccessStatusCodes(ArrayList successStatusCodes) { + this.successStatusCodes = successStatusCodes; + } + + public String getWd() { + return wd; + } + + public void setWd(String wd) { + this.wd = wd; + } + + public Map getEnvs() { + return envs; + } + + public void setEnvs(Map envs) { + this.envs = envs; + } + + + + public List getCommand() { + return command; + } + + public void setCommand(List command) { + this.command = command; + } + + public Map getResultMap() { return resultMap; } - + public void setResultMap(Map resultMap) { this.resultMap = resultMap; } - + @Override protected List initializeProfileSchema(Map schemaMap, boolean validate) throws OnapCommandException { return OnapCommandSchemaCmdLoader.parseCmdSchema(this, schemaMap, validate); } - + @Override protected void run() throws OnapCommandException { //Read the input arguments Map paramMap = this.getParametersMap(); - + //Process command String []cmd = this.getCommand().toArray(new String []{}); String cwd = this.getWd(); List envs = new ArrayList<>(); - + for (String env: this.getEnvs().keySet()) { - envs.add(env + "=" + this.getEnvs().get(env)); + envs.add(env + "=" + this.getEnvs().get(env)); } - + ProcessRunner pr = new ProcessRunner( - cmd, - (envs.size() > 0) ? envs.toArray(new String []{}) : null, - cwd); + cmd, + (envs.size() > 0) ? envs.toArray(new String []{}) : null, + cwd); try { - pr.run(); - } catch (InterruptedException | IOException e) { - throw new OnapCommandExecutionFailed(this.getName(), e); - } - + pr.run(); + } catch (InterruptedException | IOException e) { + throw new OnapCommandExecutionFailed(this.getName(), e); + } + //Populate outputs this.getResult().getRecordsMap().get("output").getValues().add(pr.getOutput()); this.getResult().getRecordsMap().get("error").getValues().add(pr.getError()); diff --git a/profiles/command/src/main/java/org/onap/cli/fw/cmd/cmd/ProcessRunner.java b/profiles/command/src/main/java/org/onap/cli/fw/cmd/cmd/ProcessRunner.java index 5bd3f463..c0b93bb8 100644 --- a/profiles/command/src/main/java/org/onap/cli/fw/cmd/cmd/ProcessRunner.java +++ b/profiles/command/src/main/java/org/onap/cli/fw/cmd/cmd/ProcessRunner.java @@ -1,133 +1,133 @@ -/* - * Copyright 2018 Huawei Technologies Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.onap.cli.fw.cmd.cmd; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; - -public class ProcessRunner { - - private String []cmd = null; - private static String shell = System.getProperty("os.name").toLowerCase().startsWith("windows") ? "cmd.exe /c " : "sh -c "; - private String cwd = System.getProperty("user.home"); - private String []env = null; - private int exitCode = -1; - private String output; - private String error; - private Map results; - - public ProcessRunner(String []cmd, String []env, String cwd) { - this.cmd = cmd; - - if (cwd != null && !cwd.isEmpty()) { - this.cwd = cwd; - } - - this.env = env; - } - - public ProcessRunner(String []cmd, String cwd) { - this(cmd, null, cwd); - } - - public ProcessRunner(String []cmd) { - this(cmd, null, null); - } - - public ProcessRunner(String cmd, String []env, String cwd) { - this(new String []{cmd}, env, cwd); - } - - public ProcessRunner(String cmd, String cwd) { - this(new String []{cmd}, null, cwd); - } - - public ProcessRunner(String cmd) { - this(new String []{cmd}, null, null); - } - - @SuppressWarnings("unchecked") - public void run() throws InterruptedException, IOException { - Process p = null; - if (this.cmd.length == 1) { - p = Runtime.getRuntime().exec(this.shell + this.cmd[0], this.env, null); - } else { - List list = new ArrayList(Arrays.asList(this.shell.split(" "))); - list.addAll(Arrays.asList(this.cmd)); - String []cmds = Arrays.copyOf(list.toArray(), list.size(), String[].class); - p = Runtime.getRuntime().exec(cmds, this.env, null); - } - - this.exitCode = p.waitFor(); - this.output = this.streamToString(p.getInputStream()); - this.error = this.streamToString(p.getErrorStream()); - p.destroy(); - } - - public String streamToString(InputStream stream) throws IOException { - StringBuilder sb = new StringBuilder(); - BufferedReader br = null; - try { - br = new BufferedReader(new InputStreamReader(stream)); - String line = null; - while ((line = br.readLine()) != null) { - sb.append(line + System.getProperty("line.separator")); - } - } finally { - br.close(); - } - return sb.toString(); - } - - public int getExitCode() { - return this.exitCode; - } - - public String getOutput() { - return this.output; - } - - public String getError() { - return this.error; - } - - public static void main(String[] args) { - try { - ProcessRunner pr = new ProcessRunner("dir", null); - pr.run(); - System.out.println(pr.getOutput()); - System.out.println(pr.getError()); - System.out.println(pr.getExitCode()); - - pr = new ProcessRunner(new String [] {"dir", "c:"}, null); - pr.run(); - System.out.println(pr.getOutput()); - System.out.println(pr.getError()); - System.out.println(pr.getExitCode()); - - } catch (InterruptedException | IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } +/* + * Copyright 2018 Huawei Technologies Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.onap.cli.fw.cmd.cmd; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +public class ProcessRunner { + + private String []cmd = null; + private static String shell = System.getProperty("os.name").toLowerCase().startsWith("windows") ? "cmd.exe /c " : "sh -c "; + private String cwd = System.getProperty("user.home"); + private String []env = null; + private int exitCode = -1; + private String output; + private String error; + private Map results; + + public ProcessRunner(String []cmd, String []env, String cwd) { + this.cmd = cmd; + + if (cwd != null && !cwd.isEmpty()) { + this.cwd = cwd; + } + + this.env = env; + } + + public ProcessRunner(String []cmd, String cwd) { + this(cmd, null, cwd); + } + + public ProcessRunner(String []cmd) { + this(cmd, null, null); + } + + public ProcessRunner(String cmd, String []env, String cwd) { + this(new String []{cmd}, env, cwd); + } + + public ProcessRunner(String cmd, String cwd) { + this(new String []{cmd}, null, cwd); + } + + public ProcessRunner(String cmd) { + this(new String []{cmd}, null, null); + } + + @SuppressWarnings("unchecked") + public void run() throws InterruptedException, IOException { + Process p = null; + if (this.cmd.length == 1) { + p = Runtime.getRuntime().exec(this.shell + this.cmd[0], this.env, null); + } else { + List list = new ArrayList(Arrays.asList(this.shell.split(" "))); + list.addAll(Arrays.asList(this.cmd)); + String []cmds = Arrays.copyOf(list.toArray(), list.size(), String[].class); + p = Runtime.getRuntime().exec(cmds, this.env, null); + } + + this.exitCode = p.waitFor(); + this.output = this.streamToString(p.getInputStream()); + this.error = this.streamToString(p.getErrorStream()); + p.destroy(); + } + + public String streamToString(InputStream stream) throws IOException { + StringBuilder sb = new StringBuilder(); + BufferedReader br = null; + try { + br = new BufferedReader(new InputStreamReader(stream)); + String line = null; + while ((line = br.readLine()) != null) { + sb.append(line + System.getProperty("line.separator")); + } + } finally { + br.close(); + } + return sb.toString(); + } + + public int getExitCode() { + return this.exitCode; + } + + public String getOutput() { + return this.output; + } + + public String getError() { + return this.error; + } + + public static void main(String[] args) { + try { + ProcessRunner pr = new ProcessRunner("dir", null); + pr.run(); + System.out.println(pr.getOutput()); + System.out.println(pr.getError()); + System.out.println(pr.getExitCode()); + + pr = new ProcessRunner(new String [] {"dir", "c:"}, null); + pr.run(); + System.out.println(pr.getOutput()); + System.out.println(pr.getError()); + System.out.println(pr.getExitCode()); + + } catch (InterruptedException | IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } } \ No newline at end of file diff --git a/profiles/command/src/main/java/org/onap/cli/fw/cmd/conf/OnapCommandCmdConstants.java b/profiles/command/src/main/java/org/onap/cli/fw/cmd/conf/OnapCommandCmdConstants.java index fcd182ab..e4f119e4 100644 --- a/profiles/command/src/main/java/org/onap/cli/fw/cmd/conf/OnapCommandCmdConstants.java +++ b/profiles/command/src/main/java/org/onap/cli/fw/cmd/conf/OnapCommandCmdConstants.java @@ -29,11 +29,11 @@ public class OnapCommandCmdConstants { public static final String ENVIRONMENT = "environment"; public static final String WD = "working_directory"; public static final String SUCCESS_EXIT_CODE = "success_code"; - + public static final String CMD_MANDATORY_SECTIONS = "cli.schema.cmd.sections.mandatory"; public static final String CMD_SECTIONS = "cli.schema.cmd.sections"; - public static final String DEFAULT_PARAMETER_CMD_FILE_NAME = "default_input_parameters_cmd.yaml"; + public static final String DEFAULT_PARAMETER_CMD_FILE_NAME = "default_input_parameters_cmd.yaml"; private OnapCommandCmdConstants() { //as per coding standard ! } diff --git a/profiles/command/src/main/java/org/onap/cli/fw/cmd/schema/OnapCommandSchemaCmdLoader.java b/profiles/command/src/main/java/org/onap/cli/fw/cmd/schema/OnapCommandSchemaCmdLoader.java index c3764eaa..55fab733 100644 --- a/profiles/command/src/main/java/org/onap/cli/fw/cmd/schema/OnapCommandSchemaCmdLoader.java +++ b/profiles/command/src/main/java/org/onap/cli/fw/cmd/schema/OnapCommandSchemaCmdLoader.java @@ -33,7 +33,7 @@ public class OnapCommandSchemaCmdLoader { // to follow standards ! } - + /** * Load the schema. * @@ -50,40 +50,40 @@ public class OnapCommandSchemaCmdLoader { ArrayList errorList = new ArrayList<>(); Map valMap = (Map) values.get(OnapCommandCmdConstants.CMD); - if (valMap != null) { - if (validate) { - OnapCommandUtils.validateTags(errorList, valMap, OnapCommandConfig.getCommaSeparatedList(OnapCommandCmdConstants.CMD_SECTIONS), - OnapCommandConfig.getCommaSeparatedList(OnapCommandCmdConstants.CMD_MANDATORY_SECTIONS), OnapCommandCmdConstants.CMD); - } - for (Map.Entry entry1 : valMap.entrySet()) { - String key1 = entry1.getKey(); + if (valMap != null) { + if (validate) { + OnapCommandUtils.validateTags(errorList, valMap, OnapCommandConfig.getCommaSeparatedList(OnapCommandCmdConstants.CMD_SECTIONS), + OnapCommandConfig.getCommaSeparatedList(OnapCommandCmdConstants.CMD_MANDATORY_SECTIONS), OnapCommandCmdConstants.CMD); + } + for (Map.Entry entry1 : valMap.entrySet()) { + String key1 = entry1.getKey(); + + switch (key1) { + case OnapCommandCmdConstants.COMMAND: + Object o = valMap.get(key1); + if (o instanceof List) { + cmd.setCommand((List) o); + } else { + cmd.setCommand(Arrays.asList(new String [] {(String) o})); + } + break; - switch (key1) { - case OnapCommandCmdConstants.COMMAND: - Object o = valMap.get(key1); - if (o instanceof List) { - cmd.setCommand((List) o); - } else { - cmd.setCommand(Arrays.asList(new String [] {(String) o})); - } - break; + case OnapCommandCmdConstants.ENVIRONMENT: + Map envMap = (Map) valMap.get(key1); + cmd.setEnvs(envMap); - case OnapCommandCmdConstants.ENVIRONMENT: - Map envMap = (Map) valMap.get(key1); - cmd.setEnvs(envMap); + break; - break; + case OnapCommandCmdConstants.WD: + cmd.setWd((String)valMap.get(key1)); + break; - case OnapCommandCmdConstants.WD: - cmd.setWd((String)valMap.get(key1)); - break; - - case OnapCommandCmdConstants.SUCCESS_EXIT_CODE: - cmd.setSuccessStatusCodes((ArrayList) valMap.get(key1)); - break; - } - } - } + case OnapCommandCmdConstants.SUCCESS_EXIT_CODE: + cmd.setSuccessStatusCodes((ArrayList) valMap.get(key1)); + break; + } + } + } return errorList; -- cgit 1.2.3-korg