blob: b8dda33efbebf24004cab1304d0d6840fc6efef4 [file] [log] [blame]
// Copyright 2022 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.
#ifndef SRC_COBALT_BIN_TESTING_STUB_METRIC_EVENT_LOGGER_H_
#define SRC_COBALT_BIN_TESTING_STUB_METRIC_EVENT_LOGGER_H_
#include <fuchsia/metrics/cpp/fidl.h>
#include "src/cobalt/bin/testing/log_metric_method.h"
namespace cobalt {
class StubMetricEventLogger_Sync : public fuchsia::metrics::MetricEventLogger_Sync {
public:
zx_status_t LogOccurrence(
uint32_t metric_id, uint64_t count, ::std::vector<uint32_t> event_codes,
::fuchsia::metrics::MetricEventLogger_LogOccurrence_Result* out_result) override;
zx_status_t LogInteger(
uint32_t metric_id, int64_t value, ::std::vector<uint32_t> event_codes,
::fuchsia::metrics::MetricEventLogger_LogInteger_Result* out_result) override;
zx_status_t LogIntegerHistogram(
uint32_t metric_id, ::std::vector<::fuchsia::metrics::HistogramBucket> histogram,
::std::vector<uint32_t> event_codes,
::fuchsia::metrics::MetricEventLogger_LogIntegerHistogram_Result* out_result) override;
zx_status_t LogString(
uint32_t metric_id, ::std::string string_value, ::std::vector<uint32_t> event_codes,
::fuchsia::metrics::MetricEventLogger_LogString_Result* out_result) override;
zx_status_t LogMetricEvents(
::std::vector<::fuchsia::metrics::MetricEvent> events,
::fuchsia::metrics::MetricEventLogger_LogMetricEvents_Result* out_result) override;
uint32_t last_metric_id() { return last_metric_id_; }
void reset_last_metric_id() { last_metric_id_ = -1; }
std::vector<uint32_t> last_event_codes() { return last_event_codes_; }
void reset_last_event_codes() { last_event_codes_ = {}; }
int64_t last_integer() { return last_integer_; }
void reset_last_integer() { last_integer_ = -1; }
LogMetricMethod last_log_method_invoked() { return last_log_metric_method_invoked_; }
void reset_last_log_method_invoked() {
last_log_metric_method_invoked_ = LogMetricMethod::kDefault;
}
size_t call_count() { return call_count_; }
void reset_call_count() { call_count_ = 0; }
// Used for LogMetricEvents() only.
size_t event_count() { return event_count_; }
void reset_event_count() { event_count_ = 0; }
const std::vector<fuchsia::metrics::MetricEvent>& logged_events() { return logged_events_; }
void reset_logged_events() { logged_events_.clear(); }
void reset() {
reset_last_metric_id();
reset_last_event_codes();
reset_last_integer();
reset_last_log_method_invoked();
reset_call_count();
reset_event_count();
reset_logged_events();
}
private:
uint32_t last_metric_id_ = -1;
std::vector<uint32_t> last_event_codes_ = {};
int64_t last_integer_ = -1;
LogMetricMethod last_log_metric_method_invoked_ = LogMetricMethod::kDefault;
size_t call_count_ = 0;
// Used for LogMetricEvents() only.
size_t event_count_ = 0;
std::vector<fuchsia::metrics::MetricEvent> logged_events_;
};
} // namespace cobalt
#endif // SRC_COBALT_BIN_TESTING_STUB_METRIC_EVENT_LOGGER_H_