-
Notifications
You must be signed in to change notification settings - Fork 8
/
test_nas.py
110 lines (92 loc) · 3.48 KB
/
test_nas.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# Copyright 2020-present Tae Hwan Jung
#
# 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 unittest
from minio import Minio
from tests.test_storage import StorageTest
from matorage.nas import NAS
class DataSaverTest(StorageTest, unittest.TestCase):
minio_config = Minio(
endpoint="127.0.0.1:9001",
access_key="minio",
secret_key="miniosecretkey",
secure=False,
)
nas_config = NAS(path="/tmp/unittest")
def _create_bucket(self):
self.minio_config.make_bucket('testminio')
self.nas_config.make_bucket('testnas')
def _get_obj_names(self, generator):
res = sorted([g.object_name for g in generator])
return res
def _check_assertEqual(self, prefix=''):
for r in [True, False]:
self.assertEqual(
self._get_obj_names(
self.minio_config.list_objects('testminio', prefix=prefix, recursive=r)
),
self._get_obj_names(
self.nas_config.list_objects('testnas', prefix=prefix, recursive=r)
)
)
def test_bucket_exists(self):
self._create_bucket()
self.assertEqual(
self.minio_config.bucket_exists('testminio'),
self.nas_config.bucket_exists('testnas')
)
def test_fput_object_with_list_objects(self):
self._create_bucket()
with open('test', 'w') as f:
f.write('this is test')
for _object_name in ['test', 'metadata/test']:
self.minio_config.fput_object(
bucket_name='testminio',
object_name=_object_name,
file_path='test'
)
for _object_name in ['test', 'metadata/test']:
self.nas_config.fput_object(
bucket_name='testnas',
object_name=_object_name,
file_path='test'
)
self._check_assertEqual(prefix='')
self._check_assertEqual(prefix='metadata/')
self._check_assertEqual(prefix='metadata')
self._check_assertEqual(prefix='meta')
self._check_assertEqual(prefix='metadata/t')
self._check_assertEqual(prefix='metadata/test')
self.assertEqual(
self._get_obj_names(
self.minio_config.list_objects('testminio', prefix='metadata/test/')
),
self._get_obj_names(
self.nas_config.list_objects('testnas', prefix='metadata/test/')
)
)
self.assertNotEqual(
self._get_obj_names(
self.minio_config.list_objects('testminio', prefix='metadata/test/', recursive=True)
),
self._get_obj_names(
self.nas_config.list_objects('testnas', prefix='metadata/test/', recursive=True)
)
)
def suite():
suties = unittest.TestSuite()
suties.addTests(unittest.makeSuite(DataSaverTest))
return suties
if __name__ == "__main__":
unittest.main(defaultTest="suite")