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