# 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: 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

