OLD | NEW |
1 # -*- coding: utf-8 -*- | 1 # -*- coding: utf-8 -*- |
2 # Copyright 2013 Google Inc. All Rights Reserved. | 2 # Copyright 2013 Google Inc. All Rights Reserved. |
3 # | 3 # |
4 # Licensed under the Apache License, Version 2.0 (the "License"); | 4 # Licensed under the Apache License, Version 2.0 (the "License"); |
5 # you may not use this file except in compliance with 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 | 6 # You may obtain a copy of the License at |
7 # | 7 # |
8 # http://www.apache.org/licenses/LICENSE-2.0 | 8 # http://www.apache.org/licenses/LICENSE-2.0 |
9 # | 9 # |
10 # Unless required by applicable law or agreed to in writing, software | 10 # Unless required by applicable law or agreed to in writing, software |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 if self.is_debugging and stderr: | 126 if self.is_debugging and stderr: |
127 sys.stderr.write('==== stderr %s ====\n' % self.id()) | 127 sys.stderr.write('==== stderr %s ====\n' % self.id()) |
128 sys.stderr.write(stderr) | 128 sys.stderr.write(stderr) |
129 sys.stderr.write('==== end stderr ====\n') | 129 sys.stderr.write('==== end stderr ====\n') |
130 if self.is_debugging and log_output: | 130 if self.is_debugging and log_output: |
131 sys.stderr.write('==== log output %s ====\n' % self.id()) | 131 sys.stderr.write('==== log output %s ====\n' % self.id()) |
132 sys.stderr.write(log_output) | 132 sys.stderr.write(log_output) |
133 sys.stderr.write('==== end log output ====\n') | 133 sys.stderr.write('==== end log output ====\n') |
134 | 134 |
135 def RunCommand(self, command_name, args=None, headers=None, debug=0, | 135 def RunCommand(self, command_name, args=None, headers=None, debug=0, |
136 test_method=None, return_stdout=False, return_stderr=False, | 136 return_stdout=False, return_stderr=False, |
137 return_log_handler=False, cwd=None): | 137 return_log_handler=False, cwd=None): |
138 """Method for calling gslib.command_runner.CommandRunner. | 138 """Method for calling gslib.command_runner.CommandRunner. |
139 | 139 |
140 Passes parallel_operations=False for all tests, optionally saving/returning | 140 Passes parallel_operations=False for all tests, optionally saving/returning |
141 stdout output. We run all tests multi-threaded, to exercise those more | 141 stdout output. We run all tests multi-threaded, to exercise those more |
142 complicated code paths. | 142 complicated code paths. |
143 TODO: Change to run with parallel_operations=True for all tests. At | 143 TODO: Change to run with parallel_operations=True for all tests. At |
144 present when you do this it causes many test failures. | 144 present when you do this it causes many test failures. |
145 | 145 |
146 Args: | 146 Args: |
147 command_name: The name of the command being run. | 147 command_name: The name of the command being run. |
148 args: Command-line args (arg0 = actual arg, not command name ala bash). | 148 args: Command-line args (arg0 = actual arg, not command name ala bash). |
149 headers: Dictionary containing optional HTTP headers to pass to boto. | 149 headers: Dictionary containing optional HTTP headers to pass to boto. |
150 debug: Debug level to pass in to boto connection (range 0..3). | 150 debug: Debug level to pass in to boto connection (range 0..3). |
151 test_method: Optional general purpose method for testing purposes. | |
152 Application and semantics of this method will vary by | |
153 command and test type. | |
154 return_stdout: If True, will save and return stdout produced by command. | 151 return_stdout: If True, will save and return stdout produced by command. |
155 return_stderr: If True, will save and return stderr produced by command. | 152 return_stderr: If True, will save and return stderr produced by command. |
156 return_log_handler: If True, will return a MockLoggingHandler instance | 153 return_log_handler: If True, will return a MockLoggingHandler instance |
157 that was attached to the command's logger while running. | 154 that was attached to the command's logger while running. |
158 cwd: The working directory that should be switched to before running the | 155 cwd: The working directory that should be switched to before running the |
159 command. The working directory will be reset back to its original | 156 command. The working directory will be reset back to its original |
160 value after running the command. If not specified, the working | 157 value after running the command. If not specified, the working |
161 directory is left unchanged. | 158 directory is left unchanged. |
162 | 159 |
163 Returns: | 160 Returns: |
(...skipping 22 matching lines...) Expand all Loading... |
186 sys.stdout.truncate() | 183 sys.stdout.truncate() |
187 sys.stderr.truncate() | 184 sys.stderr.truncate() |
188 | 185 |
189 mock_log_handler = MockLoggingHandler() | 186 mock_log_handler = MockLoggingHandler() |
190 logging.getLogger(command_name).addHandler(mock_log_handler) | 187 logging.getLogger(command_name).addHandler(mock_log_handler) |
191 | 188 |
192 try: | 189 try: |
193 with WorkingDirectory(cwd): | 190 with WorkingDirectory(cwd): |
194 self.command_runner.RunNamedCommand( | 191 self.command_runner.RunNamedCommand( |
195 command_name, args=args, headers=headers, debug=debug, | 192 command_name, args=args, headers=headers, debug=debug, |
196 parallel_operations=False, test_method=test_method, | 193 parallel_operations=False, do_shutdown=False) |
197 do_shutdown=False) | |
198 finally: | 194 finally: |
199 sys.stdout.seek(0) | 195 sys.stdout.seek(0) |
200 stdout = sys.stdout.read() | 196 stdout = sys.stdout.read() |
201 sys.stderr.seek(0) | 197 sys.stderr.seek(0) |
202 stderr = sys.stderr.read() | 198 stderr = sys.stderr.read() |
203 logging.getLogger(command_name).removeHandler(mock_log_handler) | 199 logging.getLogger(command_name).removeHandler(mock_log_handler) |
204 mock_log_handler.close() | 200 mock_log_handler.close() |
205 | 201 |
206 log_output = '\n'.join( | 202 log_output = '\n'.join( |
207 '%s:\n ' % level + '\n '.join(records) | 203 '%s:\n ' % level + '\n '.join(records) |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
359 | 355 |
360 Returns: | 356 Returns: |
361 A StorageUri for the created object. | 357 A StorageUri for the created object. |
362 """ | 358 """ |
363 bucket_uri = bucket_uri or self.CreateBucket() | 359 bucket_uri = bucket_uri or self.CreateBucket() |
364 object_name = object_name or self.MakeTempName('obj') | 360 object_name = object_name or self.MakeTempName('obj') |
365 key_uri = bucket_uri.clone_replace_name(object_name) | 361 key_uri = bucket_uri.clone_replace_name(object_name) |
366 if contents is not None: | 362 if contents is not None: |
367 key_uri.set_contents_from_string(contents) | 363 key_uri.set_contents_from_string(contents) |
368 return key_uri | 364 return key_uri |
OLD | NEW |