blob: ff1449413ba4bf3a204b509cd83eb4ec42ac449f [file] [log] [blame]
// Copyright 2020 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/cobalt/bin/system-metrics/testing/fake_archive.h"
#include "src/lib/fsl/vmo/strings.h"
namespace cobalt {
// A faked implementation of ArchiveAccessor that repeatedly returns only one component with the
// given JSON value. Used for testing LogStatsFetcherImpl and ArchivistStatsFetcherImpl.
FakeArchive::FakeArchive(std::string return_value)
: iterator_bindings_(std::make_unique<fidl::BindingSet<fuchsia::diagnostics::BatchIterator,
std::unique_ptr<FakeIterator>>>()),
return_value_(std::move(return_value)) {}
void FakeArchive::StreamDiagnostics(
fuchsia::diagnostics::StreamParameters params,
fidl::InterfaceRequest<fuchsia::diagnostics::BatchIterator> request) {
iterator_bindings_->AddBinding(std::make_unique<FakeIterator>(return_value_), std::move(request));
}
FakeArchive::FakeIterator::FakeIterator(std::string return_value)
: return_value_(std::move(return_value)) {}
void FakeArchive::FakeIterator::GetNext(GetNextCallback callback) {
std::vector<fuchsia::diagnostics::FormattedContent> contents;
if (!sent) {
fuchsia::diagnostics::FormattedContent content;
ZX_ASSERT(fsl::VmoFromString(return_value_, &content.json()));
contents.emplace_back(std::move(content));
sent = true;
}
callback(fit::ok(std::move(contents)));
}
} // namespace cobalt