blob: 2ab46231a46187e49e00e701991a9217ee7573cd [file] [log] [blame]
// Copyright 2019 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/developer/feedback_agent/tests/stub_logger.h"
#include <fuchsia/logger/cpp/fidl.h>
#include <lib/syslog/cpp/logger.h>
#include <lib/zx/time.h>
#include <stdint.h>
#include "src/lib/fxl/logging.h"
namespace fuchsia {
namespace feedback {
namespace {
constexpr zx::duration kLogMessageBaseTimestamp = zx::sec(15604);
constexpr uint64_t kLogMessageProcessId = 7559;
constexpr uint64_t kLogMessageThreadId = 7687;
} // namespace
fuchsia::logger::LogMessage BuildLogMessage(
const int32_t severity, const std::string& text,
const zx::duration timestamp_offset, const std::vector<std::string>& tags) {
fuchsia::logger::LogMessage msg{};
msg.time = (kLogMessageBaseTimestamp + timestamp_offset).get();
msg.pid = kLogMessageProcessId;
msg.tid = kLogMessageThreadId;
msg.tags = tags;
msg.severity = severity;
msg.msg = text;
return msg;
}
void StubLogger::DumpLogs(
fidl::InterfaceHandle<fuchsia::logger::LogListener> log_listener,
std::unique_ptr<fuchsia::logger::LogFilterOptions> options) {
fuchsia::logger::LogListenerPtr log_listener_ptr = log_listener.Bind();
FXL_CHECK(log_listener_ptr.is_bound());
log_listener_ptr->LogMany(messages_);
log_listener_ptr->Done();
}
void StubLoggerNeverBindsToLogListener::DumpLogs(
fidl::InterfaceHandle<fuchsia::logger::LogListener> log_listener,
std::unique_ptr<fuchsia::logger::LogFilterOptions> options) {}
void StubLoggerUnbindsAfterOneMessage::DumpLogs(
fidl::InterfaceHandle<fuchsia::logger::LogListener> log_listener,
std::unique_ptr<fuchsia::logger::LogFilterOptions> options) {
FXL_CHECK(messages_.size() > 1u)
<< "You need to set up more than one message using set_messages()";
fuchsia::logger::LogListenerPtr log_listener_ptr = log_listener.Bind();
FXL_CHECK(log_listener_ptr.is_bound());
log_listener_ptr->LogMany(std::vector<fuchsia::logger::LogMessage>(
messages_.begin(), messages_.begin() + 1));
log_listener_ptr.Unbind();
}
void StubLoggerNeverCallsLogManyBeforeDone::DumpLogs(
fidl::InterfaceHandle<fuchsia::logger::LogListener> log_listener,
std::unique_ptr<fuchsia::logger::LogFilterOptions> options) {
fuchsia::logger::LogListenerPtr log_listener_ptr = log_listener.Bind();
FXL_CHECK(log_listener_ptr.is_bound());
log_listener_ptr->Done();
}
void StubLoggerSleepsAfterOneMessage::DumpLogs(
fidl::InterfaceHandle<fuchsia::logger::LogListener> log_listener,
std::unique_ptr<fuchsia::logger::LogFilterOptions> options) {
FXL_CHECK(messages_.size() > 1u)
<< "You need to set up more than one message using set_messages()";
fuchsia::logger::LogListenerPtr log_listener_ptr = log_listener.Bind();
FXL_CHECK(log_listener_ptr.is_bound());
log_listener_ptr->LogMany(std::vector<fuchsia::logger::LogMessage>(
messages_.begin(), messages_.begin() + 1));
FX_LOGS(INFO) << "Stub logger sleeping for " << sleep_.to_msecs() << "ms";
zx::nanosleep(zx::deadline_after(sleep_));
log_listener_ptr->LogMany(std::vector<fuchsia::logger::LogMessage>(
messages_.begin() + 1, messages_.end()));
log_listener_ptr->Done();
}
} // namespace feedback
} // namespace fuchsia