From e1915df5d0a647a03b36aa607420a41b6457cd74 Mon Sep 17 00:00:00 2001 From: Cédric Ollivier Date: Sat, 9 Nov 2019 17:34:24 +0100 Subject: Improve file scanning when publishing artifacts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Else it copies files from other testcases if the full suite is executed sequentially. Change-Id: Ic61472e47b655c34823a6fcb3ed3615e8f84a4c1 Signed-off-by: Cédric Ollivier (cherry picked from commit a48c62165923be6a37aaff5d54918dbe9cb6ff58) --- xtesting/core/testcase.py | 15 +++++++++++++-- xtesting/tests/unit/core/test_testcase.py | 15 ++++++++++++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/xtesting/core/testcase.py b/xtesting/core/testcase.py index fcab1ac3..8341f34d 100644 --- a/xtesting/core/testcase.py +++ b/xtesting/core/testcase.py @@ -67,6 +67,8 @@ class TestCase(object): self.start_time = 0 self.stop_time = 0 self.is_skipped = False + self.output_log_name = 'xtesting.log' + self.output_debug_log_name = 'xtesting.debug.log' self.res_dir = "{}/{}".format(self.dir_results, self.case_name) def __str__(self): @@ -294,9 +296,19 @@ class TestCase(object): typ, value, traceback = sys.exc_info() six.reraise(typ, value, traceback) path = urllib.parse.urlparse(dst_s3_url).path.strip("/") + dst_http_url = os.environ["HTTP_DST_URL"] output_str = "\n" self.details["links"] = [] - for root, _, files in os.walk(self.dir_results): + for log_file in [self.output_log_name, self.output_debug_log_name]: + if os.path.exists(os.path.join(self.dir_results, log_file)): + # pylint: disable=no-member + b3resource.Bucket(bucket_name).upload_file( + os.path.join(self.dir_results, log_file), + os.path.join(path, log_file)) + link = os.path.join(dst_http_url, log_file) + output_str += "\n{}".format(link) + self.details["links"].append(link) + for root, _, files in os.walk(self.res_dir): for pub_file in files: # pylint: disable=no-member b3resource.Bucket(bucket_name).upload_file( @@ -304,7 +316,6 @@ class TestCase(object): os.path.join(path, os.path.relpath( os.path.join(root, pub_file), start=self.dir_results))) - dst_http_url = os.environ["HTTP_DST_URL"] link = os.path.join(dst_http_url, os.path.relpath( os.path.join(root, pub_file), start=self.dir_results)) diff --git a/xtesting/tests/unit/core/test_testcase.py b/xtesting/tests/unit/core/test_testcase.py index 73062149..6d18a968 100644 --- a/xtesting/tests/unit/core/test_testcase.py +++ b/xtesting/tests/unit/core/test_testcase.py @@ -364,7 +364,7 @@ class TestCaseTesting(unittest.TestCase): def test_publish_artifacts1(self, *args): self.assertEqual(self.test.publish_artifacts(), testcase.TestCase.EX_OK) - args[0].assert_called_once_with(self.test.dir_results) + args[0].assert_called_once_with(self.test.res_dir) args[1].assert_called_once_with( 's3', endpoint_url=os.environ['S3_ENDPOINT_URL']) @@ -377,10 +377,11 @@ class TestCaseTesting(unittest.TestCase): error_response, 'NoSuchBucket') self.assertEqual(self.test.publish_artifacts(), testcase.TestCase.EX_OK) - args[0].assert_called_once_with(self.test.dir_results) + args[0].assert_called_once_with(self.test.res_dir) args[1].assert_called_once_with( 's3', endpoint_url=os.environ['S3_ENDPOINT_URL']) + @mock.patch('os.path.exists', return_value=True) @mock.patch('boto3.resource') @mock.patch('os.walk', return_value=[ @@ -388,11 +389,19 @@ class TestCaseTesting(unittest.TestCase): def test_publish_artifacts3(self, *args): self.assertEqual(self.test.publish_artifacts(), testcase.TestCase.EX_OK) - args[0].assert_called_once_with(self.test.dir_results) + args[0].assert_called_once_with(self.test.res_dir) expected = [ mock.call('s3', endpoint_url=os.environ['S3_ENDPOINT_URL']), mock.call().meta.client.head_bucket(Bucket='xtesting'), mock.call().Bucket('xtesting'), + mock.call().Bucket().upload_file( + '/var/lib/xtesting/results/xtesting.log', + 'prefix/xtesting.log'), + mock.call().Bucket('xtesting'), + mock.call().Bucket().upload_file( + '/var/lib/xtesting/results/xtesting.debug.log', + 'prefix/xtesting.debug.log'), + mock.call().Bucket('xtesting'), mock.call().Bucket().upload_file( '/var/lib/xtesting/results/bar', 'prefix/bar')] self.assertEqual(args[1].mock_calls, expected) -- cgit 1.2.3-korg