diff --git a/.pylintrc b/.pylintrc index e88a201c..399e935d 100644 --- a/.pylintrc +++ b/.pylintrc @@ -44,7 +44,7 @@ symbols=no # --enable=similarities". If you want to run only the classes checker, but have # no Warning level messages displayed, use"--disable=all --enable=classes # --disable=W" -disable=W,C,R +disable=W,C,R,E1002 [REPORTS] diff --git a/freezer/tests/freezer_tempest_plugin/tests/api/base.py b/freezer/tests/freezer_tempest_plugin/tests/api/base.py index 53a18014..c6848b83 100644 --- a/freezer/tests/freezer_tempest_plugin/tests/api/base.py +++ b/freezer/tests/freezer_tempest_plugin/tests/api/base.py @@ -11,8 +11,43 @@ # 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 os import tempest.test class BaseFreezerTest(tempest.test.BaseTestCase): - pass \ No newline at end of file + + def __init__(self, *args, **kwargs): + + super(BaseFreezerTest, self).__init__(*args, **kwargs) + + def setUp(self): + + super(BaseFreezerTest, self).setUp() + + def tearDown(self): + + super(BaseFreezerTest, self).tearDown() + + def get_environ(self): + + os.environ['OS_REGION_NAME'] = 'RegionOne' + os.environ['OS_PASSWORD'] = 'secretadmin' + os.environ['OS_IDENTITY_API_VERSION'] = '2.0' + os.environ['OS_NO_CACHE'] = '1' + os.environ['OS_USERNAME'] = 'demo' + os.environ['OS_VOLUME_API_VERSION'] = '2' + os.environ['OS_PROJECT_NAME'] = 'demo' + os.environ['PYTHONUNBUFFERED'] = '1' + os.environ['OS_TENANT_NAME'] = 'demo' + os.environ['OS_TENANT_ID'] = '' + + # Allow developers to set OS_AUTH_URL when developing so that + # Keystone may be on a host other than localhost. + if not 'OS_AUTH_URL' in os.environ: + os.environ['OS_AUTH_URL'] = 'http://localhost:5000/v2.0' + + # Mac OS X uses gtar located in /usr/local/bin + os.environ['PATH'] = '/usr/local/bin:' + os.environ['PATH'] + + return os.environ \ No newline at end of file diff --git a/freezer/tests/freezer_tempest_plugin/tests/api/test_fs_backup.py b/freezer/tests/freezer_tempest_plugin/tests/api/test_fs_backup.py new file mode 100644 index 00000000..7c92b1fb --- /dev/null +++ b/freezer/tests/freezer_tempest_plugin/tests/api/test_fs_backup.py @@ -0,0 +1,122 @@ +# (C) Copyright 2016 Hewlett Packard Enterprise Development Company LP +# +# 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 os +import shutil + +import datetime +import subprocess + +from freezer.tests.freezer_tempest_plugin.tests.api import base +from tempest import test + + +class TestFreezerFSBackup(base.BaseFreezerTest): + + def __init__(self, *args, **kwargs): + + super(TestFreezerFSBackup, self).__init__(*args, **kwargs) + + def setUp(self): + + super(TestFreezerFSBackup, self).setUp() + + now_in_secs = datetime.datetime.now().strftime("%s") + + self.backup_source_dir = ("/tmp/freezer-test-backup-source/" + + now_in_secs) + + self.backup_source_sub_dir = self.backup_source_dir + "/subdir" + + self.restore_target_dir = ( + "/tmp/freezer-test-backup-restore/" + + now_in_secs) + + self.backup_local_storage_dir = ( + "/tmp/freezer-test-backup-local-storage/" + + now_in_secs) + + self.freezer_backup_name = 'freezer-test-backup-fs-0' + + shutil.rmtree(self.backup_source_dir, True) + os.makedirs(self.backup_source_dir) + open(self.backup_source_dir + "/a", 'w').close() + open(self.backup_source_dir + "/b", 'w').close() + open(self.backup_source_dir + "/c", 'w').close() + + os.makedirs(self.backup_source_sub_dir) + open(self.backup_source_sub_dir + "/x", 'w').close() + open(self.backup_source_sub_dir + "/y", 'w').close() + open(self.backup_source_sub_dir + "/z", 'w').close() + + shutil.rmtree(self.restore_target_dir, True) + os.makedirs(self.restore_target_dir) + + shutil.rmtree(self.backup_local_storage_dir, True) + os.makedirs(self.backup_local_storage_dir) + + self.environ = super(TestFreezerFSBackup, self).get_environ() + + def tearDown(self): + + super(TestFreezerFSBackup, self).tearDown() + + shutil.rmtree(self.backup_source_dir, True) + shutil.rmtree(self.restore_target_dir, True) + shutil.rmtree(self.backup_local_storage_dir) + + + @test.attr(type="gate") + def test_freezer_fs_backup(self): + + backup_args = ['freezer-agent', + '--path-to-backup', + self.backup_source_dir, + '--container', + self.backup_local_storage_dir, + '--backup-name', + self.freezer_backup_name, + '--storage', + 'local'] + + output = subprocess.check_output(backup_args, + stderr=subprocess.STDOUT, + env=self.environ, shell=False) + + restore_args = ['freezer-agent', + '--action', + 'restore', + '--restore-abs-path', + self.restore_target_dir, + '--container', + self.backup_local_storage_dir, + '--backup-name', + self.freezer_backup_name, + '--storage', + 'local'] + + output = subprocess.check_output(restore_args, + stderr=subprocess.STDOUT, + env=self.environ, shell=False) + + diff_args = ['diff', + '-r', + '-q', + self.backup_source_dir, + self.restore_target_dir] + + diff_rc = subprocess.call(diff_args, + shell=False) + + self.assertEqual(0, diff_rc, "Test backup to local storage and " + "restore") \ No newline at end of file diff --git a/freezer/tests/freezer_tempest_plugin/tests/api/test_swift_backup.py b/freezer/tests/freezer_tempest_plugin/tests/api/test_swift_backup.py index 4bf8e3ea..93f96040 100644 --- a/freezer/tests/freezer_tempest_plugin/tests/api/test_swift_backup.py +++ b/freezer/tests/freezer_tempest_plugin/tests/api/test_swift_backup.py @@ -23,88 +23,89 @@ from tempest import test class TestFreezerSwiftBackup(base.BaseFreezerTest): - @test.attr(type="gate") - def test_freezer_swift_backup(self): + def __init__(self, *args, **kwargs): + + super(TestFreezerSwiftBackup, self).__init__(*args, **kwargs) + + def setUp(self): + + super(TestFreezerSwiftBackup, self).setUp() now_in_secs = datetime.datetime.now().strftime("%s") - backup_source_dir = ("/tmp/freezer-test-backup-source/" + self.backup_source_dir = ("/tmp/freezer-test-backup-source/" + now_in_secs) - backup_source_sub_dir = backup_source_dir + "/subdir" + self.backup_source_sub_dir = self.backup_source_dir + "/subdir" - restore_target_dir = ( + self.restore_target_dir = ( "/tmp/freezer-test-backup-restore/" + now_in_secs) - freezer_container_name = 'freezer-test-container-0' - freezer_backup_name = 'freezer-test-backup-0' + self.freezer_container_name = 'freezer-test-container-0' + self.freezer_backup_name = 'freezer-test-backup-swift-0' - shutil.rmtree(backup_source_dir, True) - os.makedirs(backup_source_dir) - open(backup_source_dir + "/a", 'w').close() - open(backup_source_dir + "/b", 'w').close() - open(backup_source_dir + "/c", 'w').close() + shutil.rmtree(self.backup_source_dir, True) + os.makedirs(self.backup_source_dir) + open(self.backup_source_dir + "/a", 'w').close() + open(self.backup_source_dir + "/b", 'w').close() + open(self.backup_source_dir + "/c", 'w').close() - os.makedirs(backup_source_sub_dir) - open(backup_source_sub_dir + "/x", 'w').close() - open(backup_source_sub_dir + "/y", 'w').close() - open(backup_source_sub_dir + "/z", 'w').close() + os.makedirs(self.backup_source_sub_dir) + open(self.backup_source_sub_dir + "/x", 'w').close() + open(self.backup_source_sub_dir + "/y", 'w').close() + open(self.backup_source_sub_dir + "/z", 'w').close() - shutil.rmtree(restore_target_dir, True) - os.makedirs(restore_target_dir) + shutil.rmtree(self.restore_target_dir, True) + os.makedirs(self.restore_target_dir) - os.environ['OS_REGION_NAME'] = 'RegionOne' - os.environ['OS_PASSWORD'] = 'secretadmin' - os.environ['OS_IDENTITY_API_VERSION'] = '2.0' - os.environ['OS_NO_CACHE'] = '1' - os.environ['OS_USERNAME'] = 'demo' - os.environ['OS_VOLUME_API_VERSION'] = '2' - os.environ['OS_PROJECT_NAME'] = 'demo' - os.environ['PYTHONUNBUFFERED'] = '1' - os.environ['OS_TENANT_NAME'] = 'demo' - os.environ['OS_TENANT_ID'] = '' - os.environ['OS_AUTH_URL'] = 'http://localhost:5000/v2.0' - # Mac OS X uses gtar located in /urs/local/bin - os.environ['PATH'] = '/usr/local/bin:' + os.environ['PATH'] + self.environ = super(TestFreezerSwiftBackup, self).get_environ() + + def tearDown(self): + + super(TestFreezerSwiftBackup, self).tearDown() + + shutil.rmtree(self.backup_source_dir, True) + shutil.rmtree(self.restore_target_dir, True) + + + @test.attr(type="gate") + def test_freezer_swift_backup(self): backup_args = ['freezer-agent', '--path-to-backup', - backup_source_dir, + self.backup_source_dir, '--container', - freezer_container_name, + self.freezer_container_name, '--backup-name', - freezer_backup_name] + self.freezer_backup_name] output = subprocess.check_output(backup_args, stderr=subprocess.STDOUT, - env=os.environ, shell=False) + env=self.environ, shell=False) restore_args = ['freezer-agent', '--action', 'restore', '--restore-abs-path', - restore_target_dir, + self.restore_target_dir, '--container', - freezer_container_name, + self.freezer_container_name, '--backup-name', - freezer_backup_name, + self.freezer_backup_name, '--storage', 'swift'] output = subprocess.check_output(restore_args, stderr=subprocess.STDOUT, - env=os.environ, shell=False) + env=self.environ, shell=False) diff_args = ['diff', '-r', '-q', - backup_source_dir, - restore_target_dir] + self.backup_source_dir, + self.restore_target_dir] diff_rc = subprocess.call(diff_args, shell=False) self.assertEqual(0, diff_rc, "Test backup to swift and restore") - - shutil.rmtree(backup_source_dir, True) - shutil.rmtree(restore_target_dir, True)