1*8975f5c5SAndroid Build Coastguard Worker# Copyright 2024 The Chromium Authors 2*8975f5c5SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*8975f5c5SAndroid Build Coastguard Worker# found in the LICENSE file. 4*8975f5c5SAndroid Build Coastguard Worker""" The module to provide measurements when it's supported. """ 5*8975f5c5SAndroid Build Coastguard Worker 6*8975f5c5SAndroid Build Coastguard Workerimport os 7*8975f5c5SAndroid Build Coastguard Workerimport sys 8*8975f5c5SAndroid Build Coastguard Worker 9*8975f5c5SAndroid Build Coastguard Workerfrom contextlib import AbstractContextManager 10*8975f5c5SAndroid Build Coastguard Worker 11*8975f5c5SAndroid Build Coastguard Workerfrom common import DIR_SRC_ROOT 12*8975f5c5SAndroid Build Coastguard Worker 13*8975f5c5SAndroid Build Coastguard WorkerPROTO_DIR = os.path.abspath( 14*8975f5c5SAndroid Build Coastguard Worker os.path.join(DIR_SRC_ROOT, 'build', 'util', 'lib', 'proto')) 15*8975f5c5SAndroid Build Coastguard Workerif os.path.isdir(PROTO_DIR): 16*8975f5c5SAndroid Build Coastguard Worker sys.path.append(PROTO_DIR) 17*8975f5c5SAndroid Build Coastguard Worker # pylint: disable=import-error, unused-import 18*8975f5c5SAndroid Build Coastguard Worker from measures import average, clear, count, data_points, dump, tag, \ 19*8975f5c5SAndroid Build Coastguard Worker time_consumption 20*8975f5c5SAndroid Build Coastguard Workerelse: 21*8975f5c5SAndroid Build Coastguard Worker 22*8975f5c5SAndroid Build Coastguard Worker class Dummy(AbstractContextManager): 23*8975f5c5SAndroid Build Coastguard Worker """Dummy implementation when measures components do not exist.""" 24*8975f5c5SAndroid Build Coastguard Worker 25*8975f5c5SAndroid Build Coastguard Worker # pylint: disable=no-self-use 26*8975f5c5SAndroid Build Coastguard Worker def record(self, *_) -> None: 27*8975f5c5SAndroid Build Coastguard Worker """Dummy implementation of Measure.record.""" 28*8975f5c5SAndroid Build Coastguard Worker 29*8975f5c5SAndroid Build Coastguard Worker # pylint: disable=no-self-use 30*8975f5c5SAndroid Build Coastguard Worker def dump(self) -> None: 31*8975f5c5SAndroid Build Coastguard Worker """Dummy implementation of Measure.dump.""" 32*8975f5c5SAndroid Build Coastguard Worker # Shouldn't be called. 33*8975f5c5SAndroid Build Coastguard Worker assert False 34*8975f5c5SAndroid Build Coastguard Worker 35*8975f5c5SAndroid Build Coastguard Worker # pylint: disable=no-self-use 36*8975f5c5SAndroid Build Coastguard Worker def __enter__(self) -> None: 37*8975f5c5SAndroid Build Coastguard Worker pass 38*8975f5c5SAndroid Build Coastguard Worker 39*8975f5c5SAndroid Build Coastguard Worker # pylint: disable=no-self-use 40*8975f5c5SAndroid Build Coastguard Worker def __exit__(self, *_) -> bool: 41*8975f5c5SAndroid Build Coastguard Worker return False 42*8975f5c5SAndroid Build Coastguard Worker 43*8975f5c5SAndroid Build Coastguard Worker def average(*_) -> Dummy: 44*8975f5c5SAndroid Build Coastguard Worker """Dummy implementation of measures.average.""" 45*8975f5c5SAndroid Build Coastguard Worker return Dummy() 46*8975f5c5SAndroid Build Coastguard Worker 47*8975f5c5SAndroid Build Coastguard Worker def count(*_) -> Dummy: 48*8975f5c5SAndroid Build Coastguard Worker """Dummy implementation of measures.count.""" 49*8975f5c5SAndroid Build Coastguard Worker return Dummy() 50*8975f5c5SAndroid Build Coastguard Worker 51*8975f5c5SAndroid Build Coastguard Worker def clear(*_) -> None: 52*8975f5c5SAndroid Build Coastguard Worker """Dummy implementation of measures.clear.""" 53*8975f5c5SAndroid Build Coastguard Worker 54*8975f5c5SAndroid Build Coastguard Worker def data_points(*_) -> Dummy: 55*8975f5c5SAndroid Build Coastguard Worker """Dummy implementation of measures.data_points.""" 56*8975f5c5SAndroid Build Coastguard Worker return Dummy() 57*8975f5c5SAndroid Build Coastguard Worker 58*8975f5c5SAndroid Build Coastguard Worker def time_consumption(*_) -> Dummy: 59*8975f5c5SAndroid Build Coastguard Worker """Dummy implementation of measures.time_consumption.""" 60*8975f5c5SAndroid Build Coastguard Worker return Dummy() 61*8975f5c5SAndroid Build Coastguard Worker 62*8975f5c5SAndroid Build Coastguard Worker def dump(*_) -> None: 63*8975f5c5SAndroid Build Coastguard Worker """Dummy implementation of measures.dump.""" 64*8975f5c5SAndroid Build Coastguard Worker 65*8975f5c5SAndroid Build Coastguard Worker def tag(*_) -> None: 66*8975f5c5SAndroid Build Coastguard Worker """Dummy implementation of measures.tag.""" 67