From 70fe091e7a668e72caf95609b89988a0b9ad6545 Mon Sep 17 00:00:00 2001 From: Kota Tsuyuzaki Date: Tue, 7 Mar 2017 18:39:55 -0800 Subject: [PATCH] Use unique container for objects any other system containers (storlets, dependencies, etc) are still same Change-Id: I002cf5aa7fb0fcf83dee0c955c1d4d24294f2776 --- StorletSamples/java/CompressStorlet/build.xml | 1 + tests/functional/__init__.py | 45 ++++++++++++++++--- tests/functional/java/__init__.py | 3 +- tests/functional/java/test_SLO.py | 7 +-- .../functional/java/test_compress_storlet.py | 6 +-- tests/functional/java/test_csvstorlet.py | 1 - tests/functional/java/test_deploy_storlet.py | 3 +- tests/functional/java/test_execdep_storlet.py | 3 +- tests/functional/java/test_half_storlet.py | 7 ++- .../functional/java/test_identity_storlet.py | 7 ++- .../functional/java/test_metadata_storlet.py | 3 +- .../java/test_multiinput_storlet.py | 1 - .../java/test_partitions_identity_storlet.py | 1 - tests/functional/java/test_test_storlet.py | 20 +++------ .../functional/java/test_thumbnail_storlet.py | 23 +++++----- tests/functional/python/__init__.py | 3 +- tests/functional/python/test_SLO.py | 5 +-- .../functional/python/test_deploy_storlet.py | 3 +- .../functional/python/test_execdep_storlet.py | 3 +- .../python/test_execqueryheader_storlet.py | 5 +-- .../python/test_multiinput_storlet.py | 1 - .../functional/python/test_simple_storlet.py | 16 +++---- tests/functional/python/test_test_storlet.py | 20 +++------ tox.ini | 7 ++- 24 files changed, 103 insertions(+), 91 deletions(-) diff --git a/StorletSamples/java/CompressStorlet/build.xml b/StorletSamples/java/CompressStorlet/build.xml index 9b7342d0..cd4a01e4 100644 --- a/StorletSamples/java/CompressStorlet/build.xml +++ b/StorletSamples/java/CompressStorlet/build.xml @@ -24,6 +24,7 @@ classpath="../../../src/java/SCommon/bin/SCommon.jar" includeantruntime="false" /> + diff --git a/tests/functional/__init__.py b/tests/functional/__init__.py index cda17d20..53d20310 100644 --- a/tests/functional/__init__.py +++ b/tests/functional/__init__.py @@ -15,20 +15,34 @@ # limitations under the License. import unittest +import uuid + from swiftclient import client as swiftclient from storlets.tools.cluster_config_parser import ClusterConfig from storlets.tools.utils import deploy_storlet, get_admin_auth, put_local_file +import os -CONFIG_FILE = '../../cluster_config.json' -PATH_TO_STORLETS = '../../StorletSamples' +CONFIG_DIR = os.environ.get('CLUSTER_CONF_DIR', os.getcwd()) +CONFIG_FILE = os.path.join(CONFIG_DIR, 'cluster_config.json') +PATH_TO_STORLETS = os.environ.get( + 'STORLET_SAMPLE_PATH', + # assuming, current working dir is at top of storlet repo + os.path.join(os.getcwd(), 'StorletSamples')) CONSOLE_TIMEOUT = 2 class StorletBaseFunctionalTest(unittest.TestCase): def setUp(self): self.conf_file = CONFIG_FILE - self.conf = ClusterConfig(CONFIG_FILE) + try: + self.conf = ClusterConfig(CONFIG_FILE) + except IOError: + self.fail('cluster_config.json not found in %s. ' + 'Please check your testing environment.' % CONFIG_DIR) + self.url, self.token = get_admin_auth(self.conf) + # TODO(kota_): do we need to call setUp() when inheriting TestCase + # directly? AFAIK, no setUp method in the class... super(StorletBaseFunctionalTest, self).setUp() @@ -42,10 +56,26 @@ class StorletFunctionalTest(StorletBaseFunctionalTest): status = response.get('status') assert (status >= 200 or status < 300) + def cleanup_container(self, container): + # list all objects inside the container + _, objects = swiftclient.get_container( + self.url, self.token, container, full_listing=True) + + # delete all objects inside the container + # N.B. this cleanup could run in parallel but currently we have a few + # objects in the user testing container so that, currently this does + # as sequential simply + for obj_dict in objects: + swiftclient.delete_object( + self.url, self.token, container, obj_dict['name']) + swiftclient.get_container(self.url, self.token, container) + + # delete the container + swiftclient.delete_container(self.url, self.token, container) + def setUp(self, language, path_to_bundle, storlet_dir, - storlet_name, storlet_main, - container, storlet_file, + storlet_name, storlet_main, storlet_file, dep_names, headers): super(StorletFunctionalTest, self).setUp() self.storlet_dir = storlet_dir @@ -53,7 +83,7 @@ class StorletFunctionalTest(StorletBaseFunctionalTest): self.storlet_main = storlet_main self.dep_names = dep_names self.path_to_bundle = path_to_bundle - self.container = container + self.container = 'container-%s' % uuid.uuid4() self.storlet_file = storlet_file self.headers = headers or {} self.acct = self.url.split('/')[4] @@ -74,3 +104,6 @@ class StorletFunctionalTest(StorletBaseFunctionalTest): self.path_to_bundle, self.storlet_file, self.headers) + + def tearDown(self): + self.cleanup_container(self.container) diff --git a/tests/functional/java/__init__.py b/tests/functional/java/__init__.py index 16ffe51d..f2dad446 100644 --- a/tests/functional/java/__init__.py +++ b/tests/functional/java/__init__.py @@ -21,7 +21,7 @@ BIN_DIR = 'bin' class StorletJavaFunctionalTest(StorletFunctionalTest): def setUp(self, storlet_dir, storlet_name, storlet_main, - container, storlet_file, dep_names=None, headers=None): + storlet_file, dep_names=None, headers=None): storlet_dir = os.path.join('java', storlet_dir) path_to_bundle = os.path.join(PATH_TO_STORLETS, storlet_dir, BIN_DIR) @@ -30,7 +30,6 @@ class StorletJavaFunctionalTest(StorletFunctionalTest): storlet_dir, storlet_name, storlet_main, - container, storlet_file, dep_names, headers) diff --git a/tests/functional/java/test_SLO.py b/tests/functional/java/test_SLO.py index 8a61cda4..477c3e2e 100644 --- a/tests/functional/java/test_SLO.py +++ b/tests/functional/java/test_SLO.py @@ -47,7 +47,7 @@ class TestSLO(StorletJavaFunctionalTest): super(TestSLO, self).setUp('IdentityStorlet', 'identitystorlet-1.0.jar', main_class, - 'myobjects', '') + '') for cont in ('container1', 'container2', 'container3'): self.create_container(cont) @@ -57,6 +57,7 @@ class TestSLO(StorletJavaFunctionalTest): def tearDown(self): delete_local_chunks() + super(TestSLO, self).tearDown() def get_SLO(self): response = dict() @@ -97,7 +98,7 @@ class TestSLO(StorletJavaFunctionalTest): headers = response.get('headers') segment = dict() - segment['path'] = 'myobjects/%s' % oname + segment['path'] = '%s/%s' % (self.container, oname) segment['size_bytes'] = 1048576 segment['etag'] = headers['etag'] assembly.append(segment) @@ -142,7 +143,7 @@ class TestSLO(StorletJavaFunctionalTest): headers.update(self.additional_headers) response = dict() headers, body = c.get_object(self.url, self.token, - 'myobjects', 'assembly', + self.container, 'assembly', query_string=None, response_dict=response, resp_chunk_size=1048576, diff --git a/tests/functional/java/test_compress_storlet.py b/tests/functional/java/test_compress_storlet.py index 1608295e..3c47628a 100644 --- a/tests/functional/java/test_compress_storlet.py +++ b/tests/functional/java/test_compress_storlet.py @@ -27,7 +27,6 @@ class TestCompressStorlet(StorletJavaFunctionalTest): super(TestCompressStorlet, self).setUp('CompressStorlet', 'compressstorlet-1.0.jar', main_class, - 'myobjects', 'input.txt') def test_put(self): @@ -35,9 +34,8 @@ class TestCompressStorlet(StorletJavaFunctionalTest): headers.update(self.additional_headers) querystring = "action=compress" - with open('../../StorletSamples/java/CompressStorlet/bin/input.txt', - 'r') as myfile: - data = myfile.read() + # simply set 1KB string data to compress + data = 'A' * 1024 response = dict() c.put_object(self.url, self.token, self.container, self.storlet_file, diff --git a/tests/functional/java/test_csvstorlet.py b/tests/functional/java/test_csvstorlet.py index 4e974acb..238d6db1 100644 --- a/tests/functional/java/test_csvstorlet.py +++ b/tests/functional/java/test_csvstorlet.py @@ -26,7 +26,6 @@ class TestCsvStorlet(StorletJavaFunctionalTest): super(TestCsvStorlet, self).setUp('CsvStorlet', 'csvstorlet-1.0.jar', main_class, - 'myobjects', 'meter-1MB.csv') def invoke_storlet(self, start, end, diff --git a/tests/functional/java/test_deploy_storlet.py b/tests/functional/java/test_deploy_storlet.py index 32c5f495..2df6b387 100644 --- a/tests/functional/java/test_deploy_storlet.py +++ b/tests/functional/java/test_deploy_storlet.py @@ -20,12 +20,13 @@ from tests.functional import StorletBaseFunctionalTest, PATH_TO_STORLETS, \ CONSOLE_TIMEOUT from tests.functional.java import BIN_DIR import unittest +from storlets.tools import deploy_storlet class TestDeployStorlet(StorletBaseFunctionalTest): def setUp(self): super(TestDeployStorlet, self).setUp() - self.deploy_storlet_path = '../../storlets/tools/deploy_storlet.py' + self.deploy_storlet_path = os.path.abspath(deploy_storlet.__file__) self.execdep_storlet_path = os.path.join(PATH_TO_STORLETS, 'java', 'ExecDepStorlet', diff --git a/tests/functional/java/test_execdep_storlet.py b/tests/functional/java/test_execdep_storlet.py index 1cb1da56..2d598798 100644 --- a/tests/functional/java/test_execdep_storlet.py +++ b/tests/functional/java/test_execdep_storlet.py @@ -27,7 +27,6 @@ class TestExecDepStorlet(StorletJavaFunctionalTest): super(TestExecDepStorlet, self).setUp('ExecDepStorlet', 'execdepstorlet-1.0.jar', main_class, - 'myobjects', 'junk.txt', ['get42']) @@ -36,7 +35,7 @@ class TestExecDepStorlet(StorletJavaFunctionalTest): headers.update(self.additional_headers) resp = dict() resp_headers, gf = c.get_object(self.url, self.token, - 'myobjects', + self.container, self.storlet_file, response_dict=resp, headers=headers) diff --git a/tests/functional/java/test_half_storlet.py b/tests/functional/java/test_half_storlet.py index f19bbef2..1d238687 100644 --- a/tests/functional/java/test_half_storlet.py +++ b/tests/functional/java/test_half_storlet.py @@ -30,7 +30,6 @@ class TestHalfIdentityStorlet(StorletJavaFunctionalTest): super(TestHalfIdentityStorlet, self).setUp('HalfStorlet', 'halfstorlet-1.0.jar', main_class, - 'myobjects', 'source.txt', headers=headers) @@ -52,13 +51,13 @@ class TestHalfIdentityStorlet(StorletJavaFunctionalTest): if op == 'GET': # Get original object original_h, original_c = \ - c.get_object(self.url, self.token, 'myobjects', + c.get_object(self.url, self.token, self.container, self.storlet_file, response_dict=dict()) # print original_headers file_length = int(original_h['content-length']) processed_h, returned_c = \ - c.get_object(self.url, self.token, 'myobjects', + c.get_object(self.url, self.token, self.container, self.storlet_file, query_string=querystring, response_dict=dict(), headers=req_headers, resp_chunk_size=file_length) @@ -89,7 +88,7 @@ class TestHalfIdentityStorlet(StorletJavaFunctionalTest): "application/octet-stream", headers, None, None, querystring, response) resp_headers, saved_content = c.get_object(self.url, self.token, - 'myobjects', + self.container, 'half_random_source', response_dict=dict()) diff --git a/tests/functional/java/test_identity_storlet.py b/tests/functional/java/test_identity_storlet.py index 63c54a6d..06a6ebbe 100644 --- a/tests/functional/java/test_identity_storlet.py +++ b/tests/functional/java/test_identity_storlet.py @@ -33,7 +33,6 @@ class TestIdentityStorlet(StorletJavaFunctionalTest): super(TestIdentityStorlet, self).setUp('IdentityStorlet', 'identitystorlet-1.0.jar', main_class, - 'myobjects', 'source.txt', ['get42'], headers) @@ -59,7 +58,7 @@ class TestIdentityStorlet(StorletJavaFunctionalTest): if op == 'GET': # Get original object original_h, original_c = c.get_object(self.url, self.token, - 'myobjects', + self.container, self.storlet_file, response_dict=dict()) # print original_headers @@ -100,7 +99,7 @@ class TestIdentityStorlet(StorletJavaFunctionalTest): "application/octet-stream", headers, None, None, querystring, response) resp_headers, saved_c = c.get_object(self.url, self.token, - 'myobjects', + self.container, 'identity_random_source', response_dict=dict()) @@ -178,7 +177,7 @@ class TestIdentityStorlet(StorletJavaFunctionalTest): headers = {'X-Run-Storlet': self.storlet_name, 'X-Storlet-Range': srange} junk, content = c.get_object(self.url, self.token, - 'myobjects', + self.container, 'small', headers=headers, response_dict=dict()) diff --git a/tests/functional/java/test_metadata_storlet.py b/tests/functional/java/test_metadata_storlet.py index 71a4df9b..6db37498 100644 --- a/tests/functional/java/test_metadata_storlet.py +++ b/tests/functional/java/test_metadata_storlet.py @@ -38,7 +38,6 @@ class TestMetadataStorlet(StorletJavaFunctionalTest): super(TestMetadataStorlet, self).setUp('TestMetadataStorlet', 'testmetadatastorlet-1.0.jar', main_class, - 'myobjects', 'source.txt', headers=headers) @@ -55,7 +54,7 @@ class TestMetadataStorlet(StorletJavaFunctionalTest): headers.update(self.additional_headers) original_headers, original_content = \ c.get_object(self.url, self.token, - 'myobjects', self.storlet_file, + self.container, self.storlet_file, response_dict=dict(), headers=headers) self.assertEqual(original_headers['X-Object-Meta-key1'.lower()], '1') self.assertEqual(original_headers['X-Object-Meta-key2'.lower()], '2') diff --git a/tests/functional/java/test_multiinput_storlet.py b/tests/functional/java/test_multiinput_storlet.py index e3cda225..b1d7175e 100644 --- a/tests/functional/java/test_multiinput_storlet.py +++ b/tests/functional/java/test_multiinput_storlet.py @@ -26,7 +26,6 @@ class TestMultiInputStorlet(StorletJavaFunctionalTest): storlet_dir='MultiInputStorlet', storlet_name='multiinputstorlet-1.0.jar', storlet_main='org.openstack.storlet.multiinput.MultiInputStorlet', - container='myobjects', storlet_file=None, headers={}) diff --git a/tests/functional/java/test_partitions_identity_storlet.py b/tests/functional/java/test_partitions_identity_storlet.py index 42081c2a..b47e6430 100644 --- a/tests/functional/java/test_partitions_identity_storlet.py +++ b/tests/functional/java/test_partitions_identity_storlet.py @@ -61,7 +61,6 @@ class TestPartitionsIdentityStorlet(StorletJavaFunctionalTest): 'PartitionsIdentityStorlet', 'partitionsidentitystorlet-1.0.jar', main_class, - 'myobjects', 'records.txt') def invoke_storlet(self, start, end, first_partition, max_record_line): diff --git a/tests/functional/java/test_test_storlet.py b/tests/functional/java/test_test_storlet.py index 7acf9fee..8632df9d 100644 --- a/tests/functional/java/test_test_storlet.py +++ b/tests/functional/java/test_test_storlet.py @@ -42,7 +42,6 @@ class TestTestStorlet(StorletJavaFunctionalTest): super(TestTestStorlet, self).setUp('TestStorlet', 'test-10.jar', main_class, - 'myobjects', '') self.member_url, self.member_token = get_member_auth(self.conf) @@ -53,13 +52,6 @@ class TestTestStorlet(StorletJavaFunctionalTest): 'test_object', 'some content') - def tearDown(self): - headers = {'X-Container-Read': ''} - swift_client.post_container(self.url, - self.token, - 'myobjects', - headers) - def invokeTestStorlet(self, op, withlog=False): headers = {'X-Run-Storlet': self.storlet_name} headers.update(self.additional_headers) @@ -70,7 +62,7 @@ class TestTestStorlet(StorletJavaFunctionalTest): resp_dict = dict() try: resp_headers, gf = swift_client.get_object(self.url, self.token, - 'myobjects', + self.container, 'test_object', None, None, params, resp_dict, headers) @@ -135,7 +127,7 @@ class TestTestStorlet(StorletJavaFunctionalTest): exc_pattern = '^.*403 Forbidden.*$' with self.assertRaisesRegexp(ClientException, exc_pattern): swift_client.get_object(self.member_url, self.member_token, - 'myobjects', 'test_object', + self.container, 'test_object', headers=headers) def test_storlet_acl_get_success(self): @@ -144,24 +136,24 @@ class TestTestStorlet(StorletJavaFunctionalTest): exc_pattern = '^.*403 Forbidden.*$' with self.assertRaisesRegexp(ClientException, exc_pattern): swift_client.get_object(self.member_url, self.member_token, - 'myobjects', 'test_object', + self.container, 'test_object', headers=headers) headers = {'X-Storlet-Container-Read': self.conf.member_user, 'X-Storlet-Name': self.storlet_name} swift_client.post_container(self.url, self.token, - 'myobjects', + self.container, headers) swift_client.head_container(self.url, self.token, - 'myobjects') + self.container) headers = {'X-Run-Storlet': self.storlet_name} headers.update(self.additional_headers) resp_dict = dict() swift_client.get_object(self.member_url, self.member_token, - 'myobjects', 'test_object', + self.container, 'test_object', response_dict=resp_dict, headers=headers) self.assertEqual(resp_dict['status'], 200) diff --git a/tests/functional/java/test_thumbnail_storlet.py b/tests/functional/java/test_thumbnail_storlet.py index b93c466c..0f5b7e5b 100644 --- a/tests/functional/java/test_thumbnail_storlet.py +++ b/tests/functional/java/test_thumbnail_storlet.py @@ -28,7 +28,6 @@ class TestThumbnailStorlet(StorletJavaFunctionalTest): super(TestThumbnailStorlet, self).setUp('ThumbnailStorlet', 'thumbnail-1.0.jar', main_class, - 'myobjects', 'sample.jpg') def invoke_storlet_on_get(self): @@ -36,7 +35,7 @@ class TestThumbnailStorlet(StorletJavaFunctionalTest): headers.update(self.additional_headers) resp = dict() resp_headers, gf = c.get_object(self.url, self.token, - 'myobjects', + self.container, self.storlet_file, response_dict=resp, headers=headers) @@ -52,7 +51,7 @@ class TestThumbnailStorlet(StorletJavaFunctionalTest): source_file = '%s/%s' % (self.path_to_bundle, self.storlet_file) with open(source_file, 'r') as f: c.put_object(self.url, self.token, - 'myobjects', 'gen_thumb_on_put.jpg', f, + self.container, 'gen_thumb_on_put.jpg', f, headers=headers, response_dict=resp) @@ -60,16 +59,17 @@ class TestThumbnailStorlet(StorletJavaFunctionalTest): self.assertIn(status, [201, 202]) headers = c.head_object(self.url, self.token, - 'myobjects', 'gen_thumb_on_put.jpg') + self.container, 'gen_thumb_on_put.jpg') self.assertEqual(headers['content-length'], '49032') def invoke_storlet_on_copy_from(self): headers = {'X-Run-Storlet': self.storlet_name, - 'X-Copy-From': 'myobjects/%s' % self.storlet_file} + 'X-Copy-From': '%s/%s' % + (self.container, self.storlet_file)} headers.update(self.additional_headers) resp = dict() c.put_object(self.url, self.token, - 'myobjects', 'gen_thumb_on_copy.jpg', '', + self.container, 'gen_thumb_on_copy.jpg', '', headers=headers, response_dict=resp) @@ -77,21 +77,22 @@ class TestThumbnailStorlet(StorletJavaFunctionalTest): self.assertIn(status, [201, 202]) rh = resp['headers'] self.assertEqual(rh['x-storlet-generated-from'], - 'myobjects/%s' % self.storlet_file) + '%s/%s' % + (self.container, self.storlet_file)) self.assertEqual(rh['x-storlet-generated-from-account'], self.acct) self.assertIn('x-storlet-generated-from-last-modified', rh) headers = c.head_object(self.url, self.token, - 'myobjects', 'gen_thumb_on_copy.jpg') + self.container, 'gen_thumb_on_copy.jpg') self.assertEqual(headers['content-length'], '49032') def invoke_storlet_on_copy_dest(self): # No COPY in swiftclient. Using urllib instead... - url = '%s/%s/%s' % (self.url, 'myobjects', self.storlet_file) + url = '%s/%s/%s' % (self.url, self.container, self.storlet_file) headers = {'X-Auth-Token': self.token, 'X-Run-Storlet': self.storlet_name, - 'Destination': 'myobjects/gen_thumb_on_copy_.jpg'} + 'Destination': '%s/gen_thumb_on_copy_.jpg' % self.container} headers.update(self.additional_headers) req = urllib2.Request(url, headers=headers) req.get_method = lambda: 'COPY' @@ -100,7 +101,7 @@ class TestThumbnailStorlet(StorletJavaFunctionalTest): self.assertIn(status, [201, 202]) headers = c.head_object(self.url, self.token, - 'myobjects', 'gen_thumb_on_copy_.jpg') + self.container, 'gen_thumb_on_copy_.jpg') self.assertEqual(headers['content-length'], '49032') def test_get(self): diff --git a/tests/functional/python/__init__.py b/tests/functional/python/__init__.py index 7ec0551e..05f5da0a 100644 --- a/tests/functional/python/__init__.py +++ b/tests/functional/python/__init__.py @@ -19,7 +19,7 @@ from tests.functional import StorletFunctionalTest, PATH_TO_STORLETS class StorletPythonFunctionalTest(StorletFunctionalTest): def setUp(self, storlet_dir, storlet_name, storlet_main, - container, storlet_file, dep_names=None, headers=None): + storlet_file, dep_names=None, headers=None): storlet_dir = os.path.join('python', 'storlet_samples', storlet_dir) path_to_bundle = os.path.join(PATH_TO_STORLETS, storlet_dir) super(StorletPythonFunctionalTest, self).setUp('Python', @@ -27,7 +27,6 @@ class StorletPythonFunctionalTest(StorletFunctionalTest): storlet_dir, storlet_name, storlet_main, - container, storlet_file, dep_names, headers) diff --git a/tests/functional/python/test_SLO.py b/tests/functional/python/test_SLO.py index fd38b5fd..e45edef6 100644 --- a/tests/functional/python/test_SLO.py +++ b/tests/functional/python/test_SLO.py @@ -31,7 +31,6 @@ class TestSLO(StorletPythonFunctionalTest): storlet_dir='simple', storlet_name='simple.py', storlet_main='simple.SimpleStorlet', - container='myobjects', storlet_file=None, headers={}) @@ -75,7 +74,7 @@ class TestSLO(StorletPythonFunctionalTest): headers = response.get('headers') segment = dict() - segment['path'] = 'myobjects/%s' % oname + segment['path'] = '%s/%s' % (self.container, oname) segment['size_bytes'] = 1024 * 1024 segment['etag'] = headers['etag'] assembly.append(segment) @@ -111,7 +110,7 @@ class TestSLO(StorletPythonFunctionalTest): headers.update(self.additional_headers) response = dict() headers, body = client.get_object(self.url, self.token, - 'myobjects', 'assembly', + self.container, 'assembly', query_string=None, response_dict=response, resp_chunk_size=1024 * 1024, diff --git a/tests/functional/python/test_deploy_storlet.py b/tests/functional/python/test_deploy_storlet.py index 170939b1..c43cde42 100644 --- a/tests/functional/python/test_deploy_storlet.py +++ b/tests/functional/python/test_deploy_storlet.py @@ -18,12 +18,13 @@ import pexpect from tests.functional import StorletBaseFunctionalTest, PATH_TO_STORLETS, \ CONSOLE_TIMEOUT import unittest +from storlets.tools import deploy_storlet class TestDeployStorlet(StorletBaseFunctionalTest): def setUp(self): super(TestDeployStorlet, self).setUp() - self.deploy_storlet_path = '../../storlets/tools/deploy_storlet.py' + self.deploy_storlet_path = os.path.abspath(deploy_storlet.__file__) self.execdep_storlet_path = os.path.join(PATH_TO_STORLETS, 'python', 'storlet_samples', diff --git a/tests/functional/python/test_execdep_storlet.py b/tests/functional/python/test_execdep_storlet.py index 4abeb22e..9b655f16 100644 --- a/tests/functional/python/test_execdep_storlet.py +++ b/tests/functional/python/test_execdep_storlet.py @@ -26,7 +26,6 @@ class TestExecDepStorlet(StorletPythonFunctionalTest): storlet_dir='exec_dep', storlet_name='exec_dep.py', storlet_main='exec_dep.ExecDepStorlet', - container='myobjects', storlet_file='source.txt', dep_names=['get42.sh'], headers={}) @@ -37,7 +36,7 @@ class TestExecDepStorlet(StorletPythonFunctionalTest): resp = dict() resp_headers, get_text = client.get_object( self.url, self.token, - 'myobjects', + self.container, self.storlet_file, response_dict=resp, headers=headers) diff --git a/tests/functional/python/test_execqueryheader_storlet.py b/tests/functional/python/test_execqueryheader_storlet.py index 9a2d4aef..78ae318b 100644 --- a/tests/functional/python/test_execqueryheader_storlet.py +++ b/tests/functional/python/test_execqueryheader_storlet.py @@ -27,7 +27,6 @@ class TestExecQueryHeaderStorlet(StorletPythonFunctionalTest): storlet_dir='exec_query_header', storlet_name='exec_query_header.py', storlet_main='exec_query_header.ExecQueryHeaderStorlet', - container='myobjects', storlet_file='source.txt', headers={}) @@ -51,7 +50,7 @@ class TestExecQueryHeaderStorlet(StorletPythonFunctionalTest): if op == 'GET': # Get original object original_h, original_c = client.get_object(self.url, self.token, - 'myobjects', + self.container, self.storlet_file, response_dict=dict()) file_length = int(original_h['content-length']) @@ -81,7 +80,7 @@ class TestExecQueryHeaderStorlet(StorletPythonFunctionalTest): "application/octet-stream", headers, None, None, querystring, response) resp_headers, saved_c = client.get_object(self.url, self.token, - 'myobjects', + self.container, 'random_source', response_dict=dict()) diff --git a/tests/functional/python/test_multiinput_storlet.py b/tests/functional/python/test_multiinput_storlet.py index 15d8de6d..b37d4bfa 100644 --- a/tests/functional/python/test_multiinput_storlet.py +++ b/tests/functional/python/test_multiinput_storlet.py @@ -27,7 +27,6 @@ class TestMultiInputStorlet(StorletPythonFunctionalTest): storlet_dir='multi_input', storlet_name='multi_input.py', storlet_main='multi_input.MultiInputStorlet', - container='myobjects', storlet_file=None, headers={}) diff --git a/tests/functional/python/test_simple_storlet.py b/tests/functional/python/test_simple_storlet.py index 3d50335c..8af0f88a 100644 --- a/tests/functional/python/test_simple_storlet.py +++ b/tests/functional/python/test_simple_storlet.py @@ -31,7 +31,6 @@ class TestSimpleStorlet(StorletPythonFunctionalTest): storlet_dir='simple', storlet_name='simple.py', storlet_main='simple.SimpleStorlet', - container='myobjects', storlet_file='source.txt') def test_get(self): @@ -103,21 +102,22 @@ class TestSimpleStorlet(StorletPythonFunctionalTest): resp = dict() objname = self.storlet_file + '-copy' req_headers = {'X-Run-Storlet': self.storlet_name, - 'X-Copy-From': 'myobjects/%s' % self.storlet_file} + 'X-Copy-From': '%s/%s' % + (self.container, self.storlet_file)} client.put_object( self.url, self.token, self.container, objname, self.content, response_dict=resp, headers=req_headers) self.assertEqual(201, resp['status']) resp_header = resp['headers'] - self.assertEqual('myobjects/%s' % self.storlet_file, + self.assertEqual('%s/%s' % (self.container, self.storlet_file), resp_header['x-storlet-generated-from']) self.assertEqual(self.acct, resp_header['x-storlet-generated-from-account']) self.assertIn('x-storlet-generated-from-last-modified', resp_header) headers = client.head_object(self.url, self.token, - 'myobjects', objname) + self.container, objname) self.assertEqual(str(len(self.content)), headers['content-length']) resp = dict() @@ -128,25 +128,25 @@ class TestSimpleStorlet(StorletPythonFunctionalTest): def test_copy_dest(self): # No COPY in swiftclient. Using urllib instead... - url = os.path.join(self.url, 'myobjects', self.storlet_file) + url = os.path.join(self.url, self.container, self.storlet_file) objname = self.storlet_file + '-copy-ex' headers = {'X-Auth-Token': self.token, 'X-Run-Storlet': self.storlet_name, - 'Destination': 'myobjects/%s' % objname} + 'Destination': '%s/%s' % (self.container, objname)} headers.update(self.additional_headers) req = urllib2.Request(url, headers=headers) req.get_method = lambda: 'COPY' conn = urllib2.urlopen(req, timeout=10) self.assertEqual(201, conn.getcode()) - self.assertEqual('myobjects/%s' % self.storlet_file, + self.assertEqual('%s/%s' % (self.container, self.storlet_file), conn.info()['x-storlet-generated-from']) self.assertEqual(self.acct, conn.info()['x-storlet-generated-from-account']) self.assertIn('x-storlet-generated-from-last-modified', conn.info()) headers = client.head_object(self.url, self.token, - 'myobjects', objname) + self.container, objname) self.assertEqual(str(len(self.content)), headers['content-length']) resp = dict() diff --git a/tests/functional/python/test_test_storlet.py b/tests/functional/python/test_test_storlet.py index ee7002ff..f25d7e66 100644 --- a/tests/functional/python/test_test_storlet.py +++ b/tests/functional/python/test_test_storlet.py @@ -40,7 +40,6 @@ class TestTestStorlet(StorletPythonFunctionalTest): storlet_dir='test', storlet_name='test.py', storlet_main='test.TestStorlet', - container='myobjects', storlet_file=None, headers={}) @@ -52,13 +51,6 @@ class TestTestStorlet(StorletPythonFunctionalTest): 'test_object', 'some content') - def tearDown(self): - headers = {'X-Container-Read': ''} - swift_client.post_container(self.url, - self.token, - 'myobjects', - headers) - def invoke_storlet(self, op, withlog=False): headers = {'X-Run-Storlet': self.storlet_name} headers.update(self.additional_headers) @@ -69,7 +61,7 @@ class TestTestStorlet(StorletPythonFunctionalTest): resp_dict = dict() try: resp_headers, get_text = swift_client.get_object( - self.url, self.token, 'myobjects', 'test_object', + self.url, self.token, self.container, 'test_object', None, None, params, resp_dict, headers) get_response_status = resp_dict.get('status') @@ -124,7 +116,7 @@ class TestTestStorlet(StorletPythonFunctionalTest): exc_pattern = '^.*403 Forbidden.*$' with self.assertRaisesRegexp(ClientException, exc_pattern): swift_client.get_object(self.member_url, self.member_token, - 'myobjects', 'test_object', + self.container, 'test_object', headers=headers) def test_storlet_acl_get_success(self): @@ -133,24 +125,24 @@ class TestTestStorlet(StorletPythonFunctionalTest): exc_pattern = '^.*403 Forbidden.*$' with self.assertRaisesRegexp(ClientException, exc_pattern): swift_client.get_object(self.member_url, self.member_token, - 'myobjects', 'test_object', + self.container, 'test_object', headers=headers) headers = {'X-Storlet-Container-Read': self.conf.member_user, 'X-Storlet-Name': self.storlet_name} swift_client.post_container(self.url, self.token, - 'myobjects', + self.container, headers) swift_client.head_container(self.url, self.token, - 'myobjects') + self.container) headers = {'X-Run-Storlet': self.storlet_name} headers.update(self.additional_headers) resp_dict = dict() swift_client.get_object(self.member_url, self.member_token, - 'myobjects', 'test_object', + self.container, 'test_object', response_dict=resp_dict, headers=headers) self.assertEqual(200, resp_dict['status']) diff --git a/tox.ini b/tox.ini index 50317446..a8b3067b 100644 --- a/tox.ini +++ b/tox.ini @@ -40,7 +40,12 @@ commands = {[testenv:py34]commands} basepython = python2.7 deps = -r{toxinidir}/test-requirements.txt -commands = ./.functests jenkins + git+git://github.com/openstack/swift.git +setenv = + VIRTUAL_ENV={envdir} + STORLET_SAMPLE_PATH={toxinidir}/StorletSamples + CLUSTER_CONF_DIR={toxinidir} +commands = {toxinidir}/.functests jenkins [testenv:venv] commands = {posargs}