Chromium Code Reviews| Index: runtime/vm/timeline_test.cc |
| diff --git a/runtime/vm/timeline_test.cc b/runtime/vm/timeline_test.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..dd06e08378398d1222fb69075a84ddc80b89b475 |
| --- /dev/null |
| +++ b/runtime/vm/timeline_test.cc |
| @@ -0,0 +1,136 @@ |
| +// 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 |
|
siva
2015/06/16 15:42:31
2015
Cutch
2015/06/16 17:08:17
Done.
|
| +// BSD-style license that can be found in the LICENSE file. |
| + |
| +#include "platform/assert.h" |
| + |
| +#include "vm/dart_api_impl.h" |
| +#include "vm/dart_api_state.h" |
| +#include "vm/globals.h" |
| +#include "vm/timeline.h" |
| +#include "vm/unit_test.h" |
| + |
| +namespace dart { |
| + |
| +TEST_CASE(TimelineEventIsValid) { |
| + // Create a test stream. |
| + TimelineStream stream; |
| + stream.Init("testStream", true); |
| + |
| + TimelineEvent event; |
| + |
| + // Starts invalid. |
| + EXPECT(!event.IsValid()); |
| + |
| + // Becomes valid. |
| + event.Instant(&stream, "hello"); |
| + EXPECT(event.IsValid()); |
| + |
| + // Becomes invalid. |
| + event.Reset(); |
| + EXPECT(!event.IsValid()); |
| +} |
| + |
| + |
| +TEST_CASE(TimelineEventDuration) { |
| + // Create a test stream. |
| + TimelineStream stream; |
| + stream.Init("testStream", true); |
| + |
| + // Create a test event. |
| + TimelineEvent event; |
| + event.DurationBegin(&stream, "apple"); |
| + // Measure the duration. |
| + int64_t current_duration = event.TimeDuration(); |
| + event.DurationEnd(); |
| + // Verify that duration is larger. |
| + EXPECT_GE(event.TimeDuration(), current_duration); |
| +} |
| + |
| + |
| +TEST_CASE(TimelineEventDurationPrintJSON) { |
| + // Create a test stream. |
| + TimelineStream stream; |
| + stream.Init("testStream", true); |
| + |
| + // Create a test event. |
| + TimelineEvent event; |
| + event.DurationBegin(&stream, "apple"); |
| + { |
| + // Test printing to JSON. |
| + JSONStream js; |
| + event.PrintJSON(&js); |
| + // Check category |
| + EXPECT_SUBSTRING("\"cat\":\"testStream\"", js.ToCString()); |
| + // Check name. |
| + EXPECT_SUBSTRING("\"name\":\"apple\"", js.ToCString()); |
| + // Check phase. |
| + EXPECT_SUBSTRING("\"ph\":\"X\"", js.ToCString()); |
| + // Check that ts key is present. |
| + EXPECT_SUBSTRING("\"ts\":", js.ToCString()); |
| + // Check that dur key is present. |
| + EXPECT_SUBSTRING("\"dur\":", js.ToCString()); |
| + } |
| + event.DurationEnd(); |
| +} |
| + |
| + |
| +TEST_CASE(TimelineEventArguments) { |
| + // Create a test stream. |
| + TimelineStream stream; |
| + stream.Init("testStream", true); |
| + |
| + // Create a test event. |
| + TimelineEvent event; |
| + |
| + // Allocate room for four arguments. |
| + event.SetNumArguments(4); |
| + // Reset. |
| + event.Reset(); |
| + |
| + event.DurationBegin(&stream, "apple"); |
| + event.SetNumArguments(2); |
| + event.CopyArgument(0, "arg1", "value1"); |
| + event.CopyArgument(1, "arg2", "value2"); |
| + event.DurationEnd(); |
| +} |
| + |
| + |
| +TEST_CASE(TimelineEventArgumentsPrintJSON) { |
| + // Create a test stream. |
| + TimelineStream stream; |
| + stream.Init("testStream", true); |
| + |
| + // Create a test event. |
| + TimelineEvent event; |
| + |
| + event.DurationBegin(&stream, "apple"); |
| + event.SetNumArguments(2); |
| + event.CopyArgument(0, "arg1", "value1"); |
| + event.CopyArgument(1, "arg2", "value2"); |
| + event.DurationEnd(); |
| + |
| + { |
| + // Test printing to JSON. |
| + JSONStream js; |
| + event.PrintJSON(&js); |
| + |
| + // Check both arguments. |
| + EXPECT_SUBSTRING("\"arg1\":\"value1\"", js.ToCString()); |
| + EXPECT_SUBSTRING("\"arg2\":\"value2\"", js.ToCString()); |
| + } |
| +} |
| + |
| + |
| +TEST_CASE(TimelineEventBufferPrintJSON) { |
| + Isolate* isolate = Isolate::Current(); |
| + TimelineEventBuffer* buffer = isolate->timeline_event_buffer(); |
| + JSONStream js; |
| + buffer->PrintJSON(&js); |
| + // Check the type. This test will fail if we ever make Timeline public. |
| + EXPECT_SUBSTRING("\"type\":\"_Timeline\"", js.ToCString()); |
| + // Check that there is a traceEvents array. |
| + EXPECT_SUBSTRING("\"traceEvents\":[", js.ToCString()); |
| +} |
| + |
| +} // namespace dart |