You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ra...@apache.org on 2015/08/30 20:17:17 UTC

[24/50] [abbrv] stratos git commit: Fix for agent health stat publisher and introducing integration test to verify PCA stat publisher

Fix for agent health stat publisher and introducing integration test to verify PCA stat publisher


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/8bd92e89
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/8bd92e89
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/8bd92e89

Branch: refs/heads/master
Commit: 8bd92e89a678a2dad14665e5b4ce4b9e769b834b
Parents: 31cbfd5
Author: Akila Perera <ra...@gmail.com>
Authored: Fri Aug 28 23:50:59 2015 +0530
Committer: Akila Perera <ra...@gmail.com>
Committed: Fri Aug 28 23:51:15 2015 +0530

----------------------------------------------------------------------
 .../python/cartridge.agent/cartridge.agent/healthstats.py |  3 +--
 .../cartridge.agent/modules/databridge/agent.py           | 10 ++++------
 .../modules/databridge/thrift/publisher.py                |  1 -
 products/python-cartridge-agent/integration/pom.xml       |  9 +++++++--
 .../stratos/python.cartridge.agent/test/ADCMTAppTest.java |  4 ++--
 .../stratos/python.cartridge.agent/test/ADCTest.java      |  3 +--
 .../python.cartridge.agent/test/AgentStartupTest.java     |  9 +++++++--
 .../test/PythonAgentTestManager.java                      | 10 ++++++++--
 8 files changed, 30 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/8bd92e89/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/healthstats.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/healthstats.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/healthstats.py
index dddee70..f661294 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/healthstats.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/healthstats.py
@@ -66,7 +66,7 @@ class HealthStatisticsPublisherManager(Thread):
                 self.log.debug("Publishing load average: %r" % cartridge_stats.load_avg)
                 self.publisher.publish_load_average(cartridge_stats.load_avg)
             except ThriftReceiverOfflineException:
-                self.log.error("Couldn't publish health statistics to CEP. Thrift Receiver offline. Reconnecting...")
+                self.log.exception("Couldn't publish health statistics to CEP. Thrift Receiver offline. Reconnecting...")
                 self.publisher = HealthStatisticsPublisher()
 
         self.publisher.publisher.disconnect()
@@ -124,7 +124,6 @@ class HealthStatisticsPublisher:
             cep_admin_username,
             cep_admin_password,
             self.stream_definition)
-        self.publisher.start()
 
         HealthStatisticsPublisher.log.debug("HealthStatisticsPublisher initialized")
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/8bd92e89/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/databridge/agent.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/databridge/agent.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/databridge/agent.py
index 533cf20..d94688f 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/databridge/agent.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/databridge/agent.py
@@ -115,7 +115,7 @@ class ThriftEvent:
         """:type : list[T]"""
 
 
-class ThriftPublisher(Thread):
+class ThriftPublisher():
     """
     Handles publishing events to BAM/CEP through thrift using the provided address and credentials
     """
@@ -136,14 +136,15 @@ class ThriftPublisher(Thread):
         :return: ThriftPublisher object
         :rtype: ThriftPublisher
         """
-        Thread.__init__(self)
         try:
             port_number = int(port)
         except ValueError:
             raise RuntimeError("Port number for Thrift Publisher is invalid: %r" % port)
 
         self.__publisher = Publisher(ip, port_number, stream_definition)
-        #self.__publisher.defineStream(str(stream_definition))
+        self.__publisher.connect(username, password)
+        self.__publisher.defineStream(str(stream_definition))
+        ThriftPublisher.log.debug("ThriftPublisher initializing with stream definition: " + str(stream_definition))
         self.stream_definition = stream_definition
         self.stream_id = self.__publisher.streamId
         self.ip = ip
@@ -151,9 +152,6 @@ class ThriftPublisher(Thread):
         self.username = username
         self.password = password
 
-    def run(self):
-        self.__publisher.connect(self.username, self.password)
-
     def publish(self, event):
         """
         Publishes the given event by creating the event bundle from the log event

http://git-wip-us.apache.org/repos/asf/stratos/blob/8bd92e89/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/databridge/thrift/publisher.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/databridge/thrift/publisher.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/databridge/thrift/publisher.py
index e607d1b..de96ced 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/databridge/thrift/publisher.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/databridge/thrift/publisher.py
@@ -50,7 +50,6 @@ class Publisher:
         self.socket.open()
         self.transport.open()
         self.sessionId = Publisher.client.connect(username, password)
-        self.streamId = Publisher.client.defineStream(self.sessionId, self.streamDef)
 
     def defineStream(self, streamDef):
         # Create Stream Definition

http://git-wip-us.apache.org/repos/asf/stratos/blob/8bd92e89/products/python-cartridge-agent/integration/pom.xml
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/integration/pom.xml b/products/python-cartridge-agent/integration/pom.xml
index 52cc286..707a4ae 100755
--- a/products/python-cartridge-agent/integration/pom.xml
+++ b/products/python-cartridge-agent/integration/pom.xml
@@ -78,7 +78,7 @@
                             </excludes>
                         </configuration>
                         <executions>
-                            <!--execution>
+                            <execution>
                                 <id>default-test</id>
                                 <goals>
                                     <goal>test</goal>
@@ -103,7 +103,7 @@
                                     </suiteXmlFiles>
                                     <workingDirectory>${basedir}/target</workingDirectory>
                                 </configuration>
-                            </execution-->
+                            </execution>
                             <execution>
                                 <id>adc-mt-test</id>
                                 <goals>
@@ -196,5 +196,10 @@
             <artifactId>org.apache.stratos.messaging</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.thrift</groupId>
+            <artifactId>libthrift</artifactId>
+            <version>0.9.2</version>
+        </dependency>
     </dependencies>
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/8bd92e89/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCMTAppTest.java
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCMTAppTest.java b/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCMTAppTest.java
index 3104281..2a4c8b5 100644
--- a/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCMTAppTest.java
+++ b/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCMTAppTest.java
@@ -51,7 +51,7 @@ public class ADCMTAppTest extends PythonAgentTestManager {
     private static final String TENANT_ID = "-1234";
     private static final String SERVICE_NAME = "tomcat-mt";
 
-    private static boolean hasADCTestCompleted = false;
+    private boolean hasADCTestCompleted = false;
 
     @BeforeSuite
     public void setupADCMTAppTest() {
@@ -95,7 +95,7 @@ public class ADCMTAppTest extends PythonAgentTestManager {
                             if (line.contains("Git clone executed")) {
                                 log.info("Agent has completed git clone. Asserting the operation...");
                                 assertRepoClone(getArtifactUpdatedEventForPublicRepo());
-                                //hasADCTestCompleted = true;
+                                hasADCTestCompleted = true;
                             }
                         }
                     }

http://git-wip-us.apache.org/repos/asf/stratos/blob/8bd92e89/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCTest.java
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCTest.java b/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCTest.java
index 99dc217..de5be67 100755
--- a/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCTest.java
+++ b/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCTest.java
@@ -53,7 +53,7 @@ public class ADCTest extends PythonAgentTestManager {
     private static final String TENANT_ID = "-1234";
     private static final String SERVICE_NAME = "tomcat";
 
-    private static boolean hasADCTestCompleted = false;
+    private boolean hasADCTestCompleted = false;
 
     @BeforeSuite
     public void setupADCTest() {
@@ -107,7 +107,6 @@ public class ADCTest extends PythonAgentTestManager {
                                 }
                             }
                             if (line.contains("Pushed artifacts for tenant")) {
-                                // TODO: Get rid of static var
                                 log.info("ADC Test completed");
                                 hasADCTestCompleted = true;
                             }

http://git-wip-us.apache.org/repos/asf/stratos/blob/8bd92e89/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/AgentStartupTest.java
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/AgentStartupTest.java b/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/AgentStartupTest.java
index 83fc227..c08ab5c 100755
--- a/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/AgentStartupTest.java
+++ b/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/AgentStartupTest.java
@@ -35,7 +35,7 @@ import java.util.Properties;
 
 public class AgentStartupTest extends PythonAgentTestManager {
     private static final Log log = LogFactory.getLog(AgentStartupTest.class);
-    private static final int STARTUP_TIMEOUT = 30000;
+    private static final int STARTUP_TIMEOUT = 60000;
     private static final String RESOURCES_PATH = "/suite-1";
     private static final String CLUSTER_ID = "php.php.domain";
     private static final String DEPLOYMENT_POLICY_NAME = "deployment-policy-1";
@@ -47,6 +47,7 @@ public class AgentStartupTest extends PythonAgentTestManager {
     private static final String PARTITION_ID = "partition-1";
     private static final String TENANT_ID = "-1234";
     private static final String SERVICE_NAME = "php";
+    private boolean startupTestCompleted = false;
 
     @BeforeSuite
     public void setupAgentStartupTest() {
@@ -101,6 +102,10 @@ public class AgentStartupTest extends PythonAgentTestManager {
                                 publishEvent(memberInitializedEvent);
                                 log.info("Member initialized event published");
                             }
+                            // TODO: properly mock the CEP server
+                            if (line.contains("Published event to thrift stream")) {
+                                startupTestCompleted = true;
+                            }
                         }
                     }
                     sleep(1000);
@@ -110,7 +115,7 @@ public class AgentStartupTest extends PythonAgentTestManager {
 
         startupTestThread.start();
 
-        while (!instanceStarted || !instanceActivated) {
+        while (!instanceStarted || !instanceActivated || !startupTestCompleted) {
             // wait until the instance activated event is received.
             // this will assert whether instance got activated within timeout period; no need for explicit assertions
             sleep(2000);

http://git-wip-us.apache.org/repos/asf/stratos/blob/8bd92e89/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/PythonAgentTestManager.java
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/PythonAgentTestManager.java b/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/PythonAgentTestManager.java
index 6ed4bb3..5ba6c6a 100644
--- a/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/PythonAgentTestManager.java
+++ b/products/python-cartridge-agent/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/PythonAgentTestManager.java
@@ -110,8 +110,9 @@ public class PythonAgentTestManager {
 
             this.eventReceiverInitiated = true;
         }
-        // Simulate CEP server socket
-        startServerSocket(cepPort);
+        // Simulate CEP Thrift server
+        //startServerSocket(cepPort);
+        // TODO: create a mock thrift server; sockets will not work with health stats publisher
         String agentPath = setupPythonAgent(resourcePath);
         log.info("Python agent working directory name: " + PYTHON_AGENT_DIR_NAME);
         log.info("Starting python cartridge agent...");
@@ -120,6 +121,7 @@ public class PythonAgentTestManager {
                 "/cartridge-agent-console.log");
     }
 
+
     protected void tearDown() {
         tearDown(null);
     }
@@ -266,6 +268,10 @@ public class PythonAgentTestManager {
     }
 
 
+    protected static String getResourcesPath() {
+        return PythonAgentTestManager.class.getResource("/").getPath() + "/../../src/test/resources";
+    }
+
     protected static String getResourcesPath(String resourcesPath) {
         return PythonAgentTestManager.class.getResource("/").getPath() + "/../../src/test/resources" + resourcesPath;
     }