From cd02d1f9b64957a63ad4b16bac639116975edb22 Mon Sep 17 00:00:00 2001 From: Lianhao Lu Date: Mon, 26 Mar 2018 13:35:22 +0800 Subject: Added file digest computation Support to compute file digest and save it to manifest file. Also extend the manifest file module to be able to write content into temporary file. Change-Id: If1f3f42799eb527bdeac418d1a40aa203641f628 Issue-ID: VNFSDK-174 Signed-off-by: Lianhao Lu --- tests/packager/test_csar.py | 99 ++++++++++++++++++++++++++++++++++++++ tests/packager/test_package.py | 78 ------------------------------ tests/resources/csar/test_entry.mf | 4 +- 3 files changed, 101 insertions(+), 80 deletions(-) create mode 100644 tests/packager/test_csar.py delete mode 100644 tests/packager/test_package.py (limited to 'tests') diff --git a/tests/packager/test_csar.py b/tests/packager/test_csar.py new file mode 100644 index 0000000..fcf034e --- /dev/null +++ b/tests/packager/test_csar.py @@ -0,0 +1,99 @@ +# +# Copyright (c) 2017 GigaSpaces Technologies Ltd. All rights reserved. +# +# Licensed 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 collections +import filecmp +import logging +import os +import tempfile +import shutil + +from vnfsdk_pkgtools.packager import csar + +CSAR_RESOURCE_DIR = 'tests/resources/csar' +CSAR_ENTRY_FILE = 'test_entry.yaml' +CSAR_OUTPUT_FILE = 'output.csar' + +Args = collections.namedtuple('Args', + ['source', 'entry', 'manifest', 'history', 'tests', 'licenses', 'digest']) + +ARGS_MANIFEST = { + 'source': CSAR_RESOURCE_DIR, + 'entry': CSAR_ENTRY_FILE, + 'manifest': 'test_entry.mf', + 'history': 'ChangeLog.txt', + 'tests': 'Tests', + 'licenses': 'Licenses', + 'digest': None + } + +ARGS_MANIFEST_DIGEST = { + 'source': CSAR_RESOURCE_DIR, + 'entry': CSAR_ENTRY_FILE, + 'manifest': 'test_entry.mf', + 'history': 'ChangeLog.txt', + 'tests': 'Tests', + 'licenses': 'Licenses', + 'digest': 'sha256' + } + + +ARGS_NO_MANIFEST = { + 'source': CSAR_RESOURCE_DIR, + 'entry': CSAR_ENTRY_FILE, + 'manifest': None, + 'history': None, + 'tests': None, + 'licenses': None, + 'digest': None, + } + + +def csar_write_test(args): + csar_target_dir = tempfile.mkdtemp() + csar_extract_dir = tempfile.mkdtemp() + try: + csar.write(args.source, args.entry, csar_target_dir + '/' + CSAR_OUTPUT_FILE, logging, args) + csar.read(csar_target_dir + '/' + CSAR_OUTPUT_FILE, csar_extract_dir, logging) + assert filecmp.cmp(args.source + '/' + args.entry, csar_extract_dir + '/' + args.entry) + if(args.manifest and not args.digest): + assert filecmp.cmp(args.source + '/' + args.manifest, + csar_extract_dir + '/' + args.manifest) + if(args.history): + assert filecmp.cmp(args.source + '/' + args.history, + csar_extract_dir + '/' + args.history) + finally: + shutil.rmtree(csar_target_dir, ignore_errors=True) + shutil.rmtree(csar_extract_dir, ignore_errors=True) + + +def test_CSARWrite(): + csar_write_test(Args(**ARGS_NO_MANIFEST)) + + +def test_CSARWrite_manifest(): + # Because git can not store emptry directory, we need to create manually here + license_path = ARGS_MANIFEST['source'] + '/' + ARGS_MANIFEST['licenses'] + if not os.path.exists(license_path): + os.makedirs(license_path) + csar_write_test(Args(**ARGS_MANIFEST)) + + +def test_CSARWrite_manifest_digest(): + # Because git can not store emptry directory, we need to create manually here + license_path = ARGS_MANIFEST['source'] + '/' + ARGS_MANIFEST['licenses'] + if not os.path.exists(license_path): + os.makedirs(license_path) + csar_write_test(Args(**ARGS_MANIFEST_DIGEST)) diff --git a/tests/packager/test_package.py b/tests/packager/test_package.py deleted file mode 100644 index 662d004..0000000 --- a/tests/packager/test_package.py +++ /dev/null @@ -1,78 +0,0 @@ -# -# Copyright (c) 2017 GigaSpaces Technologies Ltd. All rights reserved. -# -# Licensed 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 collections -import filecmp -import logging -import os -import tempfile -import shutil - -from vnfsdk_pkgtools.packager import csar - -CSAR_RESOURCE_DIR = 'tests/resources/csar' -CSAR_ENTRY_FILE = 'test_entry.yaml' -CSAR_OUTPUT_FILE = 'output.csar' - -Args = collections.namedtuple('Args', - ['source', 'entry', 'manifest', 'history', 'tests', 'licenses']) - -ARGS_MANIFEST = { - 'source': CSAR_RESOURCE_DIR, - 'entry': CSAR_ENTRY_FILE, - 'manifest': 'test_entry.mf', - 'history': 'ChangeLog.txt', - 'tests': 'Tests', - 'licenses': 'Licenses', - } - -ARGS_NO_MANIFEST = { - 'source': CSAR_RESOURCE_DIR, - 'entry': CSAR_ENTRY_FILE, - 'manifest': None, - 'history': None, - 'tests': None, - 'licenses': None, - } - - -def csar_write_test(args): - csar_target_dir = tempfile.mkdtemp() - csar_extract_dir = tempfile.mkdtemp() - try: - csar.write(args.source, args.entry, csar_target_dir + '/' + CSAR_OUTPUT_FILE, logging, args) - csar.read(csar_target_dir + '/' + CSAR_OUTPUT_FILE, csar_extract_dir, logging) - assert filecmp.cmp(args.source + '/' + args.entry, csar_extract_dir + '/' + args.entry) - if(args.manifest): - assert filecmp.cmp(args.source + '/' + args.manifest, - csar_extract_dir + '/' + args.manifest) - if(args.history): - assert filecmp.cmp(args.source + '/' + args.history, - csar_extract_dir + '/' + args.history) - finally: - shutil.rmtree(csar_target_dir, ignore_errors=True) - shutil.rmtree(csar_extract_dir, ignore_errors=True) - - -def test_CSARWrite(): - csar_write_test(Args(**ARGS_NO_MANIFEST)) - - -def test_CSARWrite_manifest(): - # Because git can not store emptry directory, we need to create manually here - license_path = ARGS_MANIFEST['source'] + '/' + ARGS_MANIFEST['licenses'] - if not os.path.exists(license_path): - os.makedirs(license_path) - csar_write_test(Args(**ARGS_MANIFEST)) diff --git a/tests/resources/csar/test_entry.mf b/tests/resources/csar/test_entry.mf index 710d1a2..4441457 100644 --- a/tests/resources/csar/test_entry.mf +++ b/tests/resources/csar/test_entry.mf @@ -1,5 +1,5 @@ metadata: vnf_product_name: test vnf_provider_id: test -vnf_pacakage_version: 1.0 -vnf_release_date_time: 2017.09.15T15:00+8:00 +vnf_package_version: 1.0 +vnf_release_data_time: 2017-09-15T15:00:03+08:00 -- cgit 1.2.3-korg