github.com/MerlinKodo/gvisor@v0.0.0-20231110090155-957f62ecf90e/pkg/metric/fake_metric.go (about)

     1  // Copyright 2022 The gVisor Authors.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package metric
    16  
    17  import pb "github.com/MerlinKodo/gvisor/pkg/metric/metric_go_proto"
    18  
    19  // FakeUint64Metric is a type that implements all the methods of a Uint64Metric
    20  // as a no-op.
    21  type FakeUint64Metric struct{}
    22  
    23  // FakeDistributionMetric is a type that implements all the methods of a
    24  // DistributionMetric as a no-op.
    25  type FakeDistributionMetric struct{}
    26  
    27  // FakeTimerMetric is a type that implements all the methods of a TimerMetric
    28  // as a no-op.
    29  type FakeTimerMetric struct{}
    30  
    31  // FakeTimedOperation is a type that implements all the methods of a
    32  // TimedOperation as a no-op.
    33  type FakeTimedOperation struct{}
    34  
    35  // Value from a FakeUint64Metric always returns a meaningless value.
    36  //
    37  //go:nosplit
    38  func (m *FakeUint64Metric) Value(fieldValues ...*FieldValue) uint64 {
    39  	return 0
    40  }
    41  
    42  // Increment on a FakeUint64Metric does nothing.
    43  //
    44  //go:nosplit
    45  func (m *FakeUint64Metric) Increment(fieldValues ...*FieldValue) {}
    46  
    47  // IncrementBy on a FakeUint64Metric does nothing.
    48  //
    49  //go:nosplit
    50  func (m *FakeUint64Metric) IncrementBy(v uint64, fieldValues ...*FieldValue) {}
    51  
    52  // AddSample on a FakeUint64Metric does nothing.
    53  //
    54  //go:nosplit
    55  func (d *FakeDistributionMetric) AddSample(sample int64, fields ...*FieldValue) {}
    56  
    57  // Start on a FakeUint64Metric returns a FakeTimedOperation struct, which does
    58  // nothing and does not keep the time.
    59  //
    60  //go:nosplit
    61  func (t *FakeTimerMetric) Start(fields ...*FieldValue) FakeTimedOperation {
    62  	return FakeTimedOperation{}
    63  }
    64  
    65  // Finish on a FakeTimedOperation does nothing.
    66  //
    67  //go:nosplit
    68  func (o FakeTimedOperation) Finish(extraFields ...*FieldValue) {}
    69  
    70  // NewFakeUint64Metric is equivalent to NewUint64Metric except it creates a
    71  // FakeUint64Metric
    72  func NewFakeUint64Metric(name string, sync bool, units pb.MetricMetadata_Units, description string, fields ...Field) (*FakeUint64Metric, error) {
    73  	return &FakeUint64Metric{}, nil
    74  }
    75  
    76  // MustCreateNewFakeUint64Metric is equivalent to MustCreateNewUint64Metric
    77  // except it creates a FakeUint64Metric.
    78  func MustCreateNewFakeUint64Metric(name string, sync bool, description string, fields ...Field) *FakeUint64Metric {
    79  	return &FakeUint64Metric{}
    80  }
    81  
    82  // NewFakeDistributionMetric is equivalent to NewDistributionMetric except
    83  // it creates a FakeDistributionMetric.
    84  func NewFakeDistributionMetric(name string, sync bool, bucketer Bucketer, unit pb.MetricMetadata_Units, description string, fields ...Field) (*FakeDistributionMetric, error) {
    85  	return &FakeDistributionMetric{}, nil
    86  }
    87  
    88  // MustCreateNewFakeDistributionMetric is equivalent to
    89  // MustCreateNewDistributionMetric except it creates a FakeDistributionMetric.
    90  func MustCreateNewFakeDistributionMetric(name string, sync bool, bucketer Bucketer, unit pb.MetricMetadata_Units, description string, fields ...Field) *FakeDistributionMetric {
    91  	return &FakeDistributionMetric{}
    92  }
    93  
    94  // NewFakeTimerMetric is equivalent to NewTimerMetric except it creates a
    95  // FakeTimerMetric.
    96  func NewFakeTimerMetric(name string, nanoBucketer Bucketer, description string, fields ...Field) (*FakeTimerMetric, error) {
    97  	return &FakeTimerMetric{}, nil
    98  }
    99  
   100  // MustCreateNewFakeTimerMetric is equivalent to MustCreateNewTimerMetric
   101  // except it creates a FakeTimerMetric.
   102  func MustCreateNewFakeTimerMetric(name string, nanoBucketer Bucketer, description string, fields ...Field) *FakeTimerMetric {
   103  	return &FakeTimerMetric{}
   104  }