blob: 7dfcbba75a0557744ce0999895789ed8328336ef [file] [log] [blame]
# 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.')
_DATA_STR_C = 'foo\nbar\nbaz'
class brillo_ADBDirectoryTransfer(test.test):
"""Verify that ADB directory transfers work."""
version = 1
def setup(self):
# Create a test directory tree to send and receive:
# test_dir/
# file_a
# file_b
# test_subdir/
# file_c
self.temp_dir = tempfile.mkdtemp()
self.test_dir = os.path.join(self.temp_dir, 'test_dir')
os.mkdir(self.test_dir)
os.mkdir(os.path.join(self.test_dir, 'subdir'))
with open(os.path.join(self.test_dir, 'file_a'), 'w') as f:
f.write(_DATA_STR_A)
with open(os.path.join(self.test_dir, 'file_b'), 'w') as f:
f.write(_DATA_STR_B)
with open(os.path.join(self.test_dir, 'subdir', 'file_c'), 'w') as f:
f.write(_DATA_STR_C)
def run_once(self, host=None):
"""Body of the test."""
device_temp_dir = host.get_tmp_dir()
device_test_dir = os.path.join(device_temp_dir, 'test_dir')
return_dir = os.path.join(self.temp_dir, 'return_dir')
return_test_dir = os.path.join(return_dir, 'test_dir')
# Copy test_dir to the device then back into return_dir.
host.send_file(self.test_dir, device_temp_dir, delete_dest=True)
host.get_file(device_test_dir, return_dir, delete_dest=True)
for path in ('file_a', 'file_b', os.path.join('subdir', 'file_c')):
original = os.path.join(self.test_dir, path)
returned = os.path.join(return_test_dir, path)
if not filecmp.cmp(original, returned, shallow=False):
raise error.TestFail(path + ' changed in transit')
def cleanup(self):
shutil.rmtree(self.temp_dir)