Files
sdk/runtime/vm/trace_buffer_test.cc
T
John McCutchan d295b9c311 Remove many features when building product mode
Move all JSON printing code from object.cc to object_service.cc.

Not compiled in:

- Service protocol
- Debugger
- Debugger API
- JSONStream
- ObjectIdRing
- Profiler service
- Object JSON printing

Size of dart_bootstrap before: 5670365 bytes
Size of dart_bootstrap after: 5287631 bytes

Reduction in size: 382734 bytes.

R=rmacnak@google.com

Review URL: https://codereview.chromium.org/1660063002 .
2016-02-05 09:55:51 -08:00

111 lines
3.5 KiB
C++

// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#include "platform/assert.h"
#include "vm/globals.h"
#include "vm/json_stream.h"
#include "vm/trace_buffer.h"
#include "vm/unit_test.h"
namespace dart {
#ifndef PRODUCT
TEST_CASE(TraceBufferEmpty) {
Isolate* isolate = Isolate::Current();
TraceBuffer::Init(isolate, 3);
TraceBuffer* trace_buffer = isolate->trace_buffer();
{
JSONStream js;
trace_buffer->PrintToJSONStream(&js);
EXPECT_STREQ("{\"type\":\"TraceBuffer\",\"members\":[]}", js.ToCString());
}
delete trace_buffer;
}
TEST_CASE(TraceBufferClear) {
Isolate* isolate = Isolate::Current();
TraceBuffer::Init(isolate, 3);
TraceBuffer* trace_buffer = isolate->trace_buffer();
trace_buffer->Trace(kMicrosecondsPerSecond * 1, "abc");
trace_buffer->Clear();
{
JSONStream js;
trace_buffer->PrintToJSONStream(&js);
EXPECT_STREQ("{\"type\":\"TraceBuffer\",\"members\":[]}", js.ToCString());
}
delete trace_buffer;
}
TEST_CASE(TraceBufferTrace) {
Isolate* isolate = Isolate::Current();
TraceBuffer::Init(isolate, 3);
TraceBuffer* trace_buffer = isolate->trace_buffer();
trace_buffer->Trace(kMicrosecondsPerSecond * 1, "abc");
{
JSONStream js;
trace_buffer->PrintToJSONStream(&js);
EXPECT_STREQ("{\"type\":\"TraceBuffer\",\"members\":["
"{\"type\":\"TraceBufferEntry\",\"time\":1.000000,"
"\"message\":\"abc\"}]}", js.ToCString());
}
trace_buffer->Trace(kMicrosecondsPerSecond * 2, "def");
{
JSONStream js;
trace_buffer->PrintToJSONStream(&js);
EXPECT_STREQ("{\"type\":\"TraceBuffer\",\"members\":["
"{\"type\":\"TraceBufferEntry\",\"time\":1.000000,"
"\"message\":\"abc\"},"
"{\"type\":\"TraceBufferEntry\",\"time\":2.000000,"
"\"message\":\"def\"}]}", js.ToCString());
}
trace_buffer->Trace(kMicrosecondsPerSecond * 3, "ghi");
{
JSONStream js;
trace_buffer->PrintToJSONStream(&js);
EXPECT_STREQ("{\"type\":\"TraceBuffer\",\"members\":["
"{\"type\":\"TraceBufferEntry\",\"time\":1.000000,"
"\"message\":\"abc\"},"
"{\"type\":\"TraceBufferEntry\",\"time\":2.000000,"
"\"message\":\"def\"},"
"{\"type\":\"TraceBufferEntry\",\"time\":3.000000,"
"\"message\":\"ghi\"}]}", js.ToCString());
}
// This will overwrite the first Trace.
trace_buffer->Trace(kMicrosecondsPerSecond * 4, "jkl");
{
JSONStream js;
trace_buffer->PrintToJSONStream(&js);
EXPECT_STREQ("{\"type\":\"TraceBuffer\",\"members\":["
"{\"type\":\"TraceBufferEntry\",\"time\":2.000000,"
"\"message\":\"def\"},"
"{\"type\":\"TraceBufferEntry\",\"time\":3.000000,"
"\"message\":\"ghi\"},"
"{\"type\":\"TraceBufferEntry\",\"time\":4.000000,"
"\"message\":\"jkl\"}]}", js.ToCString());
}
delete trace_buffer;
}
TEST_CASE(TraceBufferTraceF) {
Isolate* isolate = Isolate::Current();
TraceBuffer::Init(isolate, 3);
TraceBuffer* trace_buffer = isolate->trace_buffer();
trace_buffer->TraceF("foo %d %s", 99, "bar");
{
JSONStream js;
trace_buffer->PrintToJSONStream(&js);
EXPECT_SUBSTRING("foo 99 bar", js.ToCString());
}
delete trace_buffer;
}
#endif // !PRODUCT
} // namespace dart