コード例 #1
0
class EsuRestApiTest(unittest.TestCase):
    
    # Enter your own host in the form of sub.domain.com or 10.0.1.250
    host = "lciga090.lss.emc.com"
    
    # Enter the port where Atmos lives here
    port = 80
    
    # Enter your full UID in the form of something/something_else
    uid = "0e2200283d4143d9b2895992a64cd319/test"
    
    # Enter your secret here.  (shhsh!)
    secret = "lYp88RptTEnBOEh/DC0w5ys7olU="
    
    def setUp(self):
        self.esu = EsuRestApi(self.host, self.port, self.uid, self.secret)
        self.oid_clean_up = []
        self.path_clean_up = []
    
    def tearDown(self):
        if self.oid_clean_up:
            for object in self.oid_clean_up:
                self.esu.delete_object(object)
        
        if self.path_clean_up:
            dir = self.path_clean_up[0].split("/")
            self.esu.delete_directory(dir[0])

    def test_create_empty_object(self):
        data = " "
        oid = self.esu.create_object(data=data)
        self.assertTrue(oid, "null object ID returned")
        object = self.esu.read_object(oid)
        self.assertEqual(object, data, "wrong object content")
        self.oid_clean_up.append(oid)
        
    def test_create_empty_object_on_path(self):
        data = " "
        path = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(8)) + "/file.data"
        oid = self.esu.create_object_on_path(data=data, path=path)
        self.assertTrue(oid, "null object ID returned")
        object = self.esu.read_object(oid)
        self.assertEqual(object, data, "wrong object content")
        self.oid_clean_up.append(oid)
        self.path_clean_up.append(path)
            
    def test_create_object_with_content(self):
        data = "The quick brown fox jumps over the lazy dog"
        oid = self.esu.create_object(data=data)
        object = self.esu.read_object(oid)
        self.assertEquals(data, object)
        self.oid_clean_up.append(oid)
    
    def test_create_object_with_content_and_checksum(self):
        data = "The quick brown fox jumps over the lazy dog"
        checksum = "SHA1/%d/%s" %  (len(data), hashlib.sha1(data).hexdigest())
        oid = self.esu.create_object(data=data, checksum=checksum)
        self.oid_clean_up.append(oid)
        object = self.esu.read_object(oid)
        self.assertEquals(data, object)
    
    def test_create_object_on_path_with_content(self):
        data = "The quick brown fox jumps over the lazy dog"
        path = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(8)) + "/file.data"
        oid = self.esu.create_object_on_path(data=data, path=path)
        self.oid_clean_up.append(oid)
        self.assertTrue(oid, "null object ID returned")
        object = self.esu.read_object(oid)
        self.assertEqual(object, data, "wrong object content")
    
    def test_create_object_on_path_with_content_and_checksum(self):
        data = "The quick brown fox jumps over the lazy dog"
        path = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(8)) + "/file.data"
        checksum = "SHA1/%d/%s" %  (len(data), hashlib.sha1(data).hexdigest())
        oid = self.esu.create_object_on_path(data=data, path=path, checksum=checksum)
        self.oid_clean_up.append(oid)
        self.assertTrue(oid, "null object ID returned")
        object = self.esu.read_object(oid)
        self.assertEqual(object, data, "wrong object content")
    
    def test_create_object_on_path_with_metadata(self):
        data = "The quick brown fox jumps over the lazy dog"
        listable_meta = {"key1" : "value1", "key2" : "value2", "key3" : "value3"}
        path = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(8)) + "/file.data"
        oid = self.esu.create_object_on_path(data=data, path=path, listable_meta=listable_meta)
        self.assertTrue(oid, "null object ID returned")
        object = self.esu.read_object(oid)
        self.assertEqual(object, data, "wrong object content")
        
        # Retrieves existing metadata for an object and compares it to the known metadata dictionary that was stored
        metadata = self.esu.get_user_metadata(oid)['listable_user_meta']
        self.assertEqual(listable_meta, metadata, "metadata key/values are wrong")
        
        self.oid_clean_up.append(oid)
        self.path_clean_up.append(path)
    
    def test_create_object_with_metadata(self):
        data = "The quick brown fox jumps over the lazy dog"
        listable_meta = {"key1" : "value1", "key2" : "value2", "key3" : "value3"}
        oid = self.esu.create_object(data=data, listable_meta=listable_meta)
        self.assertTrue(oid, "null object ID returned")
        object = self.esu.read_object(oid)
        self.assertEqual(object, data, "wrong object content")
        
        # Retrieves existing metadata for an object and compares it to the known metadata dictionary that was stored
        metadata = self.esu.get_user_metadata(oid)['listable_user_meta']
        self.assertEqual(listable_meta, metadata, "metadata key/values are wrong")
        
        self.oid_clean_up.append(oid)
    
    def test_read_acl(self):
        data = "The quick brown fox jumps over the lazy dog"
        oid = self.esu.create_object(data=data)
        uid = self.esu.uid.split("/")[0]
        user_acl = "%s=FULL_CONTROL" % uid
        resp = self.esu.set_acl(oid, user_acl)
        
        acl = self.esu.get_acl(oid)['user_acl'][uid]
        self.assertEqual(acl, "FULL_CONTROL", "acl does not match")
        
        self.oid_clean_up.append(oid)
    
    
    def test_delete_user_metadata(self):
        data = "The quick brown fox jumps over the lazy dog"
        listable_meta = {"key1" : "value1"}
        oid = self.esu.create_object(data=data, listable_meta=listable_meta)
        self.assertTrue(oid, "null object ID returned")
        object = self.esu.read_object(oid)
        self.assertEqual(object, data, "wrong object content")
        
        # Retrieves existing metadata for an object and compares it to the known metadata dictionary that was stored
        metadata = self.esu.get_user_metadata(oid)['listable_user_meta']
        self.assertEqual(listable_meta, metadata, "metadata key/values are wrong")
        
        self.esu.delete_user_metadata(object_id=oid, metadata_key="key1")
        metadata = self.esu.get_user_metadata(oid)['listable_user_meta']
        self.assertEqual(metadata, {})
        
        self.oid_clean_up.append(oid)
    
    def test_get_system_metadata(self):
        data = "The quick brown fox jumps over the lazy dog"
        oid = self.esu.create_object(data=data)
        self.assertTrue(oid, "null object ID returned")
        object = self.esu.read_object(oid)
        self.assertEqual(object, data, "wrong object content")
        system_meta = self.esu.get_system_metadata(oid)
        self.assertTrue(system_meta['size'], "Size should be > 0" )
        self.assertTrue(system_meta['ctime'], "the ctime was not set")
        self.assertEqual(system_meta['objectid'], oid, "Object IDs do not match")
        self.oid_clean_up.append(oid)
    
    def test_list_objects(self):
        data = "The quick brown fox jumps over the lazy dog"
        key = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(8))
        listable_meta = {key : "value1"}
        oid = self.esu.create_object(data=data, listable_meta=listable_meta)
        self.assertTrue(oid, "null object ID returned")
        object = self.esu.read_object(oid)
        self.assertEqual(object, data, "wrong object content")
        
        list = self.esu.list_objects(metadata_key=key)
        self.assertEqual(oid, list[0][0], "wrong object ids")
        self.oid_clean_up.append(oid)
        
    def test_list_directory(self):
        data = "The quick brown fox jumps over the lazy dog"
        path = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(8)) + "/file.data"
        oid = self.esu.create_object_on_path(data=data, path=path)
        dir = path.split("/")[0]
        list = self.esu.list_directory(dir)
        self.assertEqual(oid, list[0][0][0], "wrong object ids")
        self.oid_clean_up.append(oid)
        self.path_clean_up.append(path)
        
    def test_delete_object(self):
        data = "The quick brown fox jumps over the lazy dog"
        oid = self.esu.create_object(data=data)
        self.assertTrue(oid, "null object ID returned")
        self.esu.delete_object(oid)
        
        try:
            object = self.esu.read_object(oid)
            
        except EsuException, e:
            self.assertEqual(e.atmos_error_code, "1003", "wrong error code")