Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(898)

Unified Diff: runtime/vm/timeline_test.cc

Issue 1297443002: Improve timeline iterators and tests (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/timeline_analysis.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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());
+ }
}
« no previous file with comments | « runtime/vm/timeline_analysis.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698