New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 763998 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Jan 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 2
Type: Bug



Sign in to add a comment

Run Cronet perf tests continuously on a bot

Project Member Reported by xunji...@chromium.org, Sep 11 2017

Issue description

Filing a bug to track the request to run Cronet perf tests on a bot.

The perf tests will be helpful to identify issues like  Bug 756841 , where a memory leak happened during each upload.
 
Cc: -pauljensen@chromium.org
Probably far out of date by now, but I created https://codereview.chromium.org/1292783004/ more than two years ago to do this.
I was never quite sure how perf tests were supposed to format their output and how that output was supposed to be collected and viewed.
Owner: xunji...@chromium.org
Status: Assigned (was: Available)
Thanks, Paul. I will give this a try in Q4.
Project Member

Comment 3 by bugdroid1@chromium.org, Jan 3 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/178aeca934b4c2b37d3c479f15ded2362c9b8cd5

commit 178aeca934b4c2b37d3c479f15ded2362c9b8cd5
Author: Helen Li <xunjieli@chromium.org>
Date: Wed Jan 03 17:26:57 2018

Fix quic certs path in components/cronet/android/test/javaperftests/run.py

The paths to quic certs are changed in r525466.
This CL is to update the run.py to use the new paths.

Bug:  763998 
Cq-Include-Trybots: master.tryserver.chromium.android:android_cronet_tester
Change-Id: Ia55e97118b13d2e7b56fba95c6dca8aeb6ecb3c9
Reviewed-on: https://chromium-review.googlesource.com/848078
Reviewed-by: Paul Jensen <pauljensen@chromium.org>
Commit-Queue: Helen Li <xunjieli@chromium.org>
Cr-Commit-Position: refs/heads/master@{#526720}
[modify] https://crrev.com/178aeca934b4c2b37d3c479f15ded2362c9b8cd5/components/cronet/android/test/javaperftests/run.py

Project Member

Comment 4 by bugdroid1@chromium.org, Jan 4 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9a034c13e254a19fd7821119b41b9cca4fc16900

commit 9a034c13e254a19fd7821119b41b9cca4fc16900
Author: Helen Li <xunjieli@chromium.org>
Date: Thu Jan 04 14:39:09 2018

Update Cronet perf test app run.py with two fixes

This CL applies two fixes to make run.py script run again.
(1) The test data file needs to be under /chromium_test_root subdirectory in
external storage.
(2) Add --browser=any flag so telemetry doesn't complain.

Bug:  763998 
Cq-Include-Trybots: master.tryserver.chromium.android:android_cronet_tester
Change-Id: I445db215d3171f0167dd6e3741ed33f2747a0872
Reviewed-on: https://chromium-review.googlesource.com/849074
Reviewed-by: Paul Jensen <pauljensen@chromium.org>
Commit-Queue: Helen Li <xunjieli@chromium.org>
Cr-Commit-Position: refs/heads/master@{#526986}
[modify] https://crrev.com/9a034c13e254a19fd7821119b41b9cca4fc16900/components/cronet/android/test/javaperftests/run.py

Project Member

Comment 5 by bugdroid1@chromium.org, Jan 4 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/catapult/+/974a66a80812e2e2f445b5e2668d7a9f3a3d3728

commit 974a66a80812e2e2f445b5e2668d7a9f3a3d3728
Author: Helen Li <xunjieli@chromium.org>
Date: Thu Jan 04 16:43:25 2018

Fix story_runner.py to not call DumpStateUponFailure with three args

DumpStateUponFailure() accepts two arguments. This is to fix the call site to
not pass in three arguments.

Bug:  chromium:763998 
Change-Id: I5e1917629c38f705fcd7e55116295efea0f2be5d
Reviewed-on: https://chromium-review.googlesource.com/850912
Reviewed-by: Ned Nguyen <nednguyen@google.com>
Reviewed-by: Juan Antonio Navarro Pérez <perezju@chromium.org>
Commit-Queue: Helen Li <xunjieli@chromium.org>

[modify] https://crrev.com/974a66a80812e2e2f445b5e2668d7a9f3a3d3728/telemetry/telemetry/internal/story_runner.py
[modify] https://crrev.com/974a66a80812e2e2f445b5e2668d7a9f3a3d3728/telemetry/telemetry/internal/story_runner_unittest.py

Project Member

Comment 6 by bugdroid1@chromium.org, Jan 5 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/catapult/+/798c8ca64addef6972f820f3762a26bca3ade74d

commit 798c8ca64addef6972f820f3762a26bca3ade74d
Author: Helen Li <xunjieli@chromium.org>
Date: Fri Jan 05 15:42:49 2018

Fix shared_android_state.py to pass in correct number of arguments

shared_android_state.py calls self._test.DidRunStory() with one argument.
It should pass in two arguments instead.

Bug:  chromium:763998 
Change-Id: I57dfef9332238df54230df3ee5f7174c14ebc0ee
Reviewed-on: https://chromium-review.googlesource.com/850914
Reviewed-by: Ned Nguyen <nednguyen@google.com>
Commit-Queue: Helen Li <xunjieli@chromium.org>

[modify] https://crrev.com/798c8ca64addef6972f820f3762a26bca3ade74d/telemetry/telemetry/android/shared_android_state.py

Project Member

Comment 7 by bugdroid1@chromium.org, Jan 5 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/tools/build/+/1309183e251de90b3c518658d57fccf5fe26a741

commit 1309183e251de90b3c518658d57fccf5fe26a741
Author: Helen Li <xunjieli@chromium.org>
Date: Fri Jan 05 17:59:17 2018

Run perf tests on cronet perf bot

This Cl patches over pauljensen@'s CL at
https://codereview.chromium.org/1292783004/.

Bug:763998
Change-Id: If7927e7bde4ed8849a739a81c84bc621e8416aec
Reviewed-on: https://chromium-review.googlesource.com/851192
Reviewed-by: Misha Efimov <mef@chromium.org>
Commit-Queue: Helen Li <xunjieli@chromium.org>

[modify] https://crrev.com/1309183e251de90b3c518658d57fccf5fe26a741/scripts/slave/recipes/cronet.expected/android_cronet_marshmallow_64bit_perf.json
[modify] https://crrev.com/1309183e251de90b3c518658d57fccf5fe26a741/scripts/slave/recipe_modules/cronet/examples/full.expected/gn_test.json
[modify] https://crrev.com/1309183e251de90b3c518658d57fccf5fe26a741/scripts/slave/recipe_modules/cronet/examples/full.expected/local_test.json
[modify] https://crrev.com/1309183e251de90b3c518658d57fccf5fe26a741/scripts/slave/README.recipes.md
[modify] https://crrev.com/1309183e251de90b3c518658d57fccf5fe26a741/scripts/slave/recipes/cronet.py
[modify] https://crrev.com/1309183e251de90b3c518658d57fccf5fe26a741/scripts/slave/recipe_modules/cronet/examples/full.expected/mb_test.json
[modify] https://crrev.com/1309183e251de90b3c518658d57fccf5fe26a741/scripts/slave/recipe_modules/cronet/examples/full.py
[modify] https://crrev.com/1309183e251de90b3c518658d57fccf5fe26a741/scripts/slave/recipe_modules/cronet/api.py

Cc: pauljensen@chromium.org
Labels: -Pri-1 -M-64 M-66 Pri-2
Paul, looks like now the bot fails to configure network.  Any suggestion?


https://build.chromium.org/deprecated/chromium.android/builders/Android%20Cronet%20Marshmallow%2064bit%20Perf/builds/13727

Traceback (most recent call last):
  <module> at /b/build/slave/Android_Cronet_Marshmallow_64bit_Perf/build/src/components/cronet/android/test/javaperftests/run.py:351
    main()
  main at /b/build/slave/Android_Cronet_Marshmallow_64bit_Perf/build/src/components/cronet/android/test/javaperftests/run.py:316
    GetAndroidRndisConfig(device))
  GetAndroidRndisConfig at /b/build/slave/Android_Cronet_Marshmallow_64bit_Perf/build/src/components/cronet/android/test/javaperftests/run.py:134
    return android_rndis_forwarder.AndroidRndisConfigurator(device)
  __init__ at /b/build/slave/Android_Cronet_Marshmallow_64bit_Perf/build/src/components/cronet/android/test/javaperftests/android_rndis_forwarder.py:152
    self._CheckConfigureNetwork()
  _CheckConfigureNetwork at /b/build/slave/Android_Cronet_Marshmallow_64bit_Perf/build/src/components/cronet/android/test/javaperftests/android_rndis_forwarder.py:492
    self._ConfigureNetwork(device_iface, host_iface)
  _ConfigureNetwork at /b/build/slave/Android_Cronet_Marshmallow_64bit_Perf/build/src/components/cronet/android/test/javaperftests/android_rndis_forwarder.py:402
    self._WriteProtectedFile(self._NETWORK_INTERFACES, interfaces)
  _WriteProtectedFile at /b/build/slave/Android_Cronet_Marshmallow_64bit_Perf/build/src/components/cronet/android/test/javaperftests/android_rndis_forwarder.py:204
    'echo -e "%s" > %s' % (contents, file_path)])
  check_call at /usr/lib/python2.7/subprocess.py:540
    raise CalledProcessError(retcode, cmd)
CalledProcessError: Command '['/usr/bin/sudo', 'bash', '-c', 'echo -e "# This file describes the network interfaces available on your system\n# and how to activate them. For more information, see interfaces(5).\n\n# The loopback network interface\nauto lo\niface lo inet loopback\n\n# The primary network interface\nauto em1\niface em1 inet dhcp\n\n\n# Added by Telemetry.\nsource /etc/network/interfaces.d/*.conf" > /etc/network/interfaces']' returned non-zero exit status 1
Locals:
  cmd       : ['/usr/bin/sudo', 'bash', '-c', 'echo -e "# This file describes the network interfaces available on your system\n# and how to activate them. For more information, see interfaces(5).\n\n# The loopback network interface\nauto lo\niface lo inet loopback\n\n# The primary network interface\nauto em1\niface em1 inet dhcp\n\n\n# Added by Telemetry.\nsource /etc/network/interfaces.d/*.conf" > /etc/network/interfaces']
  kwargs    : {}
  popenargs : (['/usr/bin/sudo', 'bash', '-c', 'echo -e "# This file describes the network interfaces available on your system\n# and how to activate them. For more information, see interfaces(5).\n\n# The loopback network interface\nauto lo\niface lo inet loopback\n\n# The primary network interface\nauto em1\niface em1 inet dhcp\n\n\n# Added by Telemetry.\nsource /etc/network/interfaces.d/*.conf" > /etc/network/interfaces'],)
  retcode   : 1
step returned non-zero exit code: 1
That command requires root.  We'll need to log into bot and run it once.  I used to have SSH permissions on the bot.  I'll give it a try later.
Thanks! I tried to run this on the bot, but got an access denied error:

chrome-bot@build88-b1:(Linux 14.04):~$ sudo bash -c echo -e "# This file describes the network interfaces available on your system\n# and how to activate them. For more information see interfaces(5).\n\n# The loopback network interface\nauto lo\niface lo inet loopback\n\n# The primary network interface\nauto em1\niface em1 inet dhcp\n\n\n# Added by Telemetry.\nsource /etc/network/interfaces.d/*.conf" > /etc/network/interfaces
-bash: /etc/network/interfaces: Permission denied
I think you need some perens, so the sudo'ed bash is the one redirecting the echo output into the /etc/network/interfaces, not your user.  I think there are more commands that must be run sudo'ed too.
I think I was successfully able to get the sudo commands run properly.  My technique was:
1. first run some simple sudo command (e.g. "sudo ufw status") so that sudo doesn't ask for the password again for a few minutes
2. cd /b/build/slave/Android_Cronet_Marshmallow_64bit_Perf/build/src/components/cronet/android/test/javaperftests
3. ./run.py
You'll have to wait for the bot to finish building all the necessary pieces (it keeps clean building), e.g. out/Release/apks/CronetPerfTest.apk and out/Release/quic_server
Hmm our build recipe is not quite right, somehow quic_server is build for arm64 not x86.  The bot is now failing because it cannot run quic_server.

$ file /b/build/slave/Android_Cronet_Marshmallow_64bit_Perf/build/src/out/Release/quic_server
/b/build/slave/Android_Cronet_Marshmallow_64bit_Perf/build/src/out/Release/quic_server: ELF 64-bit LSB  shared object, ARM aarch64, version 1 (SYSV), dynamically linked (uses shared libs), BuildID[sha1]=3e74ed0c0610703db193560b8c00aa4f112fcc36, stripped
Thanks for the help! I will look into the arm64 vs x86 problem.
I think we need a generate_build_files step after the extra runhooks step.
Project Member

Comment 17 by bugdroid1@chromium.org, Jan 8 2018

Project Member

Comment 19 by bugdroid1@chromium.org, Jan 8 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b418e16086695634e71d8e88c31b74979d5f471c

commit b418e16086695634e71d8e88c31b74979d5f471c
Author: Helen Li <xunjieli@chromium.org>
Date: Mon Jan 08 22:06:20 2018

[cronet] Use custom results format and directory for cronet perf script

This CL passes through two results options to benchmark runner.
(1) --output-format so perf bot can use chartjson format to upload data to
perf dashboard.
(2) --output-dir so perf bot can write out the results file to a temp dir.

Bug:  763998 
Cq-Include-Trybots: master.tryserver.chromium.android:android_cronet_tester
Change-Id: I9c5e6d9921d8b76d3f0959793e6b79ca179aa9a8
Reviewed-on: https://chromium-review.googlesource.com/854818
Reviewed-by: Paul Jensen <pauljensen@chromium.org>
Commit-Queue: Helen Li <xunjieli@chromium.org>
Cr-Commit-Position: refs/heads/master@{#527775}
[modify] https://crrev.com/b418e16086695634e71d8e88c31b74979d5f471c/components/cronet/android/test/javaperftests/run.py

Project Member

Comment 20 by bugdroid1@chromium.org, Jan 9 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/37f519f3aa7419a9ad1d8d78845aad6f168aca48

commit 37f519f3aa7419a9ad1d8d78845aad6f168aca48
Author: Helen Li <xunjieli@chromium.org>
Date: Tue Jan 09 14:13:10 2018

[cronet] Add a no-op implementation for DidRunStory

The parent implementation of CronetPerfTestMeasurement calls into
tracing_controller. Our perf bot complains that it cannot find the
tracing_controller attribute.

This CL adds a no-op implementation to avoid that error.

Bug:  763998 
Cq-Include-Trybots: master.tryserver.chromium.android:android_cronet_tester
Change-Id: I2c798fc0c93c43e7c6e7442a581ce25a3a260f1c
Reviewed-on: https://chromium-review.googlesource.com/855117
Reviewed-by: Paul Jensen <pauljensen@chromium.org>
Commit-Queue: Helen Li <xunjieli@chromium.org>
Cr-Commit-Position: refs/heads/master@{#527983}
[modify] https://crrev.com/37f519f3aa7419a9ad1d8d78845aad6f168aca48/components/cronet/android/test/javaperftests/run.py

Project Member

Comment 21 by bugdroid1@chromium.org, Jan 12 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/tools/build/+/6f59ae5e4b340352db9cc3ff2e1b70b36f99a0eb

commit 6f59ae5e4b340352db9cc3ff2e1b70b36f99a0eb
Author: Helen Li <xunjieli@chromium.org>
Date: Fri Jan 12 15:49:22 2018

[cronet] Upload perf results to perf dashboard

This CL follows the instruction at
https://github.com/catapult-project/catapult/blob/master/dashboard/docs/data-format.md
to upload data to perf dashboard.

TBR=mef@chromium.org

Bug:  763998 
Change-Id: Ib8477a884c6955e678387becb6eb496391f019bc
Reviewed-on: https://chromium-review.googlesource.com/855017
Reviewed-by: Helen Li <xunjieli@chromium.org>
Commit-Queue: Helen Li <xunjieli@chromium.org>

[modify] https://crrev.com/6f59ae5e4b340352db9cc3ff2e1b70b36f99a0eb/scripts/slave/recipe_modules/cronet/__init__.py
[modify] https://crrev.com/6f59ae5e4b340352db9cc3ff2e1b70b36f99a0eb/scripts/slave/recipes/cronet.expected/android_cronet_marshmallow_64bit_perf.json
[modify] https://crrev.com/6f59ae5e4b340352db9cc3ff2e1b70b36f99a0eb/scripts/slave/recipe_modules/cronet/examples/full.expected/gn_test.json
[modify] https://crrev.com/6f59ae5e4b340352db9cc3ff2e1b70b36f99a0eb/scripts/slave/recipe_modules/cronet/examples/full.expected/local_test.json
[modify] https://crrev.com/6f59ae5e4b340352db9cc3ff2e1b70b36f99a0eb/scripts/slave/README.recipes.md
[modify] https://crrev.com/6f59ae5e4b340352db9cc3ff2e1b70b36f99a0eb/scripts/slave/recipes/cronet.py
[modify] https://crrev.com/6f59ae5e4b340352db9cc3ff2e1b70b36f99a0eb/scripts/slave/recipe_modules/cronet/examples/full.expected/mb_test.json
[modify] https://crrev.com/6f59ae5e4b340352db9cc3ff2e1b70b36f99a0eb/scripts/slave/recipe_modules/cronet/examples/full.py
[modify] https://crrev.com/6f59ae5e4b340352db9cc3ff2e1b70b36f99a0eb/scripts/slave/recipe_modules/cronet/api.py

Cc: bsazonov@chromium.org jbudorick@chromium.org
 Issue 801599  has been merged into this issue.
Project Member

Comment 23 by bugdroid1@chromium.org, Jan 12 2018

The following revision refers to this bug:
  https://chrome-internal.googlesource.com/infra/puppet/+/26b236e575ebdc369e06993b00d5c5d8c5a91e42

commit 26b236e575ebdc369e06993b00d5c5d8c5a91e42
Author: Helen Li <xunjieli@google.com>
Date: Fri Jan 12 19:45:34 2018

Now we just need to wait for service-account-cronet-perf.json to be pushed to the bot. Internal documentation says it should happen "at some point."
Project Member

Comment 26 by bugdroid1@chromium.org, Jan 12 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/tools/build/+/e11a8903f42b8b054a6a7d526416f705083babde

commit e11a8903f42b8b054a6a7d526416f705083babde
Author: Helen Li <xunjieli@chromium.org>
Date: Fri Jan 12 21:40:52 2018

[cronet] add two missing flags to cronet recipe

--got_revision_cp and --git_revision are required by
upload_perf_dashboard_results.py

TBR=pauljensen@chromium.org

Bug:763998
Change-Id: Idf84a06745a172f6dca969c21b3afc8c66fe009e
Reviewed-on: https://chromium-review.googlesource.com/865574
Reviewed-by: Helen Li <xunjieli@chromium.org>
Commit-Queue: Helen Li <xunjieli@chromium.org>

[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipes/cronet.expected/android_cronet_armv6_builder.json
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipes/cronet.expected/android_cronet_builder__dbg_.json
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipes/cronet.expected/android_cronet_x86_builder.json
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipes/cronet.expected/android_cronet_marshmallow_64bit_perf.json
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipe_modules/cronet/examples/full.expected/gn_test.json
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipes/cronet.expected/android_cronet_arm64_builder.json
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipes/cronet.expected/android_cronet_marshmallow_64bit_builder.json
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipe_modules/cronet/examples/full.expected/local_test.json
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipes/cronet.expected/local_test.json
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipes/cronet.expected/android_cronet_kitkat_builder.json
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipes/cronet.py
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipe_modules/cronet/examples/full.expected/mb_test.json
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipes/cronet.expected/android_cronet_lollipop_builder.json
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipes/cronet.expected/android_cronet_x86_builder__dbg_.json
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipes/cronet.expected/android_cronet_arm64_builder__dbg_.json
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipe_modules/cronet/examples/full.py
[modify] https://crrev.com/e11a8903f42b8b054a6a7d526416f705083babde/scripts/slave/recipe_modules/cronet/api.py

bot is finally happy. It started reporting data to perf dashboard: https://chromeperf.appspot.com/report?sid=1a7cf4cd8888b5575f9b8e82a82b9ed5dccc857d68da6e6a4621c4f3cc72297e

Project Member

Comment 30 by bugdroid1@chromium.org, Jan 16 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/tools/build/+/f70cb48d9c97c21addbd1ffef84ad880c94c5aa0

commit f70cb48d9c97c21addbd1ffef84ad880c94c5aa0
Author: Helen Li <xunjieli@chromium.org>
Date: Tue Jan 16 15:33:10 2018

[cronet] Skip sizes.py for Cronet perf bot

To reduce cycle time, we can skip sizes.py for Cronet perf bot.
There is already a bot which reports sizes with the same configuration as
the perf bot.

R=pauljensen@chromium.org

Bug:  763998 
Change-Id: Ie088dc76b5a2357c70f134886873e8ba395672ff
Reviewed-on: https://chromium-review.googlesource.com/868073
Reviewed-by: Paul Jensen <pauljensen@chromium.org>
Commit-Queue: Helen Li <xunjieli@chromium.org>

[modify] https://crrev.com/f70cb48d9c97c21addbd1ffef84ad880c94c5aa0/scripts/slave/README.recipes.md
[modify] https://crrev.com/f70cb48d9c97c21addbd1ffef84ad880c94c5aa0/scripts/slave/recipes/cronet.py
[modify] https://crrev.com/f70cb48d9c97c21addbd1ffef84ad880c94c5aa0/scripts/slave/recipes/cronet.expected/android_cronet_marshmallow_64bit_perf.json

Labels: -M-66 M-65
Status: Fixed (was: Assigned)
Closing this now. I will wait for a few days for the graphs to stabilize before requesting monitoring of the test suite. I will see if we can include a brief explanation of these metrics in our sheriff doc.

Sign in to add a comment