blob: 6d23c0a570f2e95b40ecbd01fa522a7e6cf67565 [file] [log] [blame]
huangtianhua0ff41682013-12-16 14:49:31 +08001# Copyright 2013 Huawei Technologies Co.,LTD
2# All Rights Reserved.
3#
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15
Zhi Kun Liu02a99062014-01-02 19:00:08 +080016from tempest.api.volume import base
huangtianhua0ff41682013-12-16 14:49:31 +080017from tempest import test
18
19
Zhi Kun Liu02a99062014-01-02 19:00:08 +080020class VolumeMetadataTest(base.BaseVolumeV1Test):
huangtianhua0ff41682013-12-16 14:49:31 +080021 _interface = "json"
22
23 @classmethod
24 def setUpClass(cls):
25 super(VolumeMetadataTest, cls).setUpClass()
26 # Create a volume
27 cls.volume = cls.create_volume()
28 cls.volume_id = cls.volume['id']
29
30 @classmethod
31 def tearDownClass(cls):
32 super(VolumeMetadataTest, cls).tearDownClass()
33
34 def tearDown(self):
35 # Update the metadata to {}
36 self.volumes_client.update_volume_metadata(self.volume_id, {})
37 super(VolumeMetadataTest, self).tearDown()
38
39 @test.attr(type='gate')
40 def test_create_get_delete_volume_metadata(self):
41 # Create metadata for the volume
42 metadata = {"key1": "value1",
43 "key2": "value2",
44 "key3": "value3"}
45
46 rsp, body = self.volumes_client.create_volume_metadata(self.volume_id,
47 metadata)
48 self.assertEqual(200, rsp.status)
49 # Get the metadata of the volume
50 resp, body = self.volumes_client.get_volume_metadata(self.volume_id)
51 self.assertEqual(200, resp.status)
52 self.assertEqual(metadata, body)
53 # Delete one item metadata of the volume
54 rsp, body = self.volumes_client.delete_volume_metadata_item(
55 self.volume_id,
56 "key1")
57 self.assertEqual(200, rsp.status)
58 resp, body = self.volumes_client.get_volume_metadata(self.volume_id)
59 self.assertNotIn("key1", body)
60
61 @test.attr(type='gate')
62 def test_update_volume_metadata(self):
63 # Update metadata for the volume
64 metadata = {"key1": "value1",
65 "key2": "value2",
66 "key3": "value3"}
67
68 update = {"key4": "value4",
69 "key1": "value1_update"}
70
71 # Create metadata for the volume
72 resp, body = self.volumes_client.create_volume_metadata(
73 self.volume_id,
74 metadata)
75 self.assertEqual(200, resp.status)
76 # Get the metadata of the volume
77 resp, body = self.volumes_client.get_volume_metadata(self.volume_id)
78 self.assertEqual(200, resp.status)
79 self.assertEqual(metadata, body)
80 # Update metadata
81 resp, body = self.volumes_client.update_volume_metadata(
82 self.volume_id,
83 update)
84 self.assertEqual(200, resp.status)
85 # Get the metadata of the volume
86 resp, body = self.volumes_client.get_volume_metadata(self.volume_id)
87 self.assertEqual(200, resp.status)
88 self.assertEqual(update, body)
89
90 @test.attr(type='gate')
91 def test_update_volume_metadata_item(self):
92 # Update metadata item for the volume
93 metadata = {"key1": "value1",
94 "key2": "value2",
95 "key3": "value3"}
96 create_expect = {"key1": "value1",
97 "key2": "value2",
98 "key3": "value3"}
99 update_item = {"key3": "value3_update"}
100 expect = {"key1": "value1",
101 "key2": "value2",
102 "key3": "value3_update"}
103 # Create metadata for the volume
104 resp, body = self.volumes_client.create_volume_metadata(
105 self.volume_id,
106 metadata)
107 self.assertEqual(200, resp.status)
108 self.assertEqual(create_expect, body)
109 # Update metadata item
110 resp, body = self.volumes_client.update_volume_metadata_item(
111 self.volume_id,
112 "key3",
113 update_item)
114 self.assertEqual(200, resp.status)
115 # Get the metadata of the volume
116 resp, body = self.volumes_client.get_volume_metadata(self.volume_id)
117 self.assertEqual(200, resp.status)
118 self.assertEqual(expect, body)
119
120
121class VolumeMetadataTestXML(VolumeMetadataTest):
122 _interface = "xml"