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/09/15 17:15:16 UTC
[4/4] stratos git commit: Fixing PCA live tests and PCA conflicts
Fixing PCA live tests and PCA conflicts
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/42c388bc
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/42c388bc
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/42c388bc
Branch: refs/heads/stratos-4.1.x
Commit: 42c388bc460e7825f57f8386a39aa4478a1e8e19
Parents: 0843304
Author: Akila Perera <ra...@gmail.com>
Authored: Tue Sep 15 20:44:30 2015 +0530
Committer: Akila Perera <ra...@gmail.com>
Committed: Tue Sep 15 20:44:40 2015 +0530
----------------------------------------------------------------------
.../cartridge.agent/cartridge.agent/config.py | 15 +-
.../extensions/py/ExtensionExecutor.py | 2 +-
.../thrift/thrift/transport/TSSLSocket.py | 357 +++++++-------
.../cartridge.agent/modules/util/log.py | 2 +-
.../cartridge.agent/publisher.py | 2 +-
pom.xml | 1 +
.../distribution/src/main/assembly/bin.xml | 5 +-
.../modules/integration/pom.xml | 200 +-------
.../test/ADCMTAppTenantUserTest.java | 213 --------
.../test/ADCMTAppTest.java | 213 --------
.../python.cartridge.agent/test/ADCTest.java | 235 ---------
.../test/AgentStartupTest.java | 154 ------
.../test/PythonAgentTestManager.java | 461 -----------------
.../src/test/resources/log4j.properties | 41 --
.../src/test/resources/pca-testing1.xml | 29 --
.../src/test/resources/pca-testing2.xml | 29 --
.../src/test/resources/pca-testing3.xml | 29 --
.../src/test/resources/pca-testing4.xml | 29 --
.../src/test/resources/suite-1/agent.conf | 45 --
.../src/test/resources/suite-1/jndi.properties | 22 -
.../src/test/resources/suite-1/logging.ini | 52 --
.../resources/suite-1/payload/launch-params | 1 -
.../src/test/resources/suite-2/agent.conf | 45 --
.../src/test/resources/suite-2/jndi.properties | 22 -
.../src/test/resources/suite-2/logging.ini | 52 --
.../resources/suite-2/payload/launch-params | 1 -
.../src/test/resources/suite-3/agent.conf | 45 --
.../src/test/resources/suite-3/jndi.properties | 22 -
.../src/test/resources/suite-3/logging.ini | 52 --
.../resources/suite-3/payload/launch-params | 1 -
.../src/test/resources/suite-4/agent.conf | 45 --
.../src/test/resources/suite-4/jndi.properties | 22 -
.../src/test/resources/suite-4/logging.ini | 52 --
.../resources/suite-4/payload/launch-params | 1 -
.../test-conf/integration-test.properties | 26 -
.../modules/integration/test-common/pom.xml | 94 ++++
.../common/DataPublisherTestUtil.java | 54 ++
.../integration/common/ThriftTestServer.java | 215 ++++++++
.../integration/test-integration/pom.xml | 168 +++++++
.../tests/ADCMTAppTenantUserTestCase.java | 217 ++++++++
.../integration/tests/ADCMTAppTestCase.java | 218 ++++++++
.../agent/integration/tests/ADCTestCase.java | 239 +++++++++
.../integration/tests/AgentStartupTestCase.java | 157 ++++++
.../tests/PythonAgentIntegrationTest.java | 491 +++++++++++++++++++
.../ADCMTAppTenantUserTestCase/agent.conf | 45 ++
.../ADCMTAppTenantUserTestCase/logging.ini | 52 ++
.../payload/launch-params | 1 +
.../test/resources/ADCMTAppTestCase/agent.conf | 45 ++
.../test/resources/ADCMTAppTestCase/logging.ini | 52 ++
.../ADCMTAppTestCase/payload/launch-params | 1 +
.../src/test/resources/ADCTestCase/agent.conf | 45 ++
.../src/test/resources/ADCTestCase/logging.ini | 52 ++
.../resources/ADCTestCase/payload/launch-params | 1 +
.../resources/AgentStartupTestCase/agent.conf | 45 ++
.../resources/AgentStartupTestCase/logging.ini | 52 ++
.../AgentStartupTestCase/payload/launch-params | 1 +
.../test/resources/common/client-truststore.jks | Bin 0 -> 37935 bytes
.../resources/common/data-bridge-config.xml | 75 +++
.../src/test/resources/common/jndi.properties | 22 +
.../src/test/resources/common/log4j.properties | 41 ++
.../common/stratos-health-stream-def.json | 1 +
.../resources/common/thrift-agent-config.xml | 64 +++
.../src/test/resources/common/wso2carbon.jks | Bin 0 -> 33260 bytes
.../test-conf/integration-test.properties | 27 +
.../src/test/resources/test-suite-all.xml | 36 ++
.../src/test/resources/test-suite-smoke.xml | 37 ++
66 files changed, 2755 insertions(+), 2316 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/42c388bc/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py
index fdf3880..31da21f 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/config.py
@@ -18,11 +18,12 @@
import ConfigParser
import os
+from yapsy.PluginManager import PluginManager
+
from modules.util.log import LogFactory
from exception import ParameterNotFoundException
import constants
from plugins.contracts import ICartridgeAgentPlugin, IArtifactManagementPlugin, IHealthStatReaderPlugin
-from yapsy.PluginManager import PluginManager
class Config:
@@ -134,18 +135,20 @@ class Config:
:rtype: ConfigParser.SafeConfigParser()
"""
- conf_file_path = os.path.abspath(os.path.dirname(__file__)).split("modules")[0] + "/agent.conf"
+ conf_file_path = os.path.abspath(os.path.dirname(__file__)) + "/agent.conf"
Config.log.debug("Config file path : %r" % conf_file_path)
properties = ConfigParser.SafeConfigParser()
properties.read(conf_file_path)
# set calculated values
- param_file = os.path.abspath(os.path.dirname(__file__)).split("modules")[0] + "/payload/launch-params"
+ param_file = os.path.abspath(os.path.dirname(__file__)) + "/payload/launch-params"
+ Config.log.debug("param_file: %r" % param_file)
properties.set("agent", constants.PARAM_FILE_PATH, param_file)
- plugins_dir = os.path.abspath(os.path.dirname(__file__)).split("modules")[0] + "/plugins"
+ plugins_dir = os.path.abspath(os.path.dirname(__file__)) + "/plugins"
+ Config.log.debug("plugins_dir: %r" % plugins_dir)
properties.set("agent", constants.PLUGINS_DIR, plugins_dir)
- plugins_dir = os.path.abspath(os.path.dirname(__file__)).split("modules")[0] + "/extensions/py"
+ plugins_dir = os.path.abspath(os.path.dirname(__file__)) + "/extensions/py"
properties.set("agent", constants.EXTENSIONS_DIR, plugins_dir)
return properties
@@ -264,7 +267,7 @@ class Config:
Config.application_id = Config.read_property(constants.APPLICATION_ID)
Config.service_name = Config.read_property(constants.SERVICE_NAME)
Config.cluster_id = Config.read_property(constants.CLUSTER_ID)
- Config.ports = Config.read_property(constants.PORTS).replace("'","").split("|")
+ Config.ports = Config.read_property(constants.PORTS).replace("'", "").split("|")
Config.is_multiTenant = Config.read_property(constants.MULTITENANT)
Config.tenant_id = Config.read_property(constants.TENANT_ID)
http://git-wip-us.apache.org/repos/asf/stratos/blob/42c388bc/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/py/ExtensionExecutor.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/py/ExtensionExecutor.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/py/ExtensionExecutor.py
index 9c958da..655afc4 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/py/ExtensionExecutor.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/extensions/py/ExtensionExecutor.py
@@ -51,7 +51,7 @@ class ExtensionExecutor(ICartridgeAgentPlugin):
"""
log = LogFactory().get_log(__name__)
- working_dir = os.path.abspath(os.path.dirname(__file__)).split("modules")[0]
+ working_dir = os.path.abspath(os.path.dirname(__file__))
command = working_dir[:-2] + "bash/" + bash_file
current_env_vars = os.environ.copy()
extension_values.update(current_env_vars)
http://git-wip-us.apache.org/repos/asf/stratos/blob/42c388bc/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/databridge/thrift/thrift/transport/TSSLSocket.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/databridge/thrift/thrift/transport/TSSLSocket.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/databridge/thrift/thrift/transport/TSSLSocket.py
index df35be4..9bb9771 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/databridge/thrift/thrift/transport/TSSLSocket.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/databridge/thrift/thrift/transport/TSSLSocket.py
@@ -26,189 +26,192 @@ from TTransport import TTransportException
class TSSLSocket(TSocket.TSocket):
- """
- SSL implementation of client-side TSocket
-
- This class creates outbound sockets wrapped using the
- python standard ssl module for encrypted connections.
-
- The protocol used is set using the class variable
- SSL_VERSION, which must be one of ssl.PROTOCOL_* and
- defaults to ssl.PROTOCOL_TLSv1 for greatest security.
- """
- SSL_VERSION = ssl.PROTOCOL_TLSv1
-
- def __init__(self,
- host='localhost',
- port=9090,
- validate=True,
- ca_certs=None,
- keyfile=None,
- certfile=None,
- unix_socket=None):
- """Create SSL TSocket
-
- @param validate: Set to False to disable SSL certificate validation
- @type validate: bool
- @param ca_certs: Filename to the Certificate Authority pem file, possibly a
- file downloaded from: http://curl.haxx.se/ca/cacert.pem This is passed to
- the ssl_wrap function as the 'ca_certs' parameter.
- @type ca_certs: str
- @param keyfile: The private key
- @type keyfile: str
- @param certfile: The cert file
- @type certfile: str
-
- Raises an IOError exception if validate is True and the ca_certs file is
- None, not present or unreadable.
"""
- self.validate = validate
- self.is_valid = False
- self.peercert = None
- if not validate:
- self.cert_reqs = ssl.CERT_NONE
- else:
- self.cert_reqs = ssl.CERT_REQUIRED
- self.ca_certs = ca_certs
- self.keyfile = keyfile
- self.certfile = certfile
- if validate:
- if ca_certs is None or not os.access(ca_certs, os.R_OK):
- raise IOError('Certificate Authority ca_certs file "%s" '
- 'is not readable, cannot validate SSL '
- 'certificates.' % (ca_certs))
- TSocket.TSocket.__init__(self, host, port, unix_socket)
-
- def open(self):
- try:
- res0 = self._resolveAddr()
- for res in res0:
- sock_family, sock_type = res[0:2]
- ip_port = res[4]
- plain_sock = socket.socket(sock_family, sock_type)
- self.handle = ssl.wrap_socket(plain_sock,
- ssl_version=self.SSL_VERSION,
- do_handshake_on_connect=True,
- ca_certs=self.ca_certs,
- keyfile=self.keyfile,
- certfile=self.certfile,
- cert_reqs=self.cert_reqs)
- self.handle.settimeout(self._timeout)
+ SSL implementation of client-side TSocket
+
+ This class creates outbound sockets wrapped using the
+ python standard ssl module for encrypted connections.
+
+ The protocol used is set using the class variable
+ SSL_VERSION, which must be one of ssl.PROTOCOL_* and
+ defaults to ssl.PROTOCOL_TLSv1 for greatest security.
+ """
+ SSL_VERSION = ssl.PROTOCOL_TLSv1
+ CIPHERS = "DEFAULT:!ECDH"
+
+ def __init__(self,
+ host='localhost',
+ port=9090,
+ validate=True,
+ ca_certs=None,
+ keyfile=None,
+ certfile=None,
+ unix_socket=None):
+ """Create SSL TSocket
+
+ @param validate: Set to False to disable SSL certificate validation
+ @type validate: bool
+ @param ca_certs: Filename to the Certificate Authority pem file, possibly a
+ file downloaded from: http://curl.haxx.se/ca/cacert.pem This is passed to
+ the ssl_wrap function as the 'ca_certs' parameter.
+ @type ca_certs: str
+ @param keyfile: The private key
+ @type keyfile: str
+ @param certfile: The cert file
+ @type certfile: str
+
+ Raises an IOError exception if validate is True and the ca_certs file is
+ None, not present or unreadable.
+ """
+ TSocket.TSocket.__init__(self, host, port, unix_socket)
+
+ self.validate = validate
+ self.is_valid = False
+ self.peercert = None
+ if not validate:
+ self.cert_reqs = ssl.CERT_NONE
+ else:
+ self.cert_reqs = ssl.CERT_REQUIRED
+ self.ca_certs = ca_certs
+ self.keyfile = keyfile
+ self.certfile = certfile
+ if validate:
+ if ca_certs is None or not os.access(ca_certs, os.R_OK):
+ raise IOError('Certificate Authority ca_certs file "%s" '
+ 'is not readable, cannot validate SSL '
+ 'certificates.' % (ca_certs))
+
+ def open(self):
try:
- self.handle.connect(ip_port)
+ res0 = self._resolveAddr()
+ for res in res0:
+ sock_family, sock_type = res[0:2]
+ ip_port = res[4]
+ plain_sock = socket.socket(sock_family, sock_type)
+ self.handle = ssl.wrap_socket(plain_sock,
+ ssl_version=TSSLSocket.SSL_VERSION,
+ do_handshake_on_connect=True,
+ ca_certs=self.ca_certs,
+ keyfile=self.keyfile,
+ certfile=self.certfile,
+ cert_reqs=self.cert_reqs,
+ ciphers=TSSLSocket.CIPHERS)
+ self.handle.settimeout(self._timeout)
+ try:
+ self.handle.connect(ip_port)
+ except socket.error, e:
+ if res is not res0[-1]:
+ continue
+ else:
+ raise e
+ break
except socket.error, e:
- if res is not res0[-1]:
- continue
- else:
- raise e
- break
- except socket.error, e:
- if self._unix_socket:
- message = 'Could not connect to secure socket %s: %s' \
- % (self._unix_socket, e)
- else:
- message = 'Could not connect to %s:%d: %s' % (self.host, self.port, e)
- raise TTransportException(type=TTransportException.NOT_OPEN,
- message=message)
- if self.validate:
- self._validate_cert()
-
- def _validate_cert(self):
- """internal method to validate the peer's SSL certificate, and to check the
- commonName of the certificate to ensure it matches the hostname we
- used to make this connection. Does not support subjectAltName records
- in certificates.
-
- raises TTransportException if the certificate fails validation.
- """
- cert = self.handle.getpeercert()
- self.peercert = cert
- if 'subject' not in cert:
- raise TTransportException(
- type=TTransportException.NOT_OPEN,
- message='No SSL certificate found from %s:%s' % (self.host, self.port))
- fields = cert['subject']
- for field in fields:
- # ensure structure we get back is what we expect
- if not isinstance(field, tuple):
- continue
- cert_pair = field[0]
- if len(cert_pair) < 2:
- continue
- cert_key, cert_value = cert_pair[0:2]
- if cert_key != 'commonName':
- continue
- certhost = cert_value
- # this check should be performed by some sort of Access Manager
- if certhost == self.host:
- # success, cert commonName matches desired hostname
- self.is_valid = True
- return
- else:
+ if self._unix_socket:
+ message = 'Could not connect to secure socket %s: %s' \
+ % (self._unix_socket, e)
+ else:
+ message = 'Could not connect to %s:%d: %s' % (self.host, self.port, e)
+ raise TTransportException(type=TTransportException.NOT_OPEN,
+ message=message)
+ if self.validate:
+ self._validate_cert()
+
+ def _validate_cert(self):
+ """internal method to validate the peer's SSL certificate, and to check the
+ commonName of the certificate to ensure it matches the hostname we
+ used to make this connection. Does not support subjectAltName records
+ in certificates.
+
+ raises TTransportException if the certificate fails validation.
+ """
+ cert = self.handle.getpeercert()
+ self.peercert = cert
+ if 'subject' not in cert:
+ raise TTransportException(
+ type=TTransportException.NOT_OPEN,
+ message='No SSL certificate found from %s:%s' % (self.host, self.port))
+ fields = cert['subject']
+ for field in fields:
+ # ensure structure we get back is what we expect
+ if not isinstance(field, tuple):
+ continue
+ cert_pair = field[0]
+ if len(cert_pair) < 2:
+ continue
+ cert_key, cert_value = cert_pair[0:2]
+ if cert_key != 'commonName':
+ continue
+ certhost = cert_value
+ # this check should be performed by some sort of Access Manager
+ if certhost == self.host:
+ # success, cert commonName matches desired hostname
+ self.is_valid = True
+ return
+ else:
+ raise TTransportException(
+ type=TTransportException.UNKNOWN,
+ message='Hostname we connected to "%s" doesn\'t match certificate '
+ 'provided commonName "%s"' % (self.host, certhost))
raise TTransportException(
- type=TTransportException.UNKNOWN,
- message='Hostname we connected to "%s" doesn\'t match certificate '
- 'provided commonName "%s"' % (self.host, certhost))
- raise TTransportException(
- type=TTransportException.UNKNOWN,
- message='Could not validate SSL certificate from '
- 'host "%s". Cert=%s' % (self.host, cert))
+ type=TTransportException.UNKNOWN,
+ message='Could not validate SSL certificate from '
+ 'host "%s". Cert=%s' % (self.host, cert))
class TSSLServerSocket(TSocket.TServerSocket):
- """SSL implementation of TServerSocket
-
- This uses the ssl module's wrap_socket() method to provide SSL
- negotiated encryption.
- """
- SSL_VERSION = ssl.PROTOCOL_TLSv1
-
- def __init__(self,
- host=None,
- port=9090,
- certfile='cert.pem',
- unix_socket=None):
- """Initialize a TSSLServerSocket
-
- @param certfile: filename of the server certificate, defaults to cert.pem
- @type certfile: str
- @param host: The hostname or IP to bind the listen socket to,
- i.e. 'localhost' for only allowing local network connections.
- Pass None to bind to all interfaces.
- @type host: str
- @param port: The port to listen on for inbound connections.
- @type port: int
- """
- self.setCertfile(certfile)
- TSocket.TServerSocket.__init__(self, host, port)
-
- def setCertfile(self, certfile):
- """Set or change the server certificate file used to wrap new connections.
+ """SSL implementation of TServerSocket
- @param certfile: The filename of the server certificate,
- i.e. '/etc/certs/server.pem'
- @type certfile: str
-
- Raises an IOError exception if the certfile is not present or unreadable.
+ This uses the ssl module's wrap_socket() method to provide SSL
+ negotiated encryption.
"""
- if not os.access(certfile, os.R_OK):
- raise IOError('No such certfile found: %s' % (certfile))
- self.certfile = certfile
-
- def accept(self):
- plain_client, addr = self.handle.accept()
- try:
- client = ssl.wrap_socket(plain_client, certfile=self.certfile,
- server_side=True, ssl_version=self.SSL_VERSION)
- except ssl.SSLError, ssl_exc:
- # failed handshake/ssl wrap, close socket to client
- plain_client.close()
- # raise ssl_exc
- # We can't raise the exception, because it kills most TServer derived
- # serve() methods.
- # Instead, return None, and let the TServer instance deal with it in
- # other exception handling. (but TSimpleServer dies anyway)
- return None
- result = TSocket.TSocket()
- result.setHandle(client)
- return result
+ SSL_VERSION = ssl.PROTOCOL_TLSv1
+
+ def __init__(self,
+ host=None,
+ port=9090,
+ certfile='cert.pem',
+ unix_socket=None):
+ """Initialize a TSSLServerSocket
+
+ @param certfile: filename of the server certificate, defaults to cert.pem
+ @type certfile: str
+ @param host: The hostname or IP to bind the listen socket to,
+ i.e. 'localhost' for only allowing local network connections.
+ Pass None to bind to all interfaces.
+ @type host: str
+ @param port: The port to listen on for inbound connections.
+ @type port: int
+ """
+ self.setCertfile(certfile)
+ TSocket.TServerSocket.__init__(self, host, port)
+
+ def setCertfile(self, certfile):
+ """Set or change the server certificate file used to wrap new connections.
+
+ @param certfile: The filename of the server certificate,
+ i.e. '/etc/certs/server.pem'
+ @type certfile: str
+
+ Raises an IOError exception if the certfile is not present or unreadable.
+ """
+ if not os.access(certfile, os.R_OK):
+ raise IOError('No such certfile found: %s' % (certfile))
+ self.certfile = certfile
+
+ def accept(self):
+ plain_client, addr = self.handle.accept()
+ try:
+ client = ssl.wrap_socket(plain_client, certfile=self.certfile,
+ server_side=True, ssl_version=self.SSL_VERSION)
+ except ssl.SSLError, ssl_exc:
+ # failed handshake/ssl wrap, close socket to client
+ plain_client.close()
+ # raise ssl_exc
+ # We can't raise the exception, because it kills most TServer derived
+ # serve() methods.
+ # Instead, return None, and let the TServer instance deal with it in
+ # other exception handling. (but TSimpleServer dies anyway)
+ return None
+ result = TSocket.TSocket()
+ result.setHandle(client)
+ return result
http://git-wip-us.apache.org/repos/asf/stratos/blob/42c388bc/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/log.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/log.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/log.py
index 9bad214..6a0804e 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/log.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/util/log.py
@@ -27,7 +27,7 @@ class LogFactory(object):
class __LogFactory:
def __init__(self):
self.logs = {}
- logging_conf = os.path.abspath(os.path.dirname(__file__)).split("modules")[0] + "logging.ini"
+ logging_conf = os.path.abspath(os.path.dirname(__file__)) + "/../../logging.ini"
logging.config.fileConfig(logging_conf)
def get_log(self, name):
http://git-wip-us.apache.org/repos/asf/stratos/blob/42c388bc/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/publisher.py
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/publisher.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/publisher.py
index d4365e8..00b5fba 100644
--- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/publisher.py
+++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/publisher.py
@@ -104,7 +104,7 @@ def publish_instance_activated_event(health_stat_plugin):
log.info("Instance activated event published")
log.info("Starting health statistics notifier")
- health_stat_publishing_enabled = Config.read_property(constants.CEP_PUBLISHER_ENABLED, False)
+ health_stat_publishing_enabled = Config.read_property(constants.CEP_PUBLISHER_ENABLED, True)
if health_stat_publishing_enabled:
interval_default = 15 # seconds
http://git-wip-us.apache.org/repos/asf/stratos/blob/42c388bc/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 6fe098c..4f937bd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -774,6 +774,7 @@
<carbon.deployment.version>4.2.3</carbon.deployment.version>
<carbon.automation.version>4.4.2</carbon.automation.version>
<carbon.automationutils.version>4.4.2</carbon.automationutils.version>
+ <carbon.analytics.common.version>5.0.0</carbon.analytics.common.version>
<carbon.ui.stratos.version>4.2.0-stratosv2</carbon.ui.stratos.version>
<carbon.p2.plugin.version>1.5.4</carbon.p2.plugin.version>
<carbon.platform.patch.version.4.2.1>4.2.1</carbon.platform.patch.version.4.2.1>
http://git-wip-us.apache.org/repos/asf/stratos/blob/42c388bc/products/python-cartridge-agent/modules/distribution/src/main/assembly/bin.xml
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/modules/distribution/src/main/assembly/bin.xml b/products/python-cartridge-agent/modules/distribution/src/main/assembly/bin.xml
index fa8874c..aa49e62 100644
--- a/products/python-cartridge-agent/modules/distribution/src/main/assembly/bin.xml
+++ b/products/python-cartridge-agent/modules/distribution/src/main/assembly/bin.xml
@@ -25,12 +25,15 @@
<fileSets>
<fileSet>
<directory>
- ${project.basedir}/../../../components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent
+ ${project.basedir}/../../../../components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent
</directory>
<outputDirectory>.</outputDirectory>
<includes>
<include>**/*</include>
</includes>
+ <excludes>
+ <exclude>**/*.pyc</exclude>
+ </excludes>
<fileMode>0755</fileMode>
</fileSet>
</fileSets>
http://git-wip-us.apache.org/repos/asf/stratos/blob/42c388bc/products/python-cartridge-agent/modules/integration/pom.xml
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/modules/integration/pom.xml b/products/python-cartridge-agent/modules/integration/pom.xml
index aa9efb4..aa2c94d 100755
--- a/products/python-cartridge-agent/modules/integration/pom.xml
+++ b/products/python-cartridge-agent/modules/integration/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
~ Licensed to the Apache Software Foundation (ASF) under one
~ or more contributor license agreements. See the NOTICE file
@@ -7,7 +8,7 @@
~ "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
+ ~ 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
@@ -16,7 +17,6 @@
~ specific language governing permissions and limitations
~ under the License.
-->
-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
@@ -27,193 +27,13 @@
<relativePath>../../pom.xml</relativePath>
</parent>
- <artifactId>python-agent-integration</artifactId>
- <packaging>jar</packaging>
- <name>Python Cartridge Agent - Integration Tests</name>
-
- <build>
- <resources>
- <resource>
- <directory>src/test/resources/test-conf</directory>
- <filtering>true</filtering>
- </resource>
- </resources>
- </build>
-
- <profiles>
- <profile>
- <id>default</id>
- <activation>
- <activeByDefault>true</activeByDefault>
- </activation>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <excludes>
- <exclude>**/*</exclude>
- </excludes>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </profile>
- <profile>
- <id>live</id>
- <build>
- <resources>
- <resource>
- <directory>src/test/resources/test-conf</directory>
- <filtering>true</filtering>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-surefire-plugin</artifactId>
- <configuration>
- <excludes>
- <exclude>**/*</exclude>
- </excludes>
- </configuration>
- <executions>
- <execution>
- <id>default-test</id>
- <goals>
- <goal>test</goal>
- </goals>
- <inherited>false</inherited>
- <configuration>
- <suiteXmlFiles>
- <suiteXmlFile>src/test/resources/pca-testing1.xml</suiteXmlFile>
- </suiteXmlFiles>
- <workingDirectory>${basedir}/target</workingDirectory>
- </configuration>
- </execution>
- <execution>
- <id>adc-test</id>
- <goals>
- <goal>test</goal>
- </goals>
- <inherited>false</inherited>
- <configuration>
- <suiteXmlFiles>
- <suiteXmlFile>src/test/resources/pca-testing2.xml</suiteXmlFile>
- </suiteXmlFiles>
- <workingDirectory>${basedir}/target</workingDirectory>
- </configuration>
- </execution>
- <execution>
- <id>adc-mt-test</id>
- <goals>
- <goal>test</goal>
- </goals>
- <inherited>false</inherited>
- <configuration>
- <suiteXmlFiles>
- <suiteXmlFile>src/test/resources/pca-testing3.xml</suiteXmlFile>
- </suiteXmlFiles>
- <workingDirectory>${basedir}/target</workingDirectory>
- </configuration>
- </execution>
- <execution>
- <id>adc-mt-tenant-user-test</id>
- <goals>
- <goal>test</goal>
- </goals>
- <inherited>false</inherited>
- <configuration>
- <suiteXmlFiles>
- <suiteXmlFile>src/test/resources/pca-testing4.xml</suiteXmlFile>
- </suiteXmlFiles>
- <workingDirectory>${basedir}/target</workingDirectory>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-jar-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>test-jar</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
+ <artifactId>python-cartridge-agent-integration</artifactId>
+ <packaging>pom</packaging>
+ <name>Apache Stratos - Python Cartridge Agent Integration Aggregator</name>
+ <description>Apache Stratos Python Cartridge Agent Integration Aggregator</description>
- <dependencies>
- <dependency>
- <groupId>org.apache.commons</groupId>
- <artifactId>commons-exec</artifactId>
- <version>1.0.1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.stratos</groupId>
- <artifactId>org.apache.stratos.common</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.testng</groupId>
- <artifactId>testng</artifactId>
- <version>6.1.1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.axis2.wso2</groupId>
- <artifactId>axis2-client</artifactId>
- <version>${axis2.wso2.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents.wso2</groupId>
- <artifactId>httpcore</artifactId>
- <version>4.3.0.wso2v1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents.wso2</groupId>
- <artifactId>httpclient</artifactId>
- <version>4.2.5.wso2v1</version>
- </dependency>
- <dependency>
- <groupId>org.apache.stratos</groupId>
- <artifactId>org.apache.stratos.mock.iaas.client</artifactId>
- <version>${project.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.wso2.andes.wso2</groupId>
- <artifactId>andes-client</artifactId>
- <version>0.13.wso2v8</version>
- </dependency>
- <dependency>
- <groupId>org.apache.activemq</groupId>
- <artifactId>activemq-all</artifactId>
- <version>5.10.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.activemq</groupId>
- <artifactId>activemq-mqtt</artifactId>
- <version>5.10.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.stratos</groupId>
- <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>
+ <modules>
+ <module>test-common</module>
+ <module>test-integration</module>
+ </modules>
</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/stratos/blob/42c388bc/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCMTAppTenantUserTest.java
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCMTAppTenantUserTest.java b/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCMTAppTenantUserTest.java
deleted file mode 100644
index a604f55..0000000
--- a/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCMTAppTenantUserTest.java
+++ /dev/null
@@ -1,213 +0,0 @@
-package org.apache.stratos.python.cartridge.agent.test;/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.common.domain.LoadBalancingIPType;
-import org.apache.stratos.messaging.domain.topology.*;
-import org.apache.stratos.messaging.event.instance.notifier.ArtifactUpdatedEvent;
-import org.apache.stratos.messaging.event.topology.CompleteTopologyEvent;
-import org.apache.stratos.messaging.event.topology.MemberInitializedEvent;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-import static junit.framework.Assert.assertTrue;
-
-public class ADCMTAppTenantUserTest extends PythonAgentTestManager {
- private static final Log log = LogFactory.getLog(ADCMTAppTenantUserTest.class);
- private static final int ADC_TIMEOUT = 180000;
- private static final String RESOURCES_PATH = "/suite-4";
- private static final String APPLICATION_PATH = "/tmp/pca-test-suite-4";
- private static final String CLUSTER_ID = "tomcat.domain";
- private static final String DEPLOYMENT_POLICY_NAME = "deployment-policy-4";
- private static final String AUTOSCALING_POLICY_NAME = "autoscaling-policy-4";
- private static final String APP_ID = "application-4";
- private static final String MEMBER_ID = "tomcat.member-1";
- private static final String CLUSTER_INSTANCE_ID = "cluster-1-instance-1";
- private static final String NETWORK_PARTITION_ID = "network-partition-1";
- private static final String PARTITION_ID = "partition-1";
- private static final String TENANT_ID = "4";
- private static final String SERVICE_NAME = "tomcat-mt";
-
- private boolean hasADCTestCompleted = false;
-
- @BeforeSuite
- public void setupADCMTAppTest() {
- // Set jndi.properties.dir system property for initializing event publishers and receivers
- System.setProperty("jndi.properties.dir", getResourcesPath(RESOURCES_PATH));
-
- // start Python agent with configurations provided in resource path
- setup(RESOURCES_PATH);
-
- // Simulate server socket
- startServerSocket(8080);
- }
-
- /**
- * TearDown method for test method testPythonCartridgeAgent
- */
- @AfterSuite
- public void tearDownADCMTAppTest() {
- // TODO: app path is duplicated in Java test and payload
- tearDown(APPLICATION_PATH);
- }
-
- @Test(timeOut = ADC_TIMEOUT)
- public void testADCForMTApps() {
- startCommunicatorThread();
- assertAgentActivation();
- Thread adcTestThread = new Thread(new Runnable() {
- @Override
- public void run() {
- log.info("Running ADC MT Test thread...");
- // Send artifact updated event
- publishEvent(getArtifactUpdatedEventForPublicRepo());
- log.info("Publishing artifact updated event for repo: " +
- getArtifactUpdatedEventForPublicRepo().getRepoURL());
-
- List<String> outputLines = new ArrayList<String>();
- while (!outputStream.isClosed() && !hasADCTestCompleted) {
- List<String> newLines = getNewLines(outputLines, outputStream.toString());
- if (newLines.size() > 0) {
- for (String line : newLines) {
- if (line.contains("Git clone executed")) {
- log.info("Agent has completed git clone. Asserting the operation...");
- assertRepoClone(getArtifactUpdatedEventForPublicRepo());
- hasADCTestCompleted = true;
- }
- }
- }
- sleep(1000);
- }
- }
- });
- adcTestThread.start();
-
- while (!hasADCTestCompleted) {
- // wait until the instance activated event is received.
- sleep(1000);
- }
- }
-
- private void assertAgentActivation() {
- Thread startupTestThread = new Thread(new Runnable() {
- @Override
- public void run() {
- while (!eventReceiverInitiated) {
- sleep(1000);
- }
- List<String> outputLines = new ArrayList<String>();
- while (!outputStream.isClosed()) {
- List<String> newLines = getNewLines(outputLines, outputStream.toString());
- if (newLines.size() > 0) {
- for (String line : newLines) {
- if (line.contains("Subscribed to 'topology/#'")) {
- sleep(2000);
- // Send complete topology event
- log.info("Publishing complete topology event...");
- Topology topology = createTestTopology();
- CompleteTopologyEvent completeTopologyEvent = new CompleteTopologyEvent(topology);
- publishEvent(completeTopologyEvent);
- log.info("Complete topology event published");
-
- // Publish member initialized event
- log.info("Publishing member initialized event...");
- MemberInitializedEvent memberInitializedEvent = new MemberInitializedEvent(
- SERVICE_NAME, CLUSTER_ID, CLUSTER_INSTANCE_ID, MEMBER_ID, NETWORK_PARTITION_ID,
- PARTITION_ID
- );
- publishEvent(memberInitializedEvent);
- log.info("Member initialized event published");
- }
-
- // Send artifact updated event to activate the instance first
- if (line.contains("Artifact repository found")) {
- publishEvent(getArtifactUpdatedEventForPublicRepo());
- log.info("Artifact updated event published");
- }
- log.info(line);
- }
- }
- sleep(1000);
- }
- }
- });
- startupTestThread.start();
-
- while (!instanceStarted || !instanceActivated) {
- // 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);
- }
- }
-
- private ArtifactUpdatedEvent getArtifactUpdatedEventForPublicRepo() {
- ArtifactUpdatedEvent publicRepoEvent = createTestArtifactUpdatedEvent();
- publicRepoEvent.setRepoURL("https://bitbucket.org/testapache2211/opentestrepo1.git");
- return publicRepoEvent;
- }
-
- private void assertRepoClone(ArtifactUpdatedEvent artifactUpdatedEvent) {
- File file = new File(APPLICATION_PATH + "/repository/tenants/4/test1.txt");
- assertTrue("Git clone failed for repo [url] " + artifactUpdatedEvent.getRepoURL(),
- file.exists());
- }
-
- private static ArtifactUpdatedEvent createTestArtifactUpdatedEvent() {
- ArtifactUpdatedEvent artifactUpdatedEvent = new ArtifactUpdatedEvent();
- artifactUpdatedEvent.setClusterId(CLUSTER_ID);
- artifactUpdatedEvent.setTenantId(TENANT_ID);
- return artifactUpdatedEvent;
- }
-
- /**
- * Create test topology
- *
- * @return
- */
- private Topology createTestTopology() {
- Topology topology = new Topology();
- Service service = new Service(SERVICE_NAME, ServiceType.SingleTenant);
- topology.addService(service);
-
- Cluster cluster = new Cluster(service.getServiceName(), CLUSTER_ID, DEPLOYMENT_POLICY_NAME,
- AUTOSCALING_POLICY_NAME, APP_ID);
- service.addCluster(cluster);
-
- Member member = new Member(service.getServiceName(), cluster.getClusterId(), MEMBER_ID,
- CLUSTER_INSTANCE_ID, NETWORK_PARTITION_ID, PARTITION_ID, LoadBalancingIPType.Private,
- System.currentTimeMillis());
-
- member.setDefaultPrivateIP("10.0.0.1");
- member.setDefaultPublicIP("20.0.0.1");
- Properties properties = new Properties();
- properties.setProperty("prop1", "value1");
- member.setProperties(properties);
- member.setStatus(MemberStatus.Created);
- cluster.addMember(member);
-
- return topology;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/stratos/blob/42c388bc/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCMTAppTest.java
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCMTAppTest.java b/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCMTAppTest.java
deleted file mode 100644
index 2a4c8b5..0000000
--- a/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCMTAppTest.java
+++ /dev/null
@@ -1,213 +0,0 @@
-package org.apache.stratos.python.cartridge.agent.test;/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.common.domain.LoadBalancingIPType;
-import org.apache.stratos.messaging.domain.topology.*;
-import org.apache.stratos.messaging.event.instance.notifier.ArtifactUpdatedEvent;
-import org.apache.stratos.messaging.event.topology.CompleteTopologyEvent;
-import org.apache.stratos.messaging.event.topology.MemberInitializedEvent;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-import static junit.framework.Assert.assertTrue;
-
-public class ADCMTAppTest extends PythonAgentTestManager {
- private static final Log log = LogFactory.getLog(ADCMTAppTest.class);
- private static final int ADC_TIMEOUT = 180000;
- private static final String RESOURCES_PATH = "/suite-3";
- private static final String APPLICATION_PATH = "/tmp/pca-test-suite-3";
- private static final String CLUSTER_ID = "tomcat.domain";
- private static final String DEPLOYMENT_POLICY_NAME = "deployment-policy-3";
- private static final String AUTOSCALING_POLICY_NAME = "autoscaling-policy-3";
- private static final String APP_ID = "application-3";
- private static final String MEMBER_ID = "tomcat.member-1";
- private static final String CLUSTER_INSTANCE_ID = "cluster-1-instance-1";
- private static final String NETWORK_PARTITION_ID = "network-partition-1";
- private static final String PARTITION_ID = "partition-1";
- private static final String TENANT_ID = "-1234";
- private static final String SERVICE_NAME = "tomcat-mt";
-
- private boolean hasADCTestCompleted = false;
-
- @BeforeSuite
- public void setupADCMTAppTest() {
- // Set jndi.properties.dir system property for initializing event publishers and receivers
- System.setProperty("jndi.properties.dir", getResourcesPath(RESOURCES_PATH));
-
- // start Python agent with configurations provided in resource path
- setup(RESOURCES_PATH);
-
- // Simulate server socket
- startServerSocket(8080);
- }
-
- /**
- * TearDown method for test method testPythonCartridgeAgent
- */
- @AfterSuite
- public void tearDownADCMTAppTest() {
- // TODO: app path is duplicated in Java test and payload
- tearDown(APPLICATION_PATH);
- }
-
- @Test(timeOut = ADC_TIMEOUT)
- public void testADCForMTApps() {
- startCommunicatorThread();
- assertAgentActivation();
- Thread adcTestThread = new Thread(new Runnable() {
- @Override
- public void run() {
- log.info("Running ADC MT Test thread...");
- // Send artifact updated event
- publishEvent(getArtifactUpdatedEventForPublicRepo());
- log.info("Publishing artifact updated event for repo: " +
- getArtifactUpdatedEventForPublicRepo().getRepoURL());
-
- List<String> outputLines = new ArrayList<String>();
- while (!outputStream.isClosed() && !hasADCTestCompleted) {
- List<String> newLines = getNewLines(outputLines, outputStream.toString());
- if (newLines.size() > 0) {
- for (String line : newLines) {
- if (line.contains("Git clone executed")) {
- log.info("Agent has completed git clone. Asserting the operation...");
- assertRepoClone(getArtifactUpdatedEventForPublicRepo());
- hasADCTestCompleted = true;
- }
- }
- }
- sleep(1000);
- }
- }
- });
- adcTestThread.start();
-
- while (!hasADCTestCompleted) {
- // wait until the instance activated event is received.
- sleep(1000);
- }
- }
-
- private void assertAgentActivation() {
- Thread startupTestThread = new Thread(new Runnable() {
- @Override
- public void run() {
- while (!eventReceiverInitiated) {
- sleep(1000);
- }
- List<String> outputLines = new ArrayList<String>();
- while (!outputStream.isClosed()) {
- List<String> newLines = getNewLines(outputLines, outputStream.toString());
- if (newLines.size() > 0) {
- for (String line : newLines) {
- if (line.contains("Subscribed to 'topology/#'")) {
- sleep(2000);
- // Send complete topology event
- log.info("Publishing complete topology event...");
- Topology topology = createTestTopology();
- CompleteTopologyEvent completeTopologyEvent = new CompleteTopologyEvent(topology);
- publishEvent(completeTopologyEvent);
- log.info("Complete topology event published");
-
- // Publish member initialized event
- log.info("Publishing member initialized event...");
- MemberInitializedEvent memberInitializedEvent = new MemberInitializedEvent(
- SERVICE_NAME, CLUSTER_ID, CLUSTER_INSTANCE_ID, MEMBER_ID, NETWORK_PARTITION_ID,
- PARTITION_ID
- );
- publishEvent(memberInitializedEvent);
- log.info("Member initialized event published");
- }
-
- // Send artifact updated event to activate the instance first
- if (line.contains("Artifact repository found")) {
- publishEvent(getArtifactUpdatedEventForPublicRepo());
- log.info("Artifact updated event published");
- }
- log.info(line);
- }
- }
- sleep(1000);
- }
- }
- });
- startupTestThread.start();
-
- while (!instanceStarted || !instanceActivated) {
- // 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);
- }
- }
-
- private ArtifactUpdatedEvent getArtifactUpdatedEventForPublicRepo() {
- ArtifactUpdatedEvent publicRepoEvent = createTestArtifactUpdatedEvent();
- publicRepoEvent.setRepoURL("https://bitbucket.org/testapache2211/opentestrepo1.git");
- return publicRepoEvent;
- }
-
- private void assertRepoClone(ArtifactUpdatedEvent artifactUpdatedEvent) {
- File file = new File(APPLICATION_PATH + "/repository/deployment/server/test1.txt");
- assertTrue("Git clone failed for repo [url] " + artifactUpdatedEvent.getRepoURL(),
- file.exists());
- }
-
- private static ArtifactUpdatedEvent createTestArtifactUpdatedEvent() {
- ArtifactUpdatedEvent artifactUpdatedEvent = new ArtifactUpdatedEvent();
- artifactUpdatedEvent.setClusterId(CLUSTER_ID);
- artifactUpdatedEvent.setTenantId(TENANT_ID);
- return artifactUpdatedEvent;
- }
-
- /**
- * Create test topology
- *
- * @return
- */
- private Topology createTestTopology() {
- Topology topology = new Topology();
- Service service = new Service(SERVICE_NAME, ServiceType.SingleTenant);
- topology.addService(service);
-
- Cluster cluster = new Cluster(service.getServiceName(), CLUSTER_ID, DEPLOYMENT_POLICY_NAME,
- AUTOSCALING_POLICY_NAME, APP_ID);
- service.addCluster(cluster);
-
- Member member = new Member(service.getServiceName(), cluster.getClusterId(), MEMBER_ID,
- CLUSTER_INSTANCE_ID, NETWORK_PARTITION_ID, PARTITION_ID, LoadBalancingIPType.Private,
- System.currentTimeMillis());
-
- member.setDefaultPrivateIP("10.0.0.1");
- member.setDefaultPublicIP("20.0.0.1");
- Properties properties = new Properties();
- properties.setProperty("prop1", "value1");
- member.setProperties(properties);
- member.setStatus(MemberStatus.Created);
- cluster.addMember(member);
-
- return topology;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/stratos/blob/42c388bc/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCTest.java
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCTest.java b/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCTest.java
deleted file mode 100755
index de5be67..0000000
--- a/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/ADCTest.java
+++ /dev/null
@@ -1,235 +0,0 @@
-package org.apache.stratos.python.cartridge.agent.test;/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
- */
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.common.domain.LoadBalancingIPType;
-import org.apache.stratos.messaging.domain.topology.*;
-import org.apache.stratos.messaging.event.instance.notifier.ArtifactUpdatedEvent;
-import org.apache.stratos.messaging.event.topology.CompleteTopologyEvent;
-import org.apache.stratos.messaging.event.topology.MemberInitializedEvent;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.UUID;
-
-import static junit.framework.Assert.assertTrue;
-
-public class ADCTest extends PythonAgentTestManager {
- private static final Log log = LogFactory.getLog(ADCTest.class);
- private static final int ADC_TIMEOUT = 180000;
- private static final String RESOURCES_PATH = "/suite-2";
- private static final String APPLICATION_PATH = "/tmp/pca-test-suite-2";
- private static final String CLUSTER_ID = "tomcat.domain";
- private static final String DEPLOYMENT_POLICY_NAME = "deployment-policy-2";
- private static final String AUTOSCALING_POLICY_NAME = "autoscaling-policy-2";
- private static final String APP_ID = "application-2";
- private static final String MEMBER_ID = "tomcat.member-1";
- private static final String CLUSTER_INSTANCE_ID = "cluster-1-instance-1";
- private static final String NETWORK_PARTITION_ID = "network-partition-1";
- private static final String PARTITION_ID = "partition-1";
- private static final String TENANT_ID = "-1234";
- private static final String SERVICE_NAME = "tomcat";
-
- private boolean hasADCTestCompleted = false;
-
- @BeforeSuite
- public void setupADCTest() {
- // Set jndi.properties.dir system property for initializing event publishers and receivers
- System.setProperty("jndi.properties.dir", getResourcesPath(RESOURCES_PATH));
-
- // start Python agent with configurations provided in resource path
- setup(RESOURCES_PATH);
-
- // Simulate server socket
- startServerSocket(8080);
- }
-
- /**
- * TearDown method for test method testPythonCartridgeAgent
- */
- @AfterSuite
- public void tearDownADCTest() {
- // TODO: app path is duplicated in Java test and payload
- tearDown(APPLICATION_PATH);
- }
-
-
- @Test(timeOut = ADC_TIMEOUT)
- public void testADC() {
- startCommunicatorThread();
- assertAgentActivation();
- Thread adcTestThread = new Thread(new Runnable() {
- @Override
- public void run() {
- log.info("Running ADC Test thread...");
- // Send artifact updated event
- publishEvent(getArtifactUpdatedEventForPrivateRepo());
- log.info("Publishing artifact updated event for repo: " +
- getArtifactUpdatedEventForPrivateRepo().getRepoURL());
-
- List<String> outputLines = new ArrayList<String>();
- while (!outputStream.isClosed() && !hasADCTestCompleted) {
- List<String> newLines = getNewLines(outputLines, outputStream.toString());
- if (newLines.size() > 0) {
- for (String line : newLines) {
- if (line.contains("Git clone executed")) {
- log.info("Agent has completed git clone. Asserting the operation...");
- assertRepoClone(getArtifactUpdatedEventForPrivateRepo());
- File file = new File(APPLICATION_PATH + "/pca-live-" + UUID.randomUUID());
- try {
- file.createNewFile();
- }
- catch (IOException e) {
- log.error("Could not create file", e);
- }
- }
- if (line.contains("Pushed artifacts for tenant")) {
- log.info("ADC Test completed");
- hasADCTestCompleted = true;
- }
- }
- }
- sleep(1000);
- }
- }
- });
- adcTestThread.start();
-
- while (!hasADCTestCompleted) {
- // wait until the instance activated event is received.
- sleep(1000);
- }
- }
-
- private void assertAgentActivation() {
- Thread startupTestThread = new Thread(new Runnable() {
- @Override
- public void run() {
- while (!eventReceiverInitiated) {
- sleep(1000);
- }
- List<String> outputLines = new ArrayList<String>();
- while (!outputStream.isClosed()) {
- List<String> newLines = getNewLines(outputLines, outputStream.toString());
- if (newLines.size() > 0) {
- for (String line : newLines) {
- if (line.contains("Subscribed to 'topology/#'")) {
- sleep(2000);
- // Send complete topology event
- log.info("Publishing complete topology event...");
- Topology topology = createTestTopology();
- CompleteTopologyEvent completeTopologyEvent = new CompleteTopologyEvent(topology);
- publishEvent(completeTopologyEvent);
- log.info("Complete topology event published");
-
- // Publish member initialized event
- log.info("Publishing member initialized event...");
- MemberInitializedEvent memberInitializedEvent = new MemberInitializedEvent(
- SERVICE_NAME, CLUSTER_ID, CLUSTER_INSTANCE_ID, MEMBER_ID, NETWORK_PARTITION_ID,
- PARTITION_ID
- );
- publishEvent(memberInitializedEvent);
- log.info("Member initialized event published");
- }
-
- // Send artifact updated event to activate the instance first
- if (line.contains("Artifact repository found")) {
- publishEvent(getArtifactUpdatedEventForPrivateRepo());
- log.info("Artifact updated event published");
- }
- log.info(line);
- }
- }
- sleep(1000);
- }
- }
- });
- startupTestThread.start();
-
- while (!instanceStarted || !instanceActivated) {
- // 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);
- }
- }
-
- private void assertRepoClone(ArtifactUpdatedEvent artifactUpdatedEvent) {
- File file = new File(APPLICATION_PATH + "/README.text");
- assertTrue("Git clone failed for repo [url] " + artifactUpdatedEvent.getRepoURL(),
- file.exists());
- }
-
-
- public static ArtifactUpdatedEvent getArtifactUpdatedEventForPublicRepo() {
- ArtifactUpdatedEvent publicRepoEvent = createTestArtifactUpdatedEvent();
- publicRepoEvent.setRepoURL("https://bitbucket.org/testapache2211/opentestrepo1.git");
- return publicRepoEvent;
- }
-
- public static ArtifactUpdatedEvent getArtifactUpdatedEventForPrivateRepo() {
- ArtifactUpdatedEvent privateRepoEvent = createTestArtifactUpdatedEvent();
- privateRepoEvent.setRepoURL("https://bitbucket.org/testapache2211/testrepo.git");
- privateRepoEvent.setRepoUserName("testapache2211");
- privateRepoEvent.setRepoPassword("RExPDGa4GkPJj4kJDzSROQ==");
- return privateRepoEvent;
- }
-
- private static ArtifactUpdatedEvent createTestArtifactUpdatedEvent() {
- ArtifactUpdatedEvent artifactUpdatedEvent = new ArtifactUpdatedEvent();
- artifactUpdatedEvent.setClusterId(CLUSTER_ID);
- artifactUpdatedEvent.setTenantId(TENANT_ID);
- return artifactUpdatedEvent;
- }
-
- /**
- * Create test topology
- *
- * @return
- */
- private Topology createTestTopology() {
- Topology topology = new Topology();
- Service service = new Service(SERVICE_NAME, ServiceType.SingleTenant);
- topology.addService(service);
-
- Cluster cluster = new Cluster(service.getServiceName(), CLUSTER_ID, DEPLOYMENT_POLICY_NAME,
- AUTOSCALING_POLICY_NAME, APP_ID);
- service.addCluster(cluster);
-
- Member member = new Member(service.getServiceName(), cluster.getClusterId(), MEMBER_ID,
- CLUSTER_INSTANCE_ID, NETWORK_PARTITION_ID, PARTITION_ID, LoadBalancingIPType.Private,
- System.currentTimeMillis());
-
- member.setDefaultPrivateIP("10.0.0.1");
- member.setDefaultPublicIP("20.0.0.1");
- Properties properties = new Properties();
- properties.setProperty("prop1", "value1");
- member.setProperties(properties);
- member.setStatus(MemberStatus.Created);
- cluster.addMember(member);
-
- return topology;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/stratos/blob/42c388bc/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/AgentStartupTest.java
----------------------------------------------------------------------
diff --git a/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/AgentStartupTest.java b/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/AgentStartupTest.java
deleted file mode 100755
index c08ab5c..0000000
--- a/products/python-cartridge-agent/modules/integration/src/test/java/org/apache/stratos/python.cartridge.agent/test/AgentStartupTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.apache.stratos.python.cartridge.agent.test;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.common.domain.LoadBalancingIPType;
-import org.apache.stratos.messaging.domain.topology.*;
-import org.apache.stratos.messaging.event.topology.CompleteTopologyEvent;
-import org.apache.stratos.messaging.event.topology.MemberInitializedEvent;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-public class AgentStartupTest extends PythonAgentTestManager {
- private static final Log log = LogFactory.getLog(AgentStartupTest.class);
- 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";
- private static final String AUTOSCALING_POLICY_NAME = "autoscaling-policy-1";
- private static final String APP_ID = "application-1";
- private static final String MEMBER_ID = "php.member-1";
- private static final String CLUSTER_INSTANCE_ID = "cluster-1-instance-1";
- private static final String NETWORK_PARTITION_ID = "network-partition-1";
- 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() {
- // Set jndi.properties.dir system property for initializing event publishers and receivers
- System.setProperty("jndi.properties.dir", getResourcesPath(RESOURCES_PATH));
-
- // start Python agent with configurations provided in resource path
- setup(RESOURCES_PATH);
-
- // Simulate server socket
- startServerSocket(8080);
- }
-
-
- /**
- * TearDown method for test method testPythonCartridgeAgent
- */
- @AfterSuite
- public void tearDownAgentStartupTest() {
- tearDown();
- }
-
- @Test(timeOut = STARTUP_TIMEOUT)
- public void testPythonCartridgeAgent() {
- startCommunicatorThread();
- Thread startupTestThread = new Thread(new Runnable() {
- @Override
- public void run() {
- while (!eventReceiverInitiated) {
- sleep(2000);
- }
- List<String> outputLines = new ArrayList<String>();
- while (!outputStream.isClosed()) {
- List<String> newLines = getNewLines(outputLines, outputStream.toString());
- if (newLines.size() > 0) {
- for (String line : newLines) {
- if (line.contains("Subscribed to 'topology/#'")) {
- sleep(2000);
- // Send complete topology event
- log.info("Publishing complete topology event...");
- Topology topology = createTestTopology();
- CompleteTopologyEvent completeTopologyEvent = new CompleteTopologyEvent(topology);
- publishEvent(completeTopologyEvent);
- log.info("Complete topology event published");
-
- // Publish member initialized event
- log.info("Publishing member initialized event...");
- MemberInitializedEvent memberInitializedEvent = new MemberInitializedEvent(
- SERVICE_NAME, CLUSTER_ID, CLUSTER_INSTANCE_ID, MEMBER_ID, NETWORK_PARTITION_ID,
- PARTITION_ID
- );
- 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);
- }
- }
- });
-
- startupTestThread.start();
-
- 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);
- }
- }
-
-
- /**
- * Create test topology
- *
- * @return
- */
- private Topology createTestTopology() {
- Topology topology = new Topology();
- Service service = new Service(SERVICE_NAME, ServiceType.SingleTenant);
- topology.addService(service);
-
- Cluster cluster = new Cluster(service.getServiceName(), CLUSTER_ID, DEPLOYMENT_POLICY_NAME,
- AUTOSCALING_POLICY_NAME, APP_ID);
- service.addCluster(cluster);
-
- Member member = new Member(service.getServiceName(), cluster.getClusterId(), MEMBER_ID,
- CLUSTER_INSTANCE_ID, NETWORK_PARTITION_ID, PARTITION_ID, LoadBalancingIPType.Private,
- System.currentTimeMillis());
-
- member.setDefaultPrivateIP("10.0.0.1");
- member.setDefaultPublicIP("20.0.0.1");
- Properties properties = new Properties();
- properties.setProperty("prop1", "value1");
- member.setProperties(properties);
- member.setStatus(MemberStatus.Created);
- cluster.addMember(member);
-
- return topology;
- }
-}
\ No newline at end of file