Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(334)

Side by Side Diff: scripts/bucket_relocate_tests.sh

Issue 698893003: Update checked in version of gsutil to version 4.6 (Closed) Base URL: http://dart.googlecode.com/svn/third_party/gsutil/
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « scripts/bucket_relocate.sh ('k') | setup.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/python
2 # Copyright 2013 Google Inc. All Rights Reserved.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain 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,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 import random
17 import string
18 import subprocess
19 import tempfile
20 import time
21 import unittest
22
23 class BucketRelocateTests(unittest.TestCase):
24
25 def setUp(self):
26 self.buckets = []
27 print '\n\n\n'
28 print 'creating test buckets'
29 self.buckets.append('gs://relocate_test_%s' % (
30 ''.join(random.choice(string.ascii_lowercase) for x in range(10))))
31 self.buckets.append('gs://relocate_test_%s' % (
32 ''.join(random.choice(string.ascii_lowercase) for x in range(10))))
33 self._GSUtil('mb %s' % self.buckets[0])
34 self._GSUtil('mb %s' % self.buckets[1])
35 self._GSUtil('-m cp -R gs://relotestdata/* %s' % self.buckets[0])
36
37 def tearDown(self):
38 print 'deleting test buckets'
39 for bucket in self.buckets:
40 if self._GSUtil('ls -a %s' % bucket, raiseError=False):
41 self._GSUtil('-m rm -Ra %s/*' % bucket)
42 self._GSUtil('rb %s' % bucket)
43
44 def _GSUtil(self, paramstr, raiseError=True):
45 cmd = 'gsutil %s' % paramstr
46 print cmd
47 p = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE,
48 stdout=subprocess.PIPE,
49 stderr=subprocess.STDOUT,
50 close_fds=True)
51 code = p.wait()
52 output = p.stdout.read()
53 if code:
54 if raiseError:
55 raise Exception('gsutil return code=%d stdout=%s' % (code, output))
56 else:
57 return None
58 return output
59
60 def _Relocate(self, stage=None, storage_class=None, location=None,
61 buckets=None):
62 params = ['./bucket_relocate.sh']
63 if stage:
64 params.append(stage)
65 if storage_class:
66 params.append(storage_class)
67 if location:
68 params.append(location)
69 if buckets:
70 params.extend(buckets)
71 code = subprocess.call(params)
72 if code:
73 raise Exception('Return code=%d' % code)
74
75 def _DeleteBucketWithRetry(self, bucket):
76 self._GSUtil('-m rm -Ra %s/*' % bucket)
77 count = 0
78 while count < 5:
79 count += 1
80 try:
81 self._GSUtil('rb %s' % bucket)
82 return
83 except Exception as ex:
84 if count == 5 or not 'BucketNotEmpty' in ex.message:
85 raise
86 time.sleep(5)
87
88 def test_SimpleAll(self):
89 bucket = self.buckets[0]
90 self._Relocate(stage='-A', buckets=[bucket])
91
92 def test_SimpleStage1(self):
93 bucket = self.buckets[0]
94 self._Relocate(stage='-1', buckets=[bucket])
95 self._DeleteBucketWithRetry('%s-relocate' % bucket)
96
97 def test_SimpleStage2(self):
98 bucket = self.buckets[0]
99 self._Relocate(stage='-1', buckets=[bucket])
100 self._Relocate(stage='-2', buckets=[bucket])
101
102 def test_RelocateToDRA(self):
103 bucket = self.buckets[0]
104 self._Relocate(stage='-A', storage_class='-c DRA', buckets=[bucket])
105
106 def test_RelocateToEU(self):
107 bucket = self.buckets[0]
108 self._Relocate(stage='-A', location='-l EU', buckets=[bucket])
109
110 def test_RelocateClassAndLocation(self):
111 bucket = self.buckets[0]
112 self._Relocate(stage='-A', location='-l EU', storage_class='-c DRA',
113 buckets=[bucket])
114
115 def test_ConfigDefacl(self):
116 bucket = self.buckets[0]
117 self._GSUtil('defacl set public-read %s' % bucket)
118 cfg_before = self._GSUtil('defacl get %s' % bucket)
119 self._Relocate(stage='-A', buckets=[bucket])
120 cfg_after = self._GSUtil('defacl get %s' % bucket)
121 self.assertEqual(cfg_before, cfg_after)
122
123 def test_ConfigWebcfg(self):
124 bucket = self.buckets[0]
125 self._GSUtil('web set -m main.html -e error.html %s' % bucket)
126 cfg_before = self._GSUtil('web get %s' % bucket)
127 self._Relocate(stage='-A', buckets=[bucket])
128 cfg_after = self._GSUtil('web get %s' % bucket)
129 self.assertEqual(cfg_before, cfg_after)
130
131 def test_ConfigLogging(self):
132 bucket = self.buckets[0]
133 log_bucket = self.buckets[1]
134 self._GSUtil('logging set on -b %s -o tstlog %s' % (log_bucket, bucket))
135 cfg_before = self._GSUtil('logging get %s' % bucket)
136 self._Relocate(stage='-A', buckets=[bucket])
137 cfg_after = self._GSUtil('logging get %s' % bucket)
138 self.assertEqual(cfg_before, cfg_after)
139
140 def test_ConfigCors(self):
141 bucket = self.buckets[0]
142 cors="""<?xml version="1.0" ?>
143 <CorsConfig><Cors><Origins><Origin>http://origin1.example.com</Origin>
144 </Origins><Methods><Method>GET</Method></Methods><ResponseHeaders>
145 <ResponseHeader>Content-Type</ResponseHeader></ResponseHeaders>
146 </Cors></CorsConfig>"""
147 f = tempfile.NamedTemporaryFile()
148 f.write(cors)
149 f.flush()
150 self._GSUtil('cors set %s %s' % (f.name, bucket))
151 cfg_before = self._GSUtil('cors get %s' % bucket)
152 self._Relocate(stage='-A', buckets=[bucket])
153 cfg_after = self._GSUtil('cors get %s' % bucket)
154 self.assertEqual(cfg_before, cfg_after)
155 f.close()
156
157 def test_ConfigVersioning(self):
158 bucket = self.buckets[0]
159 self._GSUtil('versioning set on %s' % bucket)
160 cfg_before = self._GSUtil('versioning get %s' % bucket)
161 self._Relocate(stage='-A', buckets=[bucket])
162 cfg_after = self._GSUtil('versioning get %s' % bucket)
163 self.assertEqual(cfg_before, cfg_after)
164
165 def test_VersionedObjects(self):
166 bucket = self.buckets[0]
167 obj1 = '/tjp.dat'
168 obj2 = '/yjux.dat'
169 # enable versioning
170 self._GSUtil('versioning set on %s' % bucket)
171 # force another version
172 self._GSUtil('cp %s%s %s%s' % (bucket, obj1, bucket, obj2))
173 versions_before = self._GSUtil('ls -a %s%s' % (bucket, obj2))
174 self._Relocate(stage='-A', buckets=[bucket])
175 versions_after = self._GSUtil('ls -a %s%s' % (bucket, obj2))
176 version_count = len(versions_before.splitlines())
177 self.assertEqual(version_count, 2)
178 self.assertEqual(version_count, len(versions_after.splitlines()))
179
180
181 if __name__ == "__main__":
182 unittest.main()
OLDNEW
« no previous file with comments | « scripts/bucket_relocate.sh ('k') | setup.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698