blob: fc961385a86a4519746293e94008e915cb634fa6 [file] [log] [blame]
// Copyright 2018 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.
#include "src/logger/fake_logger.h"
#include <map>
#include <memory>
#include <set>
#include <string>
#include <tuple>
#include <utility>
#include <vector>
#include "src/logger/logger_interface.h"
#include "src/public/lib/status.h"
#include "src/registry/project_configs.h"
namespace cobalt::logger::testing {
namespace {
template <class EventType>
void CopyEventCodesAndComponent(const std::vector<uint32_t>& event_codes,
const std::string& component, EventType* event) {
for (auto event_code : event_codes) {
event->add_event_code(event_code);
}
event->set_component(component);
}
template <class EventType>
void CopyEventCodes(const std::vector<uint32_t>& event_codes, EventType* event) {
for (auto event_code : event_codes) {
event->add_event_code(event_code);
}
}
} // namespace
// TODO(https://fxbug.dev/278930401): NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
Status FakeLogger::LogOccurrence(uint32_t metric_id, uint64_t count,
const std::vector<uint32_t>& event_codes) {
call_count_ += 1;
Event event;
event.set_metric_id(metric_id);
auto* occurrence_event = event.mutable_occurrence_event();
CopyEventCodes(event_codes, occurrence_event);
occurrence_event->set_count(count);
TrackEvent(event);
return Status::OkStatus();
}
// TODO(https://fxbug.dev/278930401): NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
Status FakeLogger::LogInteger(uint32_t metric_id, int64_t value,
const std::vector<uint32_t>& event_codes) {
call_count_ += 1;
Event event;
event.set_metric_id(metric_id);
auto* integer_event = event.mutable_integer_event();
CopyEventCodes(event_codes, integer_event);
integer_event->set_value(value);
TrackEvent(event);
return Status::OkStatus();
}
Status FakeLogger::LogIntegerHistogram(uint32_t metric_id, HistogramPtr histogram,
const std::vector<uint32_t>& event_codes) {
call_count_ += 1;
Event event;
event.set_metric_id(metric_id);
auto* integer_histogram_event = event.mutable_integer_histogram_event();
CopyEventCodes(event_codes, integer_histogram_event);
integer_histogram_event->mutable_buckets()->Swap(histogram.get());
TrackEvent(event);
return Status::OkStatus();
}
Status FakeLogger::LogString(uint32_t metric_id, const std::string& string_value,
const std::vector<uint32_t>& event_codes) {
call_count_ += 1;
Event event;
event.set_metric_id(metric_id);
auto* string_event = event.mutable_string_event();
CopyEventCodes(event_codes, string_event);
string_event->set_string_value(string_value);
TrackEvent(event);
return Status::OkStatus();
}
} // namespace cobalt::logger::testing