Commit Graph

3546 Commits

Author SHA1 Message Date
Treehugger Robot
85501ae6e5 Merge "Add test to target_lib.py." am: f73c0f6138 am: 7a75be2c8b
Original change: https://android-review.googlesource.com/c/platform/development/+/1795808

Change-Id: I1358d1b24ed898cca973d5338df9cf157e8074b0
2021-08-17 17:53:28 +00:00
lishutong
54071681c8 Add test to target_lib.py.
Add test to two classes: BuildInfo and TargetLib. BuildInfo is a
dataclass which can store and parse Android Build informations from an
OTA package. TargetLib is a database interface which can be used to
store and extract BuildInfo.

Please refer to this CL for more details of these two classes:
https://android-review.googlesource.com/c/platform/development/+/1735315

Test: python test_target_lib.py -v
Change-Id: I3b2143af7f3708207b6c53744d903d3dcee92d55
2021-08-17 15:31:28 +00:00
Kelvin Zhang
d5764b5753 Merge "Fix a bug where small manifest isn't read" am: 62582263a2 am: 6750cd8b02
Original change: https://android-review.googlesource.com/c/platform/development/+/1792911

Change-Id: If724cf9d9bad6143f0534b5cf5512b5b9f5a23be
2021-08-12 18:32:03 +00:00
Kelvin Zhang
c05d0bd37c Fix a bug where small manifest isn't read
If a single read request contains the entire manifest, we will return
right after prefixLength is computed, and the UI just hangs there.

Test: load a small OTA pkg
Change-Id: Idb93fdba103f9c6e7b14974b45d1aecdb2ae9168
2021-08-12 10:32:07 -07:00
Treehugger Robot
3a894fb3c2 Merge "Add test to ota_interface.ProcessManagement." am: 4a5ee938da am: 85e6dea009
Original change: https://android-review.googlesource.com/c/platform/development/+/1793173

Change-Id: Iae4640fecea1f175dcc730c701c9cc26ded68f46
2021-08-12 17:15:09 +00:00
Treehugger Robot
307faa3b5f Merge "Add test to ota_interface.JobInfo." am: ba7d668e84 am: 42f7ba7bc8
Original change: https://android-review.googlesource.com/c/platform/development/+/1793172

Change-Id: Ia252d6871d21fcf010fe10db477ceb8f99d6be06
2021-08-12 14:24:21 +00:00
Treehugger Robot
4bb39c56da Merge changes I8449eea7,I24666871 am: 5d8768f2ca am: 303ca2baa8
Original change: https://android-review.googlesource.com/c/platform/development/+/1793171

Change-Id: I815ef03c93bec8be2340dc340d840895f47ecafe
2021-08-12 01:16:26 +00:00
lishutong
70026190c6 Add test to ota_interface.ProcessManagement.
The ProcessManagement helps initiate OTA generation processes and
monitor those processes. Add some test and comments to this class.
Please refer to:
https://android-review.googlesource.com/c/platform/development/+/1736940
for more details.

Test: python test_ota_interface.py -v
Change-Id: Ib22fca4c5a670f8b55db8a4175fef16d92eaceaf
2021-08-12 00:44:42 +00:00
lishutong
1e82f06150 Add test to ota_interface.JobInfo.
Add testcases for ota_interface.JobInfo, which is used as object to
store task information and serve/read data to/from database.
Refer to:
https://android-review.googlesource.com/c/platform/development/+/1736940
for more details.

Test: python test_ota_interface.py -v
Change-Id: I74dcb16390078bd9258da490e21cb2b73dd78e81
2021-08-11 20:45:23 +00:00
lishutong
ec3b42deea Fix a small bug when initialize a ota generation.
The os.path.join() will bring in an unwanted backslash.

Test: Tested by starting a new OTA generation process by calling
ota_interface.ota_generate directly.
Test: python test_ota_interface.py -v

Change-Id: I8449eea79303f5aff5188176538eca1291101dff
2021-08-11 20:24:55 +00:00
lishutong
400253b224 Add jest to dependency.
Jest is a JavaScript test framework. Test-utils is used to test vue
components.

No-Typo-Check: auto-generated artifacts

Test: npm run test.
Change-Id: I2466687120b96a3a393299d127c6d7e1f15204e7
2021-08-11 20:24:55 +00:00
Scott Lobdell
47bb7481cb Merge "Remove security vulnerability" am: 5f35ae5858 am: 966db3f188
Original change: https://android-review.googlesource.com/c/platform/development/+/1783572

Change-Id: I2436d03d3c49bc5aae053822f5548b8241c24738
2021-08-09 21:04:44 +00:00
Scott Lobdell
5f35ae5858 Merge "Remove security vulnerability" 2021-08-09 20:32:01 +00:00
Treehugger Robot
59259d215e Merge changes Ib6be1671,I08c5ab16 am: 1ca6a33b31 am: 967df69e84
Original change: https://android-review.googlesource.com/c/platform/development/+/1790887

Change-Id: I43a2f60567c797b134ef1e2bae394eb303c0c156
2021-08-09 19:42:04 +00:00
Treehugger Robot
7c9b9303c3 Merge "Add support for non-A/B OTA package in OTA_analysis." am: cda807f661 am: d8c5ba7abf
Original change: https://android-review.googlesource.com/c/platform/development/+/1784649

Change-Id: Ia596d71f59c1e874abc42bed35098e15580b1f14
2021-08-09 19:41:59 +00:00
lishutong
b9b565edb6 Add hint when user is using non-A/B OTA.
Disable the 'Analyse COW operation' button and add a tooltip 'This is
only supported in A/B OTA'.

Test: tested by non-A/B OTA package.
Change-Id: Ib6be1671f9106ee7e332cd2d0937c666a912a26e
2021-08-09 16:26:16 +00:00
lishutong
a00eafc419 Add support for move, bsdiff, imgdiff to OTA analyzer.
Now the OTA analyzer could properly parse the installation operations
like move, bsdiff, imgdiff in non-A/B packages. It still cannot properly
parse the stash and free operations. Which means any operation involve
stash-id cannot be parsed properly.

Test: tested by a non-A/B incremental OTA package.
Change-Id: I08c5ab162e8ed62ea3313ec53b4fa4577a28799a
2021-08-09 16:16:15 +00:00
lishutong
5bf9ad0eed Add support for non-A/B OTA package in OTA_analysis.
The non-A/B OTA package has a very different file system compared with
an OTA package. However, our OTA_analysis tool is based on the
update_metadata.proto. What we do here is try to convert the non-A/B OTA
package information, into a standard update_metadata.proto formated
manifest. The format and how the conversion works can be found in this
document:
https://docs.google.com/document/d/e/2PACX-1vRwMRodq4TCvTPEmlU6KL9vPSeFmEJjVXzq4PHhrB8tGy6oHFDJGCk3bIDA5Uv-4UEP0stLarBlhl2c/pub

In this CL, most of the information is successfully parsed, except
installation ops like stash, free, bsdiff, imgdiff, move. (anything
related to stash is not yet implemented)

Test: test by selecting a non-A/B OTA package.
Change-Id: I298f238395478422daece47cedbaa52a976d9f4c
2021-08-09 16:16:14 +00:00
Scott Lobdell
ff697a3f3a Remove security vulnerability
Bug: 193812251
Change-Id: I891cbf808791696566b01115e997cc29cba3e3e8
2021-08-02 19:31:45 +00:00
Kelvin Zhang
7c43b85a08 Merge "Support docker for ota generator" am: 091a8fb955 am: d2f6d63acd
Original change: https://android-review.googlesource.com/c/platform/development/+/1780768

Change-Id: Ie625a23636a1c9a58d31ac37bbe2f285d00ef671
2021-07-29 13:22:08 +00:00
Kelvin Zhang
d689350756 Support docker for ota generator
Test: docker run -it -p 8000:8000 -v target:/app/target -v
output:/app/output zhangxp1998/test:latest

Change-Id: Ife050e6a8c85f2d40aff82a752b19f27c2ab23c5
2021-07-28 22:44:34 -04:00
Treehugger Robot
d60a7bf334 Merge "Speed up the payload.bin read in process." am: 1a86d98b6e am: 261de8cf63
Original change: https://android-review.googlesource.com/c/platform/development/+/1777971

Change-Id: Id3330ed4f450df68740ff88feff51c35e37ab1c1
2021-07-29 02:03:36 +00:00
Kelvin Zhang
e5eb5c9d38 Speed up the payload.bin read in process.
A 700MiB OTA package now takes only 100ms to read in, compared with
7000ms previously. That's 70x faster.

When parsing the update_metadata in payload.bin, the entire file has to
be read in previously, because zip.js does not support partial read-in.
In fact, only a small portion of the payload.bin is update_metadata.
Reading the entire payload.bin not only slows down the process but also
occupy excessive memory.

The new class OTAPayloadBlobWriter (inherited from zip.Writer) will read
in the metadata (header, manifest, signature) and throw an StopIteration
exception when finished.

Test: open a large OTA package
Change-Id: Iebf8045325dae9a118d9d8ea5674872aa7c280c4
2021-07-28 23:38:51 +00:00
Treehugger Robot
97c97755ba Merge "Fix a compatibility issue: getBigUint64." am: 74232e7a3f am: 2daf325668
Original change: https://android-review.googlesource.com/c/platform/development/+/1781348

Change-Id: I7ac345518e30dcc8cb7929e89518ab6b160b3442
2021-07-28 22:15:34 +00:00
lishutong
ff2b99cd89 Fix a compatibility issue: getBigUint64.
The method getBigUint64 is not supported by safari until version 15:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView/getBigUint64
This CL mannual reload this method.

Test: Mannual tested.
Change-Id: I1d967eda93f9f628fb7f0f5d9f90efb92429ed5e
2021-07-28 20:31:37 +00:00
Treehugger Robot
e71ef39842 Merge changes I36beff43,Iab7275b9 am: 503e12a866 am: 4d21078ab9
Original change: https://android-review.googlesource.com/c/platform/development/+/1781347

Change-Id: Ibc02cc4e8879b290f5826f691a21f8bf400cb291
2021-07-28 20:10:50 +00:00
Treehugger Robot
49da6642eb Merge "Add prebuild and postbuild info to OTA_analysis." am: afcbcc7149 am: 2b8dd5e2b4
Original change: https://android-review.googlesource.com/c/platform/development/+/1779885

Change-Id: I12447e612c6e8191feadf72482a9edf8aefadd1b
2021-07-28 20:10:43 +00:00
lishutong
30f991bf6e Fix a bug: redirect to homepage for some url.
In a single page application, the url sometimes does not correspond to
the actual resources on the server. Thus, it might cause 404 when users
refresh the page. By redirecting this kind of url back to the homepage,
the proper page can be rendered. If the url does not exist, the front
end will redirect to a Not Found page.

Test: mannual tested.
Change-Id: I36beff436a450ae7fcabe9172df9c7cc217d7305
2021-07-28 18:14:35 +00:00
lishutong
c4b3dd1aef Fix a bug: multiple flags in ota generator.
Previously, when multiple extra flags are set, the subprocess.run
can start generation properly. Now this is fixed.

Test: mannual tested.
Change-Id: Iab7275b9058a088d1fafd8c445c7f0775626c1ba
2021-07-28 17:51:31 +00:00
lishutong
ad6b75df3d Add prebuild and postbuild info to OTA_analysis.
The metadata file in ota package contains prebuild and postbuild info,
now the basic info section will display those.

Test: mannual tested.
Change-Id: I264fe656ff6fab42d5161100c04210ab9a94c7a0
2021-07-28 17:51:29 +00:00
Treehugger Robot
235a534f1b Merge changes I5801bcc3,Ib2290546 am: 1584123dbb am: 9bca36aeee
Original change: https://android-review.googlesource.com/c/platform/development/+/1779346

Change-Id: I158327aac40b17d516c7a721dadd788e85ae63d9
2021-07-27 14:23:45 +00:00
lishutong
2232234d48 Remove the look behind regex for Safari.
The lookbehind/lookahead regular expression is not supported in safari
yet. (https://caniuse.com/js-regexp-lookbehind) Removed it for
compatibility reason.

Test: manual tested.
Change-Id: I5801bcc389b20df31175adbb8a841eb1d31703aa
2021-07-27 03:40:33 +00:00
lishutong
a3c85492cc Change the url to lowercase.
Test: mannual tested.
Change-Id: Ib22905462aa47aeaa700407fe5b90e3261d0b3a3
2021-07-27 03:33:48 +00:00
Treehugger Robot
0a461d9383 Merge "Add a demo page in OTA_analyzer." am: ceadd4cff1 am: 4c11f8c6e0
Original change: https://android-review.googlesource.com/c/platform/development/+/1778765

Change-Id: I258169f4a44674e835ef8b1f38dec5f2b6249dbc
2021-07-26 21:14:57 +00:00
Treehugger Robot
ceadd4cff1 Merge "Add a demo page in OTA_analyzer." 2021-07-26 20:39:20 +00:00
lishutong
cdf499330d Add a demo page in OTA_analyzer.
Please put an ota package and its target build as cf_x86_demo.zip and
cf_x86_target_file_demo into this directory: /public/files/

This OTA package and target build do not have to be complete - only the
manifest part in OTA package and .map files in target build are
necessary. The previous one can be generated using:
https://source.corp.google.com/android/vendor/google_tradefederation/contrib/src/com/google/android/tradefed/ota/util/PayloadUtil.java;l=196;bpv=1;bpt=1?q=PayloadUtil&sq=package:android
The following one can be generated by unzip and keep the .map files
only, zip again.

Add a demo page, now the user can view the complete function of
OTA_analyzer without uploading their own ota packages / android build.

Test: Mannual tested.
Change-Id: I7552e0222fc40e9a4b1aff9750f74cd3ed3f4feb
2021-07-26 17:51:51 +00:00
Treehugger Robot
da5830d990 Merge "Add support for chain OTA generation." am: 4895d0a8b4 am: d5b6e875b0
Original change: https://android-review.googlesource.com/c/platform/development/+/1776605

Change-Id: I629768bbec7e0d9f7ae4ad47c697c70ab3ab89d1
2021-07-26 17:29:50 +00:00
Treehugger Robot
b7b945a034 Merge "Add batch generation to OTAGUI." am: 2e1cfae4fd am: 2f8719ccad
Original change: https://android-review.googlesource.com/c/platform/development/+/1775726

Change-Id: I8a58ce94715ee7034827c6a4bf0b6e0a0f60edd7
2021-07-23 23:07:22 +00:00
lishutong
bb3bc961d4 Add support for chain OTA generation.
To upgrade from the Android version A to Android version D, one could
directly generate an OTA package from A to D. But chances are (a) this
OTA package can be large and unstable (b) there are multiple other
devices are on version B or C. So generation of chain OTA packages
(A-->B-->C-->D) can help life easier.

Users will be able to select and sort the Android build in
`ChainOTAOptions.vue` component, and submit multiple jobs at the same
time using a OTAConfiguration from `JobSubmission.js`.

Test: Mannual tested.
Change-Id: I9f16f981af80900c18a571162146ce218ea96387
2021-07-23 19:52:28 +00:00
lishutong
c4b6c3a7dd Add batch generation to OTAGUI.
Batch generation of OTA packages is a important feature
requested by googler and partners: please refer to go/ota-dashboard-doc.
Given n incremental source builds and m target builds,
batch generation will generate n x m OTA packages in total.
If n=0, full OTA package will be generated.

The front end will be taking in the source/target lists and send the
request to backend one-by-one.

Test: mannual tested.

Change-Id: I769359ee69c7aa8c71704c4e119c374635554dfb
2021-07-23 19:18:52 +00:00
Treehugger Robot
dd360e3272 Merge "Refactor the frontend for batch generation." am: 89e47defef am: 8f08ab906f
Original change: https://android-review.googlesource.com/c/platform/development/+/1775725

Change-Id: I16cc34cf94fc78d7e0e5e741b7295aeb7dfc04a3
2021-07-23 18:17:50 +00:00
lishutong
aaf2c7a933 Refactor the frontend for batch generation.
Following part has been modified:

1. Add tabs for selection between single generation and batch
generation. (src/components/JobConfigure.vue)

2. Change the data structure of OTAConfiguration, now it only records
the flags. The source/target build will be provided when submit jobs.
(src/services/JobSubmission.js)

3. Seperate the OTAOptions as a single component, which only takes in
the flags for backend. The selection of source/target build will be in a
seperate component. (src/components/OTAOptions.vue,
src/components/SingleOTAOptions.vue).

4. Now the partition selection can takes in more than one build, but
only show the partition list of first one. Later on, this will be able
to show the intersection of the partition lists from all given builds.
(src/components/PartialCheckbox.vue)

Point 1 enables the possibility of the dynamical loading of single/batch
ota generation pages. Point 2,3,4 allow the OTAOptions components to
be reused for batch generation.

Test: Mannual tested.
Change-Id: I1a29fa7c605596d717d19da25d31b81ce5b8fcba
2021-07-23 15:09:31 +00:00
Treehugger Robot
5d51e2905e Merge "Fix a bug that job might not be able to be started properly." am: c8c2db4db6 am: d46f1bf46a
Original change: https://android-review.googlesource.com/c/platform/development/+/1773226

Change-Id: Ia97fc623290b246705bafb32e2d1579cd968bde9
2021-07-20 21:37:59 +00:00
Treehugger Robot
c8c2db4db6 Merge "Fix a bug that job might not be able to be started properly." 2021-07-20 21:17:41 +00:00
Treehugger Robot
ea8c89a7f0 Merge "Add all possible flags to the front end." am: 2f5326c0d6 am: 0bfc59bfc4
Original change: https://android-review.googlesource.com/c/platform/development/+/1771648

Change-Id: I563cf8d6fdbb5f19cc46547bb149271fa0bf562a
2021-07-20 20:07:28 +00:00
Treehugger Robot
2f5326c0d6 Merge "Add all possible flags to the front end." 2021-07-20 19:28:33 +00:00
lishutong
f084110dbe Fix a bug that job might not be able to be started properly.
A variable name was mispelled and it could lead to jobs unable to be
started.

Test: Mannual tested.
Change-Id: I4067e2ae243428cb190463f55122b88d471f45f7
2021-07-20 18:27:07 +00:00
Kelvin Zhang
13e7f84a1a Merge changes I1e45d3ef,I4117f5d9 am: c37be89c82 am: 48666960dd
Original change: https://android-review.googlesource.com/c/platform/development/+/1772906

Change-Id: Ib892cf002e5a290f151b481b8f438efa4f8b9052
2021-07-20 18:17:59 +00:00
Logan Chien
8416619ba9 Merge "repo-review: Trim trailing slashes to avoid errors" am: 8ce5136cb5 am: 277c298174
Original change: https://android-review.googlesource.com/c/platform/development/+/1771795

Change-Id: I713ca4a1c8ce80b68a4701def3642afac75c5d50
2021-07-20 18:16:46 +00:00
Kelvin Zhang
c37be89c82 Merge changes I1e45d3ef,I4117f5d9
* changes:
  Show the old and new partition infos in OTA analysis.
  Change the look of cross emoji.
2021-07-20 16:41:04 +00:00