So that these can be built independently from the large sdk zip. The old
Make-based implementation created this as part of the large sdk zip,
then extracted it from that zip file.
This topic only adds the new definitions under a different filename,
full replacement will come in a follow-on CL.
Once we fully transitions to this mechanism, we'll be able to turn down
most modules on Macs, only building these and their dependencies.
Bug: 187222815
Change-Id: If6be8dd573a323ef8b343bc86116ffa3d43922a5
Use vuex to store the otaConfig, now the history configurations can be
reused in the job detail page. Also the targetBuilds, incrementalSources
are not stored in vuex as well. Once the targetBuilds are chosen, it
will not lose the states when switching the tab between singleOTA,
batchOTA and chainOTA.
Test: npm run test:unit
Change-Id: I563ac0c79fd0cedd5e71e8722b956545f6624551
The extra space in args['extra'] may cause the ota generation fail.
Test: python test_ota_interface.py -v
Change-Id: Iac6d06a89c52ab7554e54c08e5e04496b3da730a
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
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
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
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
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
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
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
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
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
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