blob: 67fcd411ab7007b5086eee2430dfe32d88d7031a [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 "garnet/lib/trace_converters/chromium_exporter.h"
#include <fbl/vector.h>
#include <gtest/gtest.h>
#include <trace-reader/records.h>
#include <sstream>
namespace {
TEST(ChromiumExporterTest, ValidUtf8) {
trace::EventData data(trace::EventData::Instant{trace::EventScope::kGlobal});
fbl::Vector<trace::Argument> arguments;
arguments.push_back(
trace::Argument("arg", trace::ArgumentValue::MakeString("foo\xb5\xb3")));
trace::Record record(trace::Record::Event{
1000, trace::ProcessThread(45, 46), "c\342\202at", "n\301a\205me",
std::move(arguments), std::move(data)});
std::ostringstream out_stream;
tracing::ChromiumExporter exporter(out_stream);
exporter.ExportRecord(record);
EXPECT_EQ(
out_stream.str(),
"{\"displayTimeUnit\":\"ns\",\"traceEvents\":[{\"cat\":\"c\uFFFDat\","
"\"name\":\"n\uFFFDa\uFFFDme\",\"ts\":1.0,\"pid\":45,\"tid\":46,\"ph\":"
"\"i\",\"s\":\"g\",\"args\":{\"arg\":\"foo\uFFFD\uFFFD\"}}");
}
} // namespace