普通文本  |  149行  |  4.61 KB

# Copyright 2018, The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""
Metrics class.
"""

import constants

from . import metrics_base

class AtestStartEvent(metrics_base.MetricsBase):
    """
    Create Atest start event and send to clearcut.

    Usage:
        metrics.AtestStartEvent(
            command_line='example_atest_command',
            test_references=['example_test_reference'],
            cwd='example/working/dir',
            os='example_os')
    """
    _EVENT_NAME = 'atest_start_event'
    command_line = constants.INTERNAL
    test_references = constants.INTERNAL
    cwd = constants.INTERNAL
    os = constants.INTERNAL

class AtestExitEvent(metrics_base.MetricsBase):
    """
    Create Atest exit event and send to clearcut.

    Usage:
        metrics.AtestExitEvent(
            duration=metrics_utils.convert_duration(end-start),
            exit_code=0,
            stacktrace='some_trace',
            logs='some_logs')
    """
    _EVENT_NAME = 'atest_exit_event'
    duration = constants.EXTERNAL
    exit_code = constants.EXTERNAL
    stacktrace = constants.INTERNAL
    logs = constants.INTERNAL

class FindTestFinishEvent(metrics_base.MetricsBase):
    """
    Create find test finish event and send to clearcut.

    Occurs after a SINGLE test reference has been resolved to a test or
    not found.

    Usage:
        metrics.FindTestFinishEvent(
            duration=metrics_utils.convert_duration(end-start),
            success=true,
            test_reference='hello_world_test',
            test_finders=['example_test_reference', 'ref2'],
            test_info="test_name: hello_world_test -
                test_runner:AtestTradefedTestRunner -
                build_targets:
                    set(['MODULES-IN-platform_testing-tests-example-native']) -
                data:{'rel_config':
                    'platform_testing/tests/example/native/AndroidTest.xml',
                    'filter': frozenset([])} -
                suite:None - module_class: ['NATIVE_TESTS'] -
                install_locations:set(['device', 'host'])")
    """
    _EVENT_NAME = 'find_test_finish_event'
    duration = constants.EXTERNAL
    success = constants.EXTERNAL
    test_reference = constants.INTERNAL
    test_finders = constants.INTERNAL
    test_info = constants.INTERNAL

class BuildFinishEvent(metrics_base.MetricsBase):
    """
    Create build finish event and send to clearcut.

    Occurs after the build finishes, either successfully or not.

    Usage:
        metrics.BuildFinishEvent(
            duration=metrics_utils.convert_duration(end-start),
            success=true,
            targets=['target1', 'target2'])
    """
    _EVENT_NAME = 'build_finish_event'
    duration = constants.EXTERNAL
    success = constants.EXTERNAL
    targets = constants.INTERNAL

class RunnerFinishEvent(metrics_base.MetricsBase):
    """
    Create run finish event and send to clearcut.

    Occurs when a single test runner has completed.

    Usage:
        metrics.RunnerFinishEvent(
            duration=metrics_utils.convert_duration(end-start),
            success=true,
            runner_name='AtestTradefedTestRunner'
            test=[{name:'hello_world_test', result:0, stacktrace:''},
                  {name:'test2', result:1, stacktrace:'xxx'}])
    """
    _EVENT_NAME = 'runner_finish_event'
    duration = constants.EXTERNAL
    success = constants.EXTERNAL
    runner_name = constants.EXTERNAL
    test = constants.INTERNAL

class RunTestsFinishEvent(metrics_base.MetricsBase):
    """
    Create run tests finish event and send to clearcut.

    Occurs after all test runners and tests have finished.

    Usage:
        metrics.RunTestsFinishEvent(
            duration=metrics_utils.convert_duration(end-start))
    """
    _EVENT_NAME = 'run_tests_finish_event'
    duration = constants.EXTERNAL

class LocalDetectEvent(metrics_base.MetricsBase):
    """
    Create local detection event and send it to clearcut.

    Usage:
        metrics.LocalDetectEvent(
            detect_type=0,
            result=0)
    """
    _EVENT_NAME = 'local_detect_event'
    detect_type = constants.EXTERNAL
    result = constants.EXTERNAL