commit | 4085746fd1ab173c654485375282b5d33d4a23a6 | [log] [tgz] |
---|---|---|
author | Cameron Dale <camrdale@google.com> | Tue Feb 08 17:45:55 2022 +0000 |
committer | Commit Bot <commit-bot@chromium.org> | Tue Feb 08 17:45:55 2022 +0000 |
tree | f4de5e086cefa66f8a56c18399089c80a79bf9c4 | |
parent | d3ec689da04e97bd9444b7d6106c16efc4b6a7e0 [diff] |
Store system profiles in the local aggregate data. This change is the bulk of the implementation of the design for Cobalt 1.1 System Profile Storage. Included are: - deprecation of the old by_event_code field - a storage migration step from the old field to the new SystemProfileAggregates - using the SystemProfile stored in the EventRecord when updating aggregate data - getting the SystemProfile from the aggregate storage when generating observations - implementation of the flag to indicate that any missing system profile fields at observation generation time should be taken from the current system profile - using the current system profile at observation generation time when creating fabricated observations for local differential privacy Not included are: - implementation of REPORT_ALL support, though repeated SystemProfileAggregates are handled in some cases, TODOs are added for some of the additional work - implementation of MergeAggregateData on the AggregationProcedures, as it is not needed until REPORT_ALL is possible Bug: 91520 Change-Id: Ibdfa92a9f1989a0834dbda970237e8443b44b8d5 Reviewed-on: https://fuchsia-review.googlesource.com/c/cobalt/+/640826 Reviewed-by: Zach Bush <zmbush@google.com> Reviewed-by: Laura Peskin <pesk@google.com> Commit-Queue: Cameron Dale <camrdale@google.com>
Cobalt is a pipeline for collecting metrics data from user-owned devices in the field and producing aggregated reports.
Cobalt includes a suite of features for preserving user privacy and anonymity while giving product owners the data they need to improve their products.
The code in the Git repo at https://fuchsia.googlesource.com/cobalt is known as Cobalt Core. It contains:
In order to have a working Cobalt system you need to also have
//third_party/cobalt
.This document describes how to develop, build and test Cobalt Core independently of Fuchsia, as well as from in the Fuchsia tree.
To download just the Cobalt Core repo:
git clone https://fuchsia.googlesource.com/cobalt
cd cobalt
To download the entire Fuchsia source code, including Cobalt Core, follow the instructions. Then change into the Cobalt Core directory:
cd third_party/cobalt
./cobaltb.py setup
This command is required after a first checkout, before running any other cobaltb.py
commands, and will take a few minutes the first time. It does the following:
third_party
dir via Git submodules.sysroot
dir. This uses CIPD.If the ./cobaltb.py setup
command is run in the third_party/cobalt
checkout of Cobalt Core in a Fuchsia tree, the Git submodules may interfere with the correct functioning of Jiri to update the repos in the Fuchsia tree. If problems occur, the submodules can be removed with: ./cobaltb.py deinit
. Before running any other cobaltb.py
commands in this checkout, ./cobaltb.py setup
will need to be run again to refetch the submodules.
The Python script cobaltb.py
in the root directory is used to orchestrate building and testing Cobalt. It was already used above in ./cobaltb.py setup
.
./cobaltb.py -h
for general helpcobaltb.py <command> -h
for help on a command./cobaltb.py build
The Cobalt build uses GN and ninja.
./cobaltb.py test
This runs the tests from the currently built code (build
must be run first).
./cobaltb.py fmt
./cobaltb.py lint
See: clang-tidy for an explanation of clang-tidy configuration options.
If the Cobalt Core checkout is part of a Fuchsia tree, it can also be built using Fuchsia's tools. This can be done to test the Cobalt code changes build and function correctly in Fuchsia. However, the build/test/fmt/lint commands above should always be used before contributing a change to Cobalt Core.
fx build
In this way, the Cobalt Core and Fuchsia build systems can function correctly in parallel.
Cobalt uses the Gerrit code review tool. Although Cobalt Core is independent of Fuchsia, we do share infrastructure with Fucshia and so much of the instructions from Fuchsia's Contributing Guide apply to Cobalt Core. The main difference is that Cobalt Core does not use Jiri--it uses Git submodules instead.
Follow the instructions here.
To create a change in Gerrit do the following:
cd ~/cobalt
git checkout -b <branch_name>
git add <files>
git commit
git push origin HEAD:refs/for/main
See the Gerrit documentation for more information.
After creating a change, to upload a patch to your change, do the following:
git add <files>
--amend
option: git commit --amend
git push origin HEAD:refs/for/main