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

Side by Side Diff: runtime/vm/timeline_test.cc

Issue 1411783004: More timeline cleanups (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 2 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 unified diff | Download patch
« no previous file with comments | « runtime/vm/timeline_analysis.cc ('k') | sdk/lib/_internal/js_runtime/lib/developer_patch.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include <cstring> 5 #include <cstring>
6 6
7 #include "platform/assert.h" 7 #include "platform/assert.h"
8 8
9 #include "vm/dart_api_impl.h" 9 #include "vm/dart_api_impl.h"
10 #include "vm/dart_api_state.h" 10 #include "vm/dart_api_state.h"
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 TimelineStream* stream = NULL) { 44 TimelineStream* stream = NULL) {
45 TimelineEvent* event = block->StartEvent(); 45 TimelineEvent* event = block->StartEvent();
46 ASSERT(event != NULL); 46 ASSERT(event != NULL);
47 event->DurationBegin(label); 47 event->DurationBegin(label);
48 event->thread_ = OSThread::ThreadIdFromIntPtr(ftid); 48 event->thread_ = OSThread::ThreadIdFromIntPtr(ftid);
49 if (stream != NULL) { 49 if (stream != NULL) {
50 event->StreamInit(stream); 50 event->StreamInit(stream);
51 } 51 }
52 } 52 }
53 53
54 static void SetBlockThread(TimelineEventBlock* block,
55 intptr_t ftid) {
56 block->thread_id_ = OSThread::ThreadIdFromIntPtr(ftid);
57 }
58
54 static void FakeDuration( 59 static void FakeDuration(
55 TimelineEventRecorder* recorder, 60 TimelineEventRecorder* recorder,
56 const char* label, 61 const char* label,
57 int64_t start, 62 int64_t start,
58 int64_t end) { 63 int64_t end) {
59 ASSERT(recorder != NULL); 64 ASSERT(recorder != NULL);
60 ASSERT(start < end); 65 ASSERT(start < end);
61 ASSERT(label != NULL); 66 ASSERT(label != NULL);
62 TimelineEvent* event = recorder->StartEvent(); 67 TimelineEvent* event = recorder->StartEvent();
63 ASSERT(event != NULL); 68 ASSERT(event != NULL);
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 EventCounterRecorder() { 240 EventCounterRecorder() {
236 for (intptr_t i = 0; i < TimelineEvent::kNumEventTypes; i++) { 241 for (intptr_t i = 0; i < TimelineEvent::kNumEventTypes; i++) {
237 counts_[i] = 0; 242 counts_[i] = 0;
238 } 243 }
239 } 244 }
240 245
241 void StreamEvent(TimelineEvent* event) { 246 void StreamEvent(TimelineEvent* event) {
242 counts_[event->event_type()]++; 247 counts_[event->event_type()]++;
243 } 248 }
244 249
245 void StreamDartEvent(const char* event) {
246 // NOOP.
247 }
248
249 intptr_t CountFor(TimelineEvent::EventType type) { 250 intptr_t CountFor(TimelineEvent::EventType type) {
250 return counts_[type]; 251 return counts_[type];
251 } 252 }
252 253
253 private: 254 private:
254 intptr_t counts_[TimelineEvent::kNumEventTypes]; 255 intptr_t counts_[TimelineEvent::kNumEventTypes];
255 }; 256 };
256 257
257 258
258 TEST_CASE(TimelineEventStreamingRecorderBasic) { 259 TEST_CASE(TimelineEventStreamingRecorderBasic) {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 ASSERT(event != NULL); 318 ASSERT(event != NULL);
318 return strcmp(event->label(), label) == 0; 319 return strcmp(event->label(), label) == 0;
319 } 320 }
320 321
321 322
322 TEST_CASE(TimelineAnalysis_ThreadBlockCount) { 323 TEST_CASE(TimelineAnalysis_ThreadBlockCount) {
323 TimelineEventEndlessRecorder* recorder = new TimelineEventEndlessRecorder(); 324 TimelineEventEndlessRecorder* recorder = new TimelineEventEndlessRecorder();
324 ASSERT(recorder != NULL); 325 ASSERT(recorder != NULL);
325 // Blocks owned by thread "1". 326 // Blocks owned by thread "1".
326 TimelineEventBlock* block_1_0 = recorder->GetNewBlock(); 327 TimelineEventBlock* block_1_0 = recorder->GetNewBlock();
328 TimelineTestHelper::SetBlockThread(block_1_0, 1);
327 TimelineEventBlock* block_1_1 = recorder->GetNewBlock(); 329 TimelineEventBlock* block_1_1 = recorder->GetNewBlock();
330 TimelineTestHelper::SetBlockThread(block_1_1, 1);
328 TimelineEventBlock* block_1_2 = recorder->GetNewBlock(); 331 TimelineEventBlock* block_1_2 = recorder->GetNewBlock();
332 TimelineTestHelper::SetBlockThread(block_1_2, 1);
329 // Blocks owned by thread "2". 333 // Blocks owned by thread "2".
330 TimelineEventBlock* block_2_0 = recorder->GetNewBlock(); 334 TimelineEventBlock* block_2_0 = recorder->GetNewBlock();
335 TimelineTestHelper::SetBlockThread(block_2_0, 2);
331 // Blocks owned by thread "3". 336 // Blocks owned by thread "3".
332 TimelineEventBlock* block_3_0 = recorder->GetNewBlock(); 337 TimelineEventBlock* block_3_0 = recorder->GetNewBlock();
338 TimelineTestHelper::SetBlockThread(block_3_0, 3);
333 USE(block_3_0); 339 USE(block_3_0);
334 340
335 // Add events to each block for thread 1. 341 // Add events to each block for thread 1.
336 TimelineTestHelper::FakeThreadEvent(block_1_2, 1, "B1"); 342 TimelineTestHelper::FakeThreadEvent(block_1_2, 1, "B1");
337 TimelineTestHelper::FakeThreadEvent(block_1_2, 1, "B2"); 343 TimelineTestHelper::FakeThreadEvent(block_1_2, 1, "B2");
338 TimelineTestHelper::FakeThreadEvent(block_1_2, 1, "B3"); 344 TimelineTestHelper::FakeThreadEvent(block_1_2, 1, "B3");
339 // Sleep to ensure timestamps differ. 345 // Sleep to ensure timestamps differ.
340 OS::Sleep(1); 346 OS::Sleep(1);
341 TimelineTestHelper::FakeThreadEvent(block_1_0, 1, "A1"); 347 TimelineTestHelper::FakeThreadEvent(block_1_0, 1, "A1");
342 OS::Sleep(1); 348 OS::Sleep(1);
343 TimelineTestHelper::FakeThreadEvent(block_1_1, 1, "C1"); 349 TimelineTestHelper::FakeThreadEvent(block_1_1, 1, "C1");
344 TimelineTestHelper::FakeThreadEvent(block_1_1, 1, "C2"); 350 TimelineTestHelper::FakeThreadEvent(block_1_1, 1, "C2");
345 OS::Sleep(1); 351 OS::Sleep(1);
346 352
347 // Add events to each block for thread 2. 353 // Add events to each block for thread 2.
348 TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "A"); 354 TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "A");
349 TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "B"); 355 TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "B");
350 TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "C"); 356 TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "C");
351 TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "D"); 357 TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "D");
352 TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "E"); 358 TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "E");
353 TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "F"); 359 TimelineTestHelper::FakeThreadEvent(block_2_0, 2, "F");
354 360
355 Zone* zone = thread->zone(); 361 Zone* zone = thread->zone();
356 Isolate* isolate = thread->isolate(); 362 Isolate* isolate = thread->isolate();
357 363
358 // Discover threads in recorder. 364 // Discover threads in recorder.
359 TimelineAnalysis ta(zone, isolate, recorder); 365 TimelineAnalysis ta(zone, isolate, recorder);
360 ta.BuildThreads(); 366 ta.BuildThreads();
367 EXPECT(!ta.has_error());
361 // block_3_0 is never used by a thread, so we only have two threads. 368 // block_3_0 is never used by a thread, so we only have two threads.
362 EXPECT_EQ(2, ta.NumThreads()); 369 EXPECT_EQ(2, ta.NumThreads());
363 370
364 // Extract both threads. 371 // Extract both threads.
365 TimelineAnalysisThread* thread_1 = 372 TimelineAnalysisThread* thread_1 =
366 ta.GetThread(OSThread::ThreadIdFromIntPtr(1)); 373 ta.GetThread(OSThread::ThreadIdFromIntPtr(1));
367 TimelineAnalysisThread* thread_2 = 374 TimelineAnalysisThread* thread_2 =
368 ta.GetThread(OSThread::ThreadIdFromIntPtr(2)); 375 ta.GetThread(OSThread::ThreadIdFromIntPtr(2));
369 EXPECT_EQ(OSThread::ThreadIdFromIntPtr(1), thread_1->id()); 376 EXPECT_EQ(OSThread::ThreadIdFromIntPtr(1), thread_1->id());
370 EXPECT_EQ(OSThread::ThreadIdFromIntPtr(2), thread_2->id()); 377 EXPECT_EQ(OSThread::ThreadIdFromIntPtr(2), thread_2->id());
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after
837 { 844 {
838 TimelinePauses pauses(zone, isolate, recorder); 845 TimelinePauses pauses(zone, isolate, recorder);
839 pauses.Setup(); 846 pauses.Setup();
840 pauses.CalculatePauseTimesForThread(tid); 847 pauses.CalculatePauseTimesForThread(tid);
841 EXPECT(pauses.has_error()); 848 EXPECT(pauses.has_error());
842 } 849 }
843 TimelineTestHelper::Clear(recorder); 850 TimelineTestHelper::Clear(recorder);
844 } 851 }
845 852
846 } // namespace dart 853 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/timeline_analysis.cc ('k') | sdk/lib/_internal/js_runtime/lib/developer_patch.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698