Class: Gitlab::Usage::Metrics::Instrumentations::NumbersMetric

Inherits:
BaseMetric
  • Object
show all
Defined in:
lib/gitlab/usage/metrics/instrumentations/numbers_metric.rb

Direct Known Subclasses

IssuesCreatedFromAlertsMetric

Constant Summary collapse

UnimplementedOperationError =

Usage Example

class BoardsCountMetric < NumbersMetric

operation :add

data do |time_frame|
  [
     CountIssuesMetric.new(time_frame: time_frame).value,
     CountBoardsMetric.new(time_frame: time_frame).value,
  ]
end

end

Class.new(StandardError)

Constants included from TimeFrame

TimeFrame::ALL_TIME_TIME_FRAME_NAME, TimeFrame::DEFAULT_TIMESTAMP_COLUMN, TimeFrame::SEVEN_DAYS_TIME_FRAME_NAME, TimeFrame::TWENTY_EIGHT_DAYS_TIME_FRAME_NAME

Constants included from Gitlab::Utils::UsageData

Gitlab::Utils::UsageData::DISTRIBUTED_HLL_FALLBACK, Gitlab::Utils::UsageData::FALLBACK, Gitlab::Utils::UsageData::HISTOGRAM_FALLBACK, Gitlab::Utils::UsageData::MAX_BUCKET_SIZE

Class Attribute Summary collapse

Attributes inherited from BaseMetric

#events, #options, #time_frame

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseMetric

available?, #available?, #initialize, #instrumentation

Methods included from TimeFrame

#monthly_time_range, #monthly_time_range_db_params, #weekly_time_range, #weekly_time_range_db_params

Methods included from Gitlab::Utils::UsageData

#add, #add_metric, #alt_usage_data, #average, #count, #distinct_count, #estimate_batch_distinct_count, #histogram, #maximum_id, #measure_duration, #minimum_id, #redis_usage_data, #sum, #track_usage_event, #with_finished_at, #with_metadata, #with_prometheus_client

Constructor Details

This class inherits a constructor from Gitlab::Usage::Metrics::Instrumentations::BaseMetric

Class Attribute Details

.metric_dataObject (readonly)

Returns the value of attribute metric_data.



40
41
42
# File 'lib/gitlab/usage/metrics/instrumentations/numbers_metric.rb', line 40

def metric_data
  @metric_data
end

.metric_operationObject (readonly)

Returns the value of attribute metric_operation.



40
41
42
# File 'lib/gitlab/usage/metrics/instrumentations/numbers_metric.rb', line 40

def metric_operation
  @metric_operation
end

Class Method Details

.data(&block) ⇒ Object



28
29
30
31
32
# File 'lib/gitlab/usage/metrics/instrumentations/numbers_metric.rb', line 28

def data(&block)
  return @metric_data&.call unless block

  @metric_data = block
end

.operation(symbol) ⇒ Object



34
35
36
37
38
# File 'lib/gitlab/usage/metrics/instrumentations/numbers_metric.rb', line 34

def operation(symbol)
  raise UnimplementedOperationError unless symbol.in?(IMPLEMENTED_OPERATIONS)

  @metric_operation = symbol
end

Instance Method Details

#valueObject



43
44
45
# File 'lib/gitlab/usage/metrics/instrumentations/numbers_metric.rb', line 43

def value
  method(self.class.metric_operation).call(*data)
end