blob: b1e7b86a80177d3bba4ac982303401fde6c67a6a [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.
// Helper app for shared_provider_integration_tests.cc.
// This app generates a small number of known events that can then be
// tested for.
#include <lib/async-loop/cpp/loop.h>
#include <lib/async-loop/default.h>
#include <trace-provider/provider.h>
#include "garnet/bin/trace/tests/integration_test_utils.h"
#include "src/lib/fxl/command_line.h"
#include "src/lib/fxl/log_settings_command_line.h"
#include "src/lib/fxl/logging.h"
const char kProviderName[] = "shared-provider-write-events";
namespace tracing {
namespace test {
static bool WriteEvents(async::Loop& loop) {
trace::TraceProviderWithFdio provider{loop.dispatcher(), kProviderName};
if (!WaitForTracingToStart(loop, kStartTimeout)) {
FXL_LOG(ERROR) << "Timed out waiting for tracing to start";
return false;
}
WriteTestEvents(kNumSimpleTestEvents);
return true;
}
} // namespace test
} // namespace tracing
int main(int argc, char** argv) {
auto cl = fxl::CommandLineFromArgcArgv(argc, argv);
if (!fxl::SetLogSettingsFromCommandLine(cl)) {
return EXIT_FAILURE;
}
async::Loop loop(&kAsyncLoopConfigAttachToCurrentThread);
if (!tracing::test::WriteEvents(loop)) {
return EXIT_FAILURE;
}
// The provider is gone, but there can be a bit more work to do to cleanly
// shut down trace-engine.
zx_status_t status = loop.RunUntilIdle();
if (status != ZX_OK && status != ZX_ERR_CANCELED) {
FXL_LOG(ERROR) << "loop.Run() failed, status=" << status;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}