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

#####################################################################
# Cobalt Project: modular
#####################################################################

metric_definitions:

#####################################################################
# modular_lifetime_events
#
# We log each time one of the following events occurs. A maximum of
# one Booted* event is expected per power cycle and a maximum of one
# CreateSession* event is expected per user session.
#####################################################################
- id: 1
  metric_name: modular_lifetime_events
  metric_type: EVENT_OCCURRED
  metric_dimensions:
    # What kind of event occurred?
    - dimension: event_type
      event_codes:
        0: BootedToBaseMgr
        1: BootedToSessionMgr
        # A session was created where a new account ID was assigned.
        2: CreateSessionNewPersistentAccount
        # A session was created where a single random account ID
        # directory was successfully found.
        3: CreateSessionExistingPersistentAccount
        # A session was created where the account ID could not be
        # confirmed using the set of existing account directories.
        4: CreateSessionUnverifiablePersistentAccount
        # A session was created for an ephemeral account.
        5: CreateSessionNewEphemeralAccount
        # A session was created where the standard account ID = 0
        # directory was successfully found.
        6: CreateSessionExistingFixedAccount
        # A session was created where the standard account ID = 0
        # directory was successfully used, but others also existed.
        7: CreateSessionUnverifiableFixedAccount
      max_event_code: 10
  reports:
    #####################################################################
    # modular_lifetime_event_counts
    #
    # The total number of occurrences of each event type across the
    # fleet, for each day.
    #####################################################################
    - report_name: modular_lifetime_event_counts
      id: 1039746643 # legacy long report_id
      report_type: SIMPLE_OCCURRENCE_COUNT
      # Don't add any noise to observations. Report exact counts.
      local_privacy_noise_level: NONE
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL]
  meta_data:
    max_release_stage: GA
    expiration_date: "2021/03/24"

#####################################################################
# module_launch_time
#
# Each time a module is launched, we log its launch time in
# microseconds together with the launch's success status and the
# URL of the module.
#####################################################################
- id: 2
  metric_name: module_launch_time
  metric_type: ELAPSED_TIME
  metric_dimensions:
    # What was the status of the launch?
    - dimension: status
      event_codes:
        0: Success
        1: Failure
      max_event_code: 50
  reports:
    #####################################################################
    # module_launch_time_stats
    #
    # Statistics of the launch time of each module, across all launches
    # of that module in the fleet, for each day.
    #####################################################################
    - report_name: module_launch_time_stats
      id: 3123328019 # legacy long report_id
      report_type: NUMERIC_AGGREGATION
      # A file listing the module urls which may be logged as the
      # |component| field of an ElapsedTimeEvent for this report.
      candidate_file: fuchsia/modular/module_urls.txt
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL]
  meta_data:
    max_release_stage: GA
    expiration_date: "2021/03/24"

#####################################################################
# story_launch_time
#
# Each time a story is launched, we log its launch time in
# microseconds.
#####################################################################
- id: 3
  metric_name: story_launch_time
  metric_type: ELAPSED_TIME
  metric_dimensions:
    # What was the status of the launch?
    - dimension: status
      event_codes:
        0: Success
        1: Failure
      max_event_code: 50
  reports:
    #####################################################################
    # story_launch_time_stats
    #
    # Statistics of the story launch time across the fleet, for each day.
    #####################################################################
    - report_name: module_launch_time_stats
      id: 3123328019 # legacy long report_id
      report_type: NUMERIC_AGGREGATION
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL]
  meta_data:
    max_release_stage: GA
    expiration_date: "2021/03/24"

#####################################################################
# session_agent_events
#
# We log a count of "1" each time a significant session agent event
# occurs, along with the type of the event and the URL of the agent.
#####################################################################
- id: 4
  metric_name: session_agent_events
  metric_type: EVENT_COUNT
  metric_dimensions:
    # What type of event occurred?
    - dimension: event_type
      event_codes:
        0: Crash
        1: CrashLimitExceeded
      max_event_code: 50
  reports:
    #####################################################################
    # session_agent_events
    #
    # Statistics of the number of occurrences of each event type across
    # the fleet, for each session agent, for each day.
    #####################################################################
    - report_name: session_agent_event_count_stats
      id: 957282360 # legacy long report_id
      report_type: NUMERIC_AGGREGATION
      # A file listing the module urls which may be logged as the
      # |component| field of a CountEvent for this report.
      candidate_file: fuchsia/modular/session_agent_urls.txt
      system_profile_field: [BOARD_NAME, PRODUCT_NAME, SYSTEM_VERSION, CHANNEL]
  meta_data:
    max_release_stage: GA
    expiration_date: "2021/03/24"
