changeset 180:aee16d21b7ad

adding a new testsuite for list-agents, agent-info in thermostat shell
author Jana Fabrikova <jfabriko@redhat.com>
date Wed, 06 May 2015 09:50:46 +0200
parents 4405bccf394d
children e37e710e45df
files ChangeLog src/org/thermostat/qa2/tests/CliClientAgentInfoTest.java
diffstat 2 files changed, 154 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Mar 31 14:07:20 2015 +0200
+++ b/ChangeLog	Wed May 06 09:50:46 2015 +0200
@@ -1,3 +1,7 @@
+2015-05-05  Jana Drazanova <jfabriko@redhat.com>
+    * src/org/thermostat/qa2/tests/CliClientAgentInfoTest.java:
+    a new testsuite for list-agents, agent-info in thermostat shell
+
 2014-10-29  Zdenek Zambersky <zzambers@redhat.com>
 
     Adding changes to outputtexts
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/org/thermostat/qa2/tests/CliClientAgentInfoTest.java	Wed May 06 09:50:46 2015 +0200
@@ -0,0 +1,150 @@
+/*
+ ThermostatQA - test framework for Thermostat Monitoring Tool
+
+ Copyright 2015 Red Hat, Inc.
+
+ This file is part of ThermostatQA
+
+ ThermostatQA is distributed under the GNU General Public License,
+ version 2 or any later version (with a special exception described
+ below, commonly known as the "Classpath Exception").
+
+ A copy of GNU General Public License (GPL) is included in this
+ distribution, in the file COPYING.
+
+ Linking ThermostatQA code with other modules is making a combined work
+ based on ThermostatQA.  Thus, the terms and conditions of the GPL
+ cover the whole combination.
+
+ As a special exception, the copyright holders of ThermostatQA give you
+ permission to link this code with independent modules to produce an
+ executable, regardless of the license terms of these independent
+ modules, and to copy and distribute the resulting executable under
+ terms of your choice, provided that you also meet, for each linked
+ independent module, the terms and conditions of the license of that
+ module.  An independent module is a module which is not derived from
+ or based on ThermostatQA code.  If you modify ThermostatQA, you may
+ extend this exception to your version of the software, but you are
+ not obligated to do so.  If you do not wish to do so, delete this
+ exception statement from your version.
+ */
+package org.thermostat.qa2.tests;
+
+import java.io.File;
+import java.util.List;
+
+import org.thermostat.qa2.framework.Assert;
+import org.thermostat.qa2.framework.NativeProcess;
+import org.thermostat.qa2.framework.Shell;
+import org.thermostat.qa2.framework.ThermostatQAConfig;
+import org.thermostat.qa2.framework.annotations.SetupStorage;
+import org.thermostat.qa2.framework.annotations.RunGnomeKeyring;
+import org.thermostat.qa2.framework.annotations.RunStorage;
+import org.thermostat.qa2.framework.annotations.Test;
+import org.thermostat.qa2.framework.annotations.RunAgent;
+import org.thermostat.qa2.framework.utils.ProcessUtilities;
+
+/**
+ * Test class using thermostat shell - testing commands list-agents
+ * and agents-info.
+ * 
+ * @author jfabriko
+ */
+@SetupStorage(type = "mongo")
+@RunGnomeKeyring
+@RunStorage
+public class CliClientAgentInfoTest {
+
+    String[] patternListAgents = {
+            "Thermostat version ",
+            "Thermostat - > list-agents",
+            "Please enter username for storage at ",
+            "Please enter password for storage at ",
+            "Agent ID",
+            "Command Channel",
+            "Address",
+            "Start Time",
+            "Stop Time",
+            "Currently Active",
+            "Thermostat + > exit"};
+    String[] patternAgentInfo = {
+            "Thermostat version ",
+            "Thermostat - > agent-info -a ",
+            "Please enter username for storage at ",
+            "Please enter password for storage at ",
+            "Agent ID ",
+            "Command Channel Address ",
+            "Start Time ",
+            "Stop Time               Currently Active",                                    
+            "Backend                    Status Description",
+            "System Backend             Active Gathers basic information from the system",
+            "Host CPU Backend           Active Gathers CPU statistics about a host",
+            "VM CPU Backend             Active Gathers CPU statistics about a JVM",
+            "Host Memory Backend        Active Gathers memory statistics about a host",
+            "VM GC Backend              Active Gathers garbage collection statistics about a JVM",
+            "VM Classes Backend         Active Gathers class loading statistics about a JVM",
+            "VM Memory Backend          Active Gathers memory statistics about a JVM",
+            "NUMA Backend               Active Gathers NUMA statistics about a host",
+            "VM IO Backend              Active Gathers IO statistics about a JVM",
+            "VM Thread Counting Backend Active Gathers thread counts for a JVM",
+            "VM Thread Backend          Active Gathers thread information about a JVM",
+            "VM JMX Backend             Active gathers JMX information using JMX",
+            "Thermostat + > exit"};
+
+   
+    public String getAgentIdFromListAgents() throws Exception{
+
+        ThermostatQAConfig.Login login = ThermostatQAConfig.getClientLogin();
+        String name = login.getUsername();
+        String passwd = login.getPassword();
+        
+        //shell list agents
+        Shell thermostat = ProcessUtilities.createThermostatShell();
+        thermostat.setEnvironmentVariable("USER_THERMOSTAT_HOME", ThermostatQAConfig.getThermostatUserHome());
+        thermostat.setStdOutMode(NativeProcess.MODE_LOG_AND_BUFFER);
+        thermostat.start();
+        thermostat.writeln("list-agents");
+        thermostat.writeln(name);
+        thermostat.writeln(passwd);
+        thermostat.writeln("exit");
+        thermostat.waitFor();
+
+        List<String> output = thermostat.getStdoutLines();
+        
+        //check output
+        Assert.assertContainsPatterns(output, patternListAgents);
+        
+        //preparate agent id
+        return output.get(5).split(" ")[0];
+    }
+    
+    public void checkAgentInfo(String agentId) throws Exception {
+        ThermostatQAConfig.Login login = ThermostatQAConfig.getClientLogin();
+        
+        Shell thermostat = ProcessUtilities.createThermostatShell();
+        thermostat.setEnvironmentVariable("USER_THERMOSTAT_HOME", ThermostatQAConfig.getThermostatUserHome());
+        thermostat.setStdOutMode(NativeProcess.MODE_LOG_AND_BUFFER);
+        thermostat.start();
+        thermostat.writeln("agent-info -a "+agentId);
+        thermostat.writeln(login.getUsername());
+        thermostat.writeln(login.getPassword());
+        thermostat.writeln("exit");
+        thermostat.waitFor();
+        
+        List<String> output = thermostat.getStdoutLines();
+           
+        //check agent info in output
+        Assert.assertContainsPatterns(output, patternAgentInfo);
+        
+    }
+    
+    @Test
+    @RunAgent
+    public void agentInfo() throws Exception {
+        //get the login data
+        String agentId = getAgentIdFromListAgents(); 
+              
+        //run shell again + agent info
+        checkAgentInfo(agentId);
+    }
+}