History log of /fuchsia/zircon/system/utest/cobalt-client/histogram_test.cpp
Revision Date Author Comments
# 4528ba97 06-Sep-2018 Gianfranco Valentino <gevalentino@gevalentino.mtv.corp.google.com>

[cobalt-client]: Public histogram

This is the public interface for histograms that will record data.
Users are not able to instantiate them directly, this will be done
through a peer, that will be in charge of collecting the data, and
pushing it to Cobalt.

This has two benefits, we can own the memory used for this data
structures, plus instatiation is private so updates are more isolated.

Note: Updated reverse_map so that bucket 0 lower bound is -DBL_MAX,
this we satisfy that bucket_0 = map(reverse_map(0)) which did not
happen with infinity.

TESTS=cobalt-client-tests, new_tests*150k with 0 fails.

Change-Id: Ief79dd768229ddb95c9b285b627ae5ecc55abc8b


# 423c26b2 29-Aug-2018 Gianfranco Valentino <gevalentino@gevalentino.mtv.corp.google.com>

[cobalt-client]: Update for cobalt2.fidl.

Update internal data to use a representation compatible with
cobalt2.fidl. This is, no ObservationPart or Value, and dimensions
are represented as a pair of ints, depicting an event type and
an index within the given event type.

Until multiple dimensions are supported, we can assume one index being
passed.

TESTS=cobalt-client-tests

Change-Id: Ia4afb4015c38aeeda4152a043c8997e89f4d6efe


# 2f410df1 09-Aug-2018 Gianfranco Valentino <gevalentino@gevalentino.mtv.corp.google.com>

[cobalt-client]: Refactor Histogram.

Break down BaseHistogram into a RemoteHistogram and
a collection of buckets. RemoteHistogram is the equivalent of a
cobalt metric which holds additional data. The BaseHistogram
just provides the buckets and the API to interact with it.

TEST=cobalt-client-tests

Change-Id: I9df29c89d51d74535096438c385fea04d6d432d2


# 241abe18 07-Aug-2018 Gianfranco Valentino <gevalentino@gevalentino.mtv.corp.google.com>

[cobalt-client]: Refactor types.

Some moves were not picked up by git.
Counter is now just a public wrapper for the private implementation,
Histogram will do the same later. Private headers remain, so
internal tests can be written.

Remote* types refer to a Cobalt metric. Later the local types
can be added. The difference is that the local type only expose metrics locally
and on realtime, while remote type exposes what has not yet been flushed.

Internal headers are in *-internal.h, using PIMPL to avoid pulling
cobalt specific fidl header, and internal classes for clients.

The Remote/Local separation also provides clear responsibilities,
and the user only needs to 'Increment' a value. The histogram will
essentially be the same.

TEST=cobalt-client-tests

Change-Id: If6e856551a23d2ef1fd6645cb9a5e6130f6cae96


# 7185a877 02-Aug-2018 Gianfranco Valentino <gevalentino@gevalentino.mtv.corp.google.com>

[cobalt-client]: Fix test flakyness.

Increment the counter before notifying completion and
wait for flushing thread to complete. Flushing thread
waits for all other threads to finish, and is the only
unjoined thread.

ZX-2451

TEST=cobalt-client-test

Change-Id: Iead720ac561df20b638edd79ced1eb7cc442e9a1


# 0e949ee6 26-Jun-2018 gevalentino <gevalentino@gevalentino0.mtv.corp.google.com>

[cobalt-client]: BaseHistogram and Counter for zircon.

Define a atomic Counter and BaseHistogram for zircon. All allocation
costs happen upfront when constructing the objects.

The Collector(TBI) will own the BaseHistogram and expose a Histogram
to the users that allows them increment and query the value of a given
bucket, etc.

TEST=cobalt_client_test

Change-Id: Iffcddca1b3f284776a655e201e1e5219c1246317