#!/usr/bin/env python import os import subprocess from vpp_papi_provider import VppPapiProvider from threading import Timer from framework import VppTestCase # Api files path API_FILES_PATH = "vpp/vpp-api/java" # Registry jar file name prefix REGISTRY_JAR_PREFIX = "jvpp-registry" class TestJVppConnection(VppTestCase): def full_jar_name(self, install_dir, jar_name, version): return os.path.join(install_dir, API_FILES_PATH, "{0}-{1}.jar".format(jar_name, version)) def jvpp_connection_test(self, api_jar_name, test_class_name, timeout): install_dir = os.getenv('VPP_TEST_BUILD_DIR') print("Install directory : {0}".format(install_dir)) version_reply = self.vapi.show_version() version = version_reply.version.split("-")[0] registry_jar_path = self.full_jar_name(install_dir, REGISTRY_JAR_PREFIX, version) print("JVpp Registry jar path : {0}".format(registry_jar_path)) api_jar_path = self.full_jar_name(install_dir, api_jar_name, version) print("Api jar path : {0}".format(api_jar_path)) # passes shm prefix as parameter to create connection with same value command = ["java", "-cp", "{0}:{1}".format(registry_jar_path, api_jar_path), test_class_name, "/{0}-vpe-api".format(self.shm_prefix)] print("Test Command : {0}, Timeout : {1}".format(command, timeout)) self.process = subprocess.Popen(command, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE, bufsize=1, universal_newlines=True) out, err = self.process.communicate() print("Process output : {0}{1}".format(os.linesep, out)) print("Process error output : {0}{1}".format(os.linesep, err)) self.assert_equal(self.process.returncode, 0, "process return code") def tearDown(self): print("Tearing down jvpp test") if self.process.poll() is None: self.process.kill()