Commit 09068770 authored by Michael Achenbach's avatar Michael Achenbach Committed by Commit Bot

Revert "Reland "[tools] Push files using high-level device.PushChangedFiles method""

This reverts commit 6e03d7ee.

Reason for revert: This breaks the Android bot:
https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Android%20Arm64%20-%20N5X/2933
It's quite hidden due to https://crbug.com/v8/8731 but all shards
time out. It looks like to to this change, testing takes
dramatically longer, maybe the pushing takes now much longer than
before. If we want decide for this, the builder needs to get
many more shards.

Original change's description:
> Reland "[tools] Push files using high-level device.PushChangedFiles method"
> 
> This is a reland of d045f666
> 
> Original change's description:
> > [tools] Push files using high-level device.PushChangedFiles method
> >
> > R=machenbach@chromium.org
> >
> > No-Try: true
> > Bug: chromium:893593
> > Change-Id: I11cce7694eb7755ccee42c9a342fc1aa22663d85
> > Reviewed-on: https://chromium-review.googlesource.com/c/1382468
> > Reviewed-by: Michael Achenbach <machenbach@chromium.org>
> > Commit-Queue: Sergiy Belozorov <sergiyb@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#58407}
> 
> Bug: chromium:893593
> Change-Id: I88a7143b3f31d87d266b89221f81efe831ea3823
> Reviewed-on: https://chromium-review.googlesource.com/c/1443055
> Commit-Queue: Andrii Shyshkalov <tandrii@chromium.org>
> Reviewed-by: Michael Achenbach <machenbach@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#59221}

TBR=machenbach@chromium.org,tandrii@chromium.org,sergiyb@chromium.org,bpastene@chromium.org,jbudorick@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: chromium:893593
Change-Id: Ifea307b5de8f39b660966fc6bef54601df91d841
Reviewed-on: https://chromium-review.googlesource.com/c/1450119Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
Reviewed-by: 's avatarSergiy Belozorov <sergiyb@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#59305}
parent 6ba2611e
...@@ -753,11 +753,10 @@ class AndroidPlatform(Platform): # pragma: no cover ...@@ -753,11 +753,10 @@ class AndroidPlatform(Platform): # pragma: no cover
self.driver.push_executable( self.driver.push_executable(
self.shell_dir_secondary, "bin_secondary", node.binary) self.shell_dir_secondary, "bin_secondary", node.binary)
file_tuples = [
(bench_abs, file_name, bench_rel) for file_name in node.resources]
if isinstance(node, RunnableConfig): if isinstance(node, RunnableConfig):
file_tuples.append((bench_abs, node.main, bench_rel)) self.driver.push_file(bench_abs, node.main, bench_rel)
self.driver.push_files(file_tuples) for resource in node.resources:
self.driver.push_file(bench_abs, resource, bench_rel)
def _Run(self, runnable, count, secondary=False): def _Run(self, runnable, count, secondary=False):
suffix = ' - secondary' if secondary else '' suffix = ' - secondary' if secondary else ''
......
...@@ -53,37 +53,53 @@ class _Driver(object): ...@@ -53,37 +53,53 @@ class _Driver(object):
self.device = device_utils.DeviceUtils.HealthyDevices( self.device = device_utils.DeviceUtils.HealthyDevices(
retries=5, enable_usb_resets=True, device_arg=device)[0] retries=5, enable_usb_resets=True, device_arg=device)[0]
# This remembers what we have already pushed to the device.
self.pushed = set()
def tear_down(self): def tear_down(self):
"""Clean up files after running all tests.""" """Clean up files after running all tests."""
self.device.RemovePath(DEVICE_DIR, force=True, recursive=True) self.device.RemovePath(DEVICE_DIR, force=True, recursive=True)
def push_files(self, file_tuples, skip_if_missing=False): def push_file(self, host_dir, file_name, target_rel='.',
"""Push multiple files/dirs to the device. skip_if_missing=False):
"""Push a single file to the device (cached).
Args: Args:
file_tuples: List of 3-tuples (host_dir, file_name, target_rel), where host_dir: Absolute parent directory of the file to push.
host_dir is absolute parent directory of the files/dirs to be pushed, file_name: Name of the file to push.
file_name is file or dir path to be pushed (relative to host_dir), and target_rel: Parent directory of the target location on the device
target_rel is parent directory of the target location on the device (relative to the device's base dir for testing).
relative to the device's base dir for testing.
skip_if_missing: Keeps silent about missing files when set. Otherwise logs skip_if_missing: Keeps silent about missing files when set. Otherwise logs
error. error.
""" """
host_device_tuples = [] # TODO(sergiyb): Implement this method using self.device.PushChangedFiles to
for host_dir, file_name, target_rel in file_tuples: # avoid accessing low-level self.device.adb.
file_on_host = os.path.join(host_dir, file_name) file_on_host = os.path.join(host_dir, file_name)
if not os.path.exists(file_on_host):
if not skip_if_missing:
logging.critical('Missing file on host: %s' % file_on_host)
continue
# Only push files not yet pushed in one execution.
if file_on_host in self.pushed:
return
file_on_device_tmp = os.path.join(DEVICE_DIR, '_tmp_', file_name)
file_on_device = os.path.join(DEVICE_DIR, target_rel, file_name) file_on_device = os.path.join(DEVICE_DIR, target_rel, file_name)
host_device_tuples.append((file_on_host, file_on_device)) folder_on_device = os.path.dirname(file_on_device)
try: # Only attempt to push files that exist.
self.device.PushChangedFiles(host_device_tuples) if not os.path.exists(file_on_host):
except device_errors.CommandFailedError as e: if not skip_if_missing:
logging.critical('PUSH FAILED: %s', e.message) logging.critical('Missing file on host: %s' % file_on_host)
return
# Work-around for 'text file busy' errors. Push the files to a temporary
# location and then copy them with a shell command.
output = self.device.adb.Push(file_on_host, file_on_device_tmp)
# Success looks like this: '3035 KB/s (12512056 bytes in 4.025s)'.
# Errors look like this: 'failed to copy ... '.
if output and not re.search('^[0-9]', output.splitlines()[-1]):
logging.critical('PUSH FAILED: ' + output)
self.device.adb.Shell('mkdir -p %s' % folder_on_device)
self.device.adb.Shell('cp %s %s' % (file_on_device_tmp, file_on_device))
self.pushed.add(file_on_host)
def push_executable(self, shell_dir, target_dir, binary): def push_executable(self, shell_dir, target_dir, binary):
"""Push files required to run a V8 executable. """Push files required to run a V8 executable.
...@@ -94,16 +110,34 @@ class _Driver(object): ...@@ -94,16 +110,34 @@ class _Driver(object):
devices' base dir for testing). devices' base dir for testing).
binary: Name of the binary to push. binary: Name of the binary to push.
""" """
self.push_files([(shell_dir, binary, target_dir)]) self.push_file(shell_dir, binary, target_dir)
# Push external startup data. Backwards compatible for revisions where # Push external startup data. Backwards compatible for revisions where
# these files didn't exist. Or for bots that don't produce these files. # these files didn't exist. Or for bots that don't produce these files.
self.push_files([ self.push_file(
(shell_dir, 'natives_blob.bin', target_dir), shell_dir,
(shell_dir, 'snapshot_blob.bin', target_dir), 'natives_blob.bin',
(shell_dir, 'snapshot_blob_trusted.bin', target_dir), target_dir,
(shell_dir, 'icudtl.dat', target_dir), skip_if_missing=True,
], skip_if_missing=True) )
self.push_file(
shell_dir,
'snapshot_blob.bin',
target_dir,
skip_if_missing=True,
)
self.push_file(
shell_dir,
'snapshot_blob_trusted.bin',
target_dir,
skip_if_missing=True,
)
self.push_file(
shell_dir,
'icudtl.dat',
target_dir,
skip_if_missing=True,
)
def run(self, target_dir, binary, args, rel_path, timeout, env=None, def run(self, target_dir, binary, args, rel_path, timeout, env=None,
logcat_file=False): logcat_file=False):
......
...@@ -238,13 +238,11 @@ class AndroidCommand(BaseCommand): ...@@ -238,13 +238,11 @@ class AndroidCommand(BaseCommand):
android_driver().push_executable(self.shell_dir, 'bin', self.shell_name) android_driver().push_executable(self.shell_dir, 'bin', self.shell_name)
file_tuples = []
for abs_file in self.files_to_push: for abs_file in self.files_to_push:
abs_dir = os.path.dirname(abs_file) abs_dir = os.path.dirname(abs_file)
file_name = os.path.basename(abs_file) file_name = os.path.basename(abs_file)
rel_dir = os.path.relpath(abs_dir, BASE_DIR) rel_dir = os.path.relpath(abs_dir, BASE_DIR)
file_tuples.append((abs_dir, file_name, rel_dir)) android_driver().push_file(abs_dir, file_name, rel_dir)
android_driver().push_files(file_tuples)
start_time = time.time() start_time = time.time()
return_code = 0 return_code = 0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment