# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

##########################################################################
#  This file contains MetricDefinitions used in Logger tests.
#  It is compiled into all_report_types_test_registry.h, which is included
#  in testing_constants.h.
#
#  When editing this file, also update testing_constants.h with any
#  changes to report IDs or to local aggregation parameters.
##########################################################################

metric_definitions:

- id: 1
  metric_name: "ErrorOccurred"
  metric_type: EVENT_OCCURRED
  metric_dimensions:
    - dimension: FirstDimension
      max_event_code: 100
  reports:
    # Report ID: 3131160301
    - report_name: "ErrorCountsByCode"
      id: 1
      report_type: SIMPLE_OCCURRENCE_COUNT
      local_privacy_noise_level: SMALL

- id: 2
  metric_name: "ReadCacheHits"
  metric_type: EVENT_COUNT
  # One defined dimension with max_event_code set and no event_codes defined.
  metric_dimensions:
    - dimension: FirstDimension
      max_event_code: 111
  reports:
    # Report ID: 2845948340
    - report_name: "ReadCacheHitCounts"
      id: 2
      report_type: EVENT_COMPONENT_OCCURRENCE_COUNT
    - report_name: "ReadCacheHitHistograms"
      id: 3
      report_type: INT_RANGE_HISTOGRAM
    - report_name: "ReadCacheHitStats"
      id: 4
      report_type: NUMERIC_AGGREGATION

- id: 3
  metric_name: "ModuleLoadTime"
  metric_type: ELAPSED_TIME
  # No metric dimensions defined.
  reports:
    # Report ID: 643534882
    - report_name: "ModuleLoadTime_Aggregated"
      id: 5
      report_type: NUMERIC_AGGREGATION
    # Report ID: 1259152485
    - report_name: "ModuleLoadTime_Histogram"
      id: 6
      report_type: INT_RANGE_HISTOGRAM
    # Report ID: 916724603
    - report_name: "ModuleLoadTime_RawDump"
      id: 7
      report_type: NUMERIC_PERF_RAW_DUMP

- id: 4
  metric_name: "LoginModuleFrameRate"
  metric_type: FRAME_RATE
  # One defined dimension with max_event_code not set and one
  # event_code defined.
  metric_dimensions:
    - dimension: FirstDimension
      event_codes:
        45: CODE
  reports:
    # Report ID: 1444372300
    - report_name: "LoginModuleFrameRate_Aggregated"
      id: 8
      report_type: NUMERIC_AGGREGATION
    # Report ID: 81821186
    - report_name: "LoginModuleFrameRate_Histogram"
      id: 9
      report_type: INT_RANGE_HISTOGRAM
    # Report ID: 1067664280
    - report_name: "LoginModuleFrameRate_RawDump"
      id: 10
      report_type: NUMERIC_PERF_RAW_DUMP
    # Report ID: 63534081
    - report_name: "LoginModuleFrameRate_PerDeviceMin"
      id: 11
      report_type: PER_DEVICE_NUMERIC_STATS
      aggregation_type: MIN
      window_size:
        - 1
        - 7

- id: 5
  metric_name: "LedgerMemoryUsage"
  metric_type: MEMORY_USAGE
  # Two metric dimensions defined
  metric_dimensions:
    # The first dimension has max_event_code set
    - dimension: FirstDimension
      event_codes:
        45: CODE45
      max_event_code: 100
    # The second dimension does not have max_event_code set
    - dimension: SecondDimension
      event_codes:
        46: CODE46
        47: CODE47
  reports:
    # Report ID: 4291656504
    - report_name: "LedgerMemoryUsage_Aggregated"
      id: 12
      report_type: NUMERIC_AGGREGATION
    # Report ID: 253462951
    - report_name: "LedgerMemoryUsage_Histogram"
      id: 13
      report_type: INT_RANGE_HISTOGRAM
    - report_name: "LedgerMemoryUsage_PerDeviceMax"
      id: 14
      report_type: PER_DEVICE_NUMERIC_STATS
      aggregation_type: MAX
      window_size:
        - 1
        - 7

- id: 6
  metric_name: "FileSystemWriteTimes"
  metric_type: INT_HISTOGRAM
  metric_dimensions:
    - event_codes:
        47: CODE
  int_buckets:
     linear:
       floor: 0
       num_buckets: 10
       step_size: 1
  reports:
    # Report ID: 1534862846
    - report_name: "FileSystemWriteTimes_Histogram"
      id: 15
      report_type: INT_RANGE_HISTOGRAM

- id: 7
  metric_name: "ModuleDownloads"
  metric_type: STRING_USED
  reports:
    # Report ID: 1447128111
    - report_name: "ModuleDownloads_HeavyHitters"
      id: 16
      report_type: HIGH_FREQUENCY_STRING_COUNTS
      local_privacy_noise_level: SMALL
      expected_population_size: 20000
      expected_string_set_size: 10000

- id: 8
  metric_name: "ModuleInstalls"
  metric_type: CUSTOM
  reports:
    # Report ID: 1219786724
    - report_name: "ModuleInstalls_DetailedData"
      id: 18
      report_type: CUSTOM_RAW_DUMP

- id: 9
  metric_name: "DeviceBoots"
  metric_type: EVENT_OCCURRED
  metric_dimensions:
    - max_event_code: 1
  reports:
    # Report ID: 131134909
    - report_name: "DeviceBoots_UniqueDevices"
      id: 19
      report_type: UNIQUE_N_DAY_ACTIVES
      local_privacy_noise_level: SMALL
      window_size:
        - 1

- id: 10
  metric_name: "FeaturesActive"
  metric_type: EVENT_OCCURRED
  metric_dimensions:
    - max_event_code: 4
  reports:
    # Report ID: 635837989
    - report_name: "FeaturesActive_UniqueDevices"
      id: 20
      report_type: UNIQUE_N_DAY_ACTIVES
      local_privacy_noise_level: LARGE
      window_size:
        - 1
        - 7
        - 30

- id: 11
  metric_name: "EventsOccurred"
  metric_type: EVENT_OCCURRED
  metric_dimensions:
    - max_event_code: 4
  reports:
    # Report ID: 1203991176
    - report_name: "EventsOccurred_GlobalCount"
      id: 21
      report_type: SIMPLE_OCCURRENCE_COUNT
      local_privacy_noise_level: SMALL
    # Report ID: 1444372300
    - report_name: "EventsOccurred_UniqueDevices"
      id: 22
      report_type: UNIQUE_N_DAY_ACTIVES
      local_privacy_noise_level: MEDIUM
      window_size:
        - 1
        - 7

- id: 12
  metric_name: "SettingsChanged"
  metric_type: EVENT_COUNT
  metric_dimensions:
    - event_codes:
        0: SettingA
        1: SettingB
        2: SettingC
  reports:
    # Report ID: 2024497361
    - report_name: "SettingsChanged_PerDeviceCount"
      id: 23
      report_type: PER_DEVICE_NUMERIC_STATS
      aggregation_type: SUM
      window_size:
        - 7
        - 30

- id: 13
  metric_name: "ConnectionFailures"
  metric_type: EVENT_COUNT
  metric_dimensions:
    - event_codes:
        0: ErrorCode0
        1: ErrorCode1
        2: ErrorCode2
  reports:
    # Report ID: 2973951499
    - report_name: "ConnectionFailures_GlobalCount"
      id: 24
      report_type: EVENT_COMPONENT_OCCURRENCE_COUNT
    # Report ID: 1059892875
    - report_name: "ConnectionFailures_PerDeviceCount"
      id: 25
      report_type: PER_DEVICE_NUMERIC_STATS
      aggregation_type: SUM
      window_size:
        - 1

- id: 14
  metric_name: "StreamingTime"
  metric_type: ELAPSED_TIME
  metric_dimensions:
    - event_codes:
        0: StreamTypeA
        1: StreamTypeB
        2: StreamTypeC
  reports:
    # Report ID: 2917574296
    - report_name: "StreamingTime_PerDeviceTotal"
      id: 26
      report_type: PER_DEVICE_NUMERIC_STATS
      aggregation_type: SUM
      window_size:
        - 1
        - 7
    # Report ID: 1177128518
    - report_name: "StreamingTime_PerDeviceMin"
      id: 27
      report_type: PER_DEVICE_NUMERIC_STATS
      aggregation_type: MIN
      window_size:
        - 1
        - 7
    # Report ID: 1042907624
    - report_name: "StreamingTime_PerDeviceMax"
      id: 28
      report_type: PER_DEVICE_NUMERIC_STATS
      aggregation_type: MAX
      window_size:
        - 1
        - 7

