| # Copyright 2016 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import filecmp |
| import os |
| import shutil |
| import tempfile |
| |
| from autotest_lib.client.common_lib import error |
| from autotest_lib.server import test |
| |
| |
| _DATA_STR_A = 'Alluminum, linoleum, magnesium, petrolium.' |
| _DATA_STR_B = ('A basket of biscuits, a basket of mixed biscuits,' |
| 'and a biscuit mixer.') |
| |
| |
| class brillo_ADBDirectoryTransfer(test.test): |
| """Verify that ADB directory transfers work.""" |
| version = 1 |
| |
| |
| def setup(self): |
| self.temp_dir = tempfile.mkdtemp() |
| self.temp_dir_return = tempfile.mkdtemp() |
| self.file_a = os.path.join(self.temp_dir, 'file_a') |
| self.file_b = os.path.join(self.temp_dir, 'file_b') |
| |
| with open(self.file_a, 'w') as f: |
| f.write(_DATA_STR_A) |
| |
| with open(self.file_b, 'w') as f: |
| f.write(_DATA_STR_B) |
| |
| |
| def run_once(self, host=None): |
| """Body of the test.""" |
| device_temp_dir = os.path.join(host.get_tmp_dir(), 'adb_test_dir') |
| return_temp_dir = os.path.join(self.temp_dir_return, 'adb_test_return') |
| return_file_a = os.path.join(return_temp_dir, 'file_a') |
| return_file_b = os.path.join(return_temp_dir, 'file_b') |
| |
| host.send_file(self.temp_dir, device_temp_dir, delete_dest=True) |
| host.get_file(device_temp_dir, return_temp_dir, delete_dest=True) |
| |
| # TODO: Remove when b/28071719 is fixed |
| os.chmod(return_temp_dir, 0o700) |
| os.chmod(return_file_a, 0o600) |
| os.chmod(return_file_b, 0o600) |
| |
| if not filecmp.cmp(self.file_a, return_file_a, shallow=False) or \ |
| not filecmp.cmp(self.file_b, return_file_b, shallow=False): |
| raise error.TestFail('One of the files changed in transit') |
| |
| |
| def cleanup(self): |
| shutil.rmtree(self.temp_dir) |
| shutil.rmtree(self.temp_dir_return) |