You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by cl...@apache.org on 2021/05/02 15:29:12 UTC

[libcloud] 01/02: Add integration tests for MinIO

This is an automated email from the ASF dual-hosted git repository.

clewolff pushed a commit to branch storage-minio-integration-tests
in repository https://gitbox.apache.org/repos/asf/libcloud.git

commit ce651a5fb3bc8d18f215d69f82dfc9c01b42676d
Author: Clemens Wolff <cl...@apache.org>
AuthorDate: Sun May 2 11:23:19 2021 -0400

    Add integration tests for MinIO
---
 integration/storage/base.py       | 13 ++++++++----
 integration/storage/test_minio.py | 44 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 53 insertions(+), 4 deletions(-)

diff --git a/integration/storage/base.py b/integration/storage/base.py
index 119e8b1..56786cd 100644
--- a/integration/storage/base.py
+++ b/integration/storage/base.py
@@ -139,15 +139,18 @@ class Integration:
             self.driver.delete_object(obj)
 
             # check that a missing file can't be deleted or looked up
-            with self.assertRaises(types.ObjectDoesNotExistError):
-                self.driver.delete_object(obj)
-            with self.assertRaises(types.ObjectDoesNotExistError):
-                self.driver.get_object(container.name, blob_name)
+            self.assert_file_is_missing(container, obj)
 
             # check that the file is deleted
             blobs = self.driver.list_container_objects(container)
             self.assertEqual([blob.name for blob in blobs], [blob_name[::-1]])
 
+        def assert_file_is_missing(self, container, obj):
+            with self.assertRaises(types.ObjectDoesNotExistError):
+                self.driver.delete_object(obj)
+            with self.assertRaises(types.ObjectDoesNotExistError):
+                self.driver.get_object(container.name, obj.name)
+
         def test_objects(self, size=1 * MB):
             def do_upload(container, blob_name, content):
                 infile = self._create_tempfile(content=content)
@@ -285,6 +288,7 @@ class Integration:
         image = None
         version = 'latest'
         environment = {}
+        command = None
         ready_message = None
 
         host = 'localhost'
@@ -312,6 +316,7 @@ class Integration:
 
             cls.container = cls.client.containers.run(
                 '{}:{}'.format(cls.image, cls.version),
+                command=cls.command,
                 detach=True,
                 auto_remove=True,
                 ports={cls.port: cls.port},
diff --git a/integration/storage/test_minio.py b/integration/storage/test_minio.py
new file mode 100644
index 0000000..a6d9af5
--- /dev/null
+++ b/integration/storage/test_minio.py
@@ -0,0 +1,44 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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 sys
+import unittest
+
+from integration.storage.base import Integration
+from libcloud.storage import types
+
+
+class MinioTest(Integration.ContainerTestBase):
+    provider = 'minio'
+
+    account = 'minioaccount'
+    secret = 'miniopassword'
+
+    image = 'minio/minio'
+    port = 9000
+    environment = {'MINIO_ROOT_USER': account, 'MINIO_ROOT_PASSWORD': secret}
+    command = ['server', '/data']
+    ready_message = b'IAM initialization complete'
+
+    def test_cdn_url(self):
+        self.skipTest('Not implemented in driver')
+
+    def assert_file_is_missing(self, container, obj):
+        with self.assertRaises(types.ObjectDoesNotExistError):
+            self.driver.get_object(container.name, obj.name)
+
+
+if __name__ == '__main__':
+    sys.exit(unittest.main())