[perf UI] support incremental dataframe fetching

Adds enableIncrementalDataFrameFetch to State
  this boolean (default is false) is controlled by a checkbox
  in the top row of the explore-simple-sk control itself:
  https://screenshot.googleplex.com/3qBFLxfFpd7zaLV
  When this value is false, explore-simple-sk should behave
  exactly as it currently does without this CL.

Adds requestFrameBodyDeltaFromState(): FrameRequest
  this method will attempt to build a FrameRequest for the
  just the difference between what is currently in
  this._dataframe, and what is being requested according to
  this._state.{begin|end}.

Updates addTraces to handle incremental dataframe responses
  - attempts to preserve the existing zoom window bounds, with
    adjustments for the case of panning to the right
  - attempts to merge incoming dataframe with the existing dataframe
    if possible.

Changes how the spinner-sk element is positioned and displayed
  The spinner is now shown *over* the plot-sk element, with
  opactity: 0.5. Note: This change applies for all spinner activity,
  not just for cases when enableIncrementalDataFrameFetch is true.

Adds timestampBounds() to modules/dataframe
  this is a helper function to get the earliest and latest
  timestamps from the dataframe's header values.

Bug: b:296467659
Change-Id: I4439971d7277547f447f901eb9f401775b2d85c3
Reviewed-on: https://skia-review.googlesource.com/c/buildbot/+/768322
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Sean McCullough <seanmccullough@google.com>
8 files changed
tree: db7ff2223a2cbd2a19e432791a4ed79a04625d59
  1. am/
  2. android_ingest/
  3. android_stats/
  4. api/
  5. autoroll/
  6. bash/
  7. bazel/
  8. bisection/
  9. blamer/
  10. bugs-central/
  11. cabe/
  12. cd/
  13. cherrypick-watcher/
  14. cmd/
  15. codereview-watcher/
  16. codesize/
  17. comments/
  18. cq_watcher/
  19. ct/
  20. datahopper/
  21. debugger-app/
  22. demos/
  23. docker/
  24. docker_pushes_watcher/
  25. docs/
  26. docsyserver/
  27. ds/
  28. elements-sk/
  29. email/
  30. external/
  31. fiddlek/
  32. firestore/
  33. get_service_account/
  34. gitsync/
  35. go/
  36. gold-client/
  37. golden/
  38. helloworld/
  39. infra/
  40. infra-sk/
  41. jsdoc/
  42. jsfiddle/
  43. k8s-checker/
  44. k8s-deployer/
  45. kube/
  46. leasing/
  47. licenses/
  48. machine/
  49. make/
  50. modules/
  51. named-fiddles/
  52. new_element/
  53. npm-audit-mirror/
  54. perdiff/
  55. perf/
  56. periodic-trigger/
  57. proberk/
  58. promk/
  59. puppeteer-tests/
  60. sa-keys-checker/
  61. scrap/
  62. scripts/
  63. shaders/
  64. sk/
  65. skbug/
  66. skcq/
  67. skfe/
  68. skolo/
  69. skottie/
  70. static_server/
  71. status/
  72. task_driver/
  73. task_scheduler/
  74. test-service/
  75. tools/
  76. tree_status/
  77. trybot_updater/
  78. .bazelignore
  79. .bazelrc
  80. .bazelversion
  81. .eslintrc.js
  82. .gitattributes
  83. .gitignore
  84. .npmrc
  85. .prettierignore
  86. .prettierrc.json
  87. .puppeteerrc.js
  88. .vpython
  89. BAZEL_CHEATSHEET.md
  90. BUILD.bazel
  91. build_infra_prod.sh
  92. CDB.md
  93. cipd.ensure
  94. codereview.settings
  95. DATASTORE.md
  96. demopage.sh
  97. DEPS
  98. go.mod
  99. go.sum
  100. go_repositories.bzl
  101. karmatest.sh
  102. launch.md
  103. LICENSE
  104. Makefile
  105. OWNERS
  106. package-lock.json
  107. package.json
  108. PRESUBMIT.py
  109. PRIVACY_POLICY.md
  110. README.md
  111. STYLEGUIDE.md
  112. tools.go
  113. tsconfig.json
  114. whitespace.txt
  115. WORKSPACE
README.md

Skia-Buildbot Repository

This repo contains infrastructure code for Skia.

Getting the Source Code

The main source code repository is a Git repository hosted at https://skia.googlesource.com/buildbot.git. It is possible to check out this repository directly with git clone or via go get.

Using git clone allows you to work in whatever directory you want. You will still need to set GOPATH in order to build some apps (recommended to put this in a cache dir). E.g.:

$ cd ${WORKDIR}
$ git clone https://skia.googlesource.com/buildbot.git
$ export GOPATH=${HOME}/.cache/gopath/$(basename ${WORKDIR})
$ mkdir $GOPATH
$ cd buildbot

Install dependencies

Almost all applications are built with Bazel, and bazelisk is the recommended tool to ensure you have the right version of bazel installed:

go install github.com/bazelbuild/bazelisk@latest
go install github.com/bazelbuild/buildtools/buildifier@latest
go install github.com/kisielk/errcheck@latest
go install golang.org/x/tools/cmd/goimports@latest
go install github.com/mikefarah/yq/v4@latest
go install go.chromium.org/luci/client/cmd/...@latest

Install other dependencies:

sudo apt-get install jq

Build ~everything

bazelisk build --config=mayberemote //...

Test everything

bazelisk test --config=mayberemote //...

Generated Code

To update generated code run the following in any directory:

go generate ./...

Running unit tests

Install Cloud SDK.

Use this command to run the presubmit tests:

./run_unittests --small