X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=test%2Ftest_jvpp.py;h=36dbdb2b39195fd07e060965c22cee889b810f2c;hb=13a08cc;hp=664ed2f97cea24f7d2f861fa1eb41c5ea8c6c629;hpb=d135c19a1fde609b82be5a30413d6b9ab43811e3;p=vpp.git diff --git a/test/test_jvpp.py b/test/test_jvpp.py index 664ed2f97ce..36dbdb2b391 100644 --- a/test/test_jvpp.py +++ b/test/test_jvpp.py @@ -1,7 +1,20 @@ -from jvpp_connection import TestJVppConnection +#!/usr/bin/env python +import os +import subprocess +import unittest -class TestJVpp(TestJVppConnection): +from framework import VppTestCase, running_extended_tests + +# Api files path +API_FILES_PATH = "japi/java" + +# Registry jar file name prefix +REGISTRY_JAR_PREFIX = "jvpp-registry" + + +@unittest.skipUnless(running_extended_tests(), "part of extended tests") +class TestJVpp(VppTestCase): """ JVPP Core Test Case """ def invoke_for_jvpp_core(self, api_jar_name, test_class_name): @@ -80,3 +93,55 @@ class TestJVpp(TestJVppConnection): self.invoke_for_jvpp_core(api_jar_name="jvpp-nat", test_class_name="io.fd.vpp.jvpp.nat.test." "FutureApiTest") + + 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') + self.logger.info("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) + self.logger.info("JVpp Registry jar path : {0}" + .format(registry_jar_path)) + if (not os.path.isfile(registry_jar_path)): + raise Exception( + "JVpp Registry jar has not been found: {0}" + .format(registry_jar_path)) + + api_jar_path = self.full_jar_name(install_dir, api_jar_name, version) + self.logger.info("Api jar path : {0}".format(api_jar_path)) + if (not os.path.isfile(api_jar_path)): + raise Exception( + "Api jar has not been found: {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)] + self.logger.info("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() + self.logger.info("Process output : {0}{1}".format(os.linesep, out)) + + if self.process.returncode != 0: + raise Exception( + "Command {0} failed with return code: {1}.{2}" + "Process error output: {2}{3}" + .format(command, self.process.returncode, os.linesep, err)) + + def tearDown(self): + self.logger.info("Tearing down jvpp test") + super(TestJVpp, self).tearDown() + if hasattr(self, 'process') and self.process.poll() is None: + self.process.kill()