Index: runtime/vm/timeline_test.cc |
diff --git a/runtime/vm/timeline_test.cc b/runtime/vm/timeline_test.cc |
index 816a4cbb66ac91e506423a54e2ee0551c507e81d..fc13306ceb877adfd718d5fbb5f4b307eda783b1 100644 |
--- a/runtime/vm/timeline_test.cc |
+++ b/runtime/vm/timeline_test.cc |
@@ -244,6 +244,12 @@ TEST_CASE(TimelineEventStreamingRecorderBasic) { |
} |
+static bool LabelMatch(TimelineEvent* event, const char* label) { |
+ ASSERT(event != NULL); |
+ return strcmp(event->label(), label) == 0; |
+} |
+ |
+ |
TEST_CASE(TimelineAnalysis_ThreadBlockCount) { |
TimelineEventEndlessRecorder* recorder = new TimelineEventEndlessRecorder(); |
ASSERT(recorder != NULL); |
@@ -258,24 +264,24 @@ TEST_CASE(TimelineAnalysis_ThreadBlockCount) { |
USE(block_3_0); |
// Add events to each block for thread 1. |
- TimelineTestHelper::FakeThreadEvent(block_1_2, 1); |
- TimelineTestHelper::FakeThreadEvent(block_1_2, 1); |
- TimelineTestHelper::FakeThreadEvent(block_1_2, 1); |
+ TimelineTestHelper::FakeThreadEvent(block_1_2, 1, "B1"); |
+ TimelineTestHelper::FakeThreadEvent(block_1_2, 1, "B2"); |
+ TimelineTestHelper::FakeThreadEvent(block_1_2, 1, "B3"); |
// Sleep to ensure timestamps differ. |
OS::Sleep(1); |
- TimelineTestHelper::FakeThreadEvent(block_1_0, 1); |
+ TimelineTestHelper::FakeThreadEvent(block_1_0, 1, "A1"); |
OS::Sleep(1); |
- TimelineTestHelper::FakeThreadEvent(block_1_1, 1); |
- TimelineTestHelper::FakeThreadEvent(block_1_1, 1); |
+ TimelineTestHelper::FakeThreadEvent(block_1_1, 1, "C1"); |
+ TimelineTestHelper::FakeThreadEvent(block_1_1, 1, "C2"); |
OS::Sleep(1); |
// Add events to each block for thread 2. |
- TimelineTestHelper::FakeThreadEvent(block_2_0, 2); |
- TimelineTestHelper::FakeThreadEvent(block_2_0, 2); |
- TimelineTestHelper::FakeThreadEvent(block_2_0, 2); |
- TimelineTestHelper::FakeThreadEvent(block_2_0, 2); |
- TimelineTestHelper::FakeThreadEvent(block_2_0, 2); |
- TimelineTestHelper::FakeThreadEvent(block_2_0, 2); |
+ TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "A"); |
+ TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "B"); |
+ TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "C"); |
+ TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "D"); |
+ TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "E"); |
+ TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "F"); |
Thread* thread = Thread::Current(); |
Zone* zone = thread->zone(); |
@@ -317,6 +323,42 @@ TEST_CASE(TimelineAnalysis_ThreadBlockCount) { |
EXPECT_EQ(thread_2->At(0), block_2_0); |
// Verify that block_2_0 has six events. |
EXPECT_EQ(6, block_2_0->length()); |
+ |
+ { |
+ TimelineAnalysisThreadEventIterator it(thread_1); |
+ // Six events spread across three blocks. |
+ EXPECT(it.HasNext()); |
+ EXPECT(LabelMatch(it.Next(), "B1")); |
+ EXPECT(it.HasNext()); |
+ EXPECT(LabelMatch(it.Next(), "B2")); |
+ EXPECT(it.HasNext()); |
+ EXPECT(LabelMatch(it.Next(), "B3")); |
+ EXPECT(it.HasNext()); |
+ EXPECT(LabelMatch(it.Next(), "A1")); |
+ EXPECT(it.HasNext()); |
+ EXPECT(LabelMatch(it.Next(), "C1")); |
+ EXPECT(it.HasNext()); |
+ EXPECT(LabelMatch(it.Next(), "C2")); |
+ EXPECT(!it.HasNext()); |
+ } |
+ |
+ { |
+ TimelineAnalysisThreadEventIterator it(thread_2); |
+ // Six events spread across three blocks. |
+ EXPECT(it.HasNext()); |
+ EXPECT(LabelMatch(it.Next(), "A")); |
+ EXPECT(it.HasNext()); |
+ EXPECT(LabelMatch(it.Next(), "B")); |
+ EXPECT(it.HasNext()); |
+ EXPECT(LabelMatch(it.Next(), "C")); |
+ EXPECT(it.HasNext()); |
+ EXPECT(LabelMatch(it.Next(), "D")); |
+ EXPECT(it.HasNext()); |
+ EXPECT(LabelMatch(it.Next(), "E")); |
+ EXPECT(it.HasNext()); |
+ EXPECT(LabelMatch(it.Next(), "F")); |
+ EXPECT(!it.HasNext()); |
+ } |
} |