OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/metrics/stats_counters.h" | 5 #include "base/metrics/stats_counters.h" |
6 #include "base/metrics/stats_table.h" | 6 #include "base/metrics/stats_table.h" |
7 #include "base/shared_memory.h" | 7 #include "base/shared_memory.h" |
8 #include "base/stringprintf.h" | 8 #include "base/stringprintf.h" |
9 #include "base/string_piece.h" | 9 #include "base/string_piece.h" |
10 #include "base/test/multiprocess_test.h" | 10 #include "base/test/multiprocess_test.h" |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 TimeTicks start_time() { return start_time_; } | 305 TimeTicks start_time() { return start_time_; } |
306 TimeTicks stop_time() { return stop_time_; } | 306 TimeTicks stop_time() { return stop_time_; } |
307 }; | 307 }; |
308 | 308 |
309 // Test some basic StatsCounterTimer operations | 309 // Test some basic StatsCounterTimer operations |
310 TEST_F(StatsTableTest, StatsCounterTimer) { | 310 TEST_F(StatsTableTest, StatsCounterTimer) { |
311 // Create a stats table. | 311 // Create a stats table. |
312 const std::string kTableName = "StatTable"; | 312 const std::string kTableName = "StatTable"; |
313 const int kMaxThreads = 20; | 313 const int kMaxThreads = 20; |
314 const int kMaxCounter = 5; | 314 const int kMaxCounter = 5; |
| 315 DeleteShmem(kTableName); |
315 StatsTable table(kTableName, kMaxThreads, kMaxCounter); | 316 StatsTable table(kTableName, kMaxThreads, kMaxCounter); |
316 StatsTable::set_current(&table); | 317 StatsTable::set_current(&table); |
317 | 318 |
318 MockStatsCounterTimer bar("bar"); | 319 MockStatsCounterTimer bar("bar"); |
319 | 320 |
320 // Test initial state. | 321 // Test initial state. |
321 EXPECT_FALSE(bar.Running()); | 322 EXPECT_FALSE(bar.Running()); |
322 EXPECT_TRUE(bar.start_time().is_null()); | 323 EXPECT_TRUE(bar.start_time().is_null()); |
323 EXPECT_TRUE(bar.stop_time().is_null()); | 324 EXPECT_TRUE(bar.stop_time().is_null()); |
324 | 325 |
325 const TimeDelta kDuration = TimeDelta::FromMilliseconds(100); | 326 const TimeDelta kDuration = TimeDelta::FromMilliseconds(100); |
326 | 327 |
327 // Do some timing. | 328 // Do some timing. |
328 bar.Start(); | 329 bar.Start(); |
329 PlatformThread::Sleep(kDuration); | 330 PlatformThread::Sleep(kDuration); |
330 bar.Stop(); | 331 bar.Stop(); |
331 EXPECT_GT(table.GetCounterValue("t:bar"), 0); | 332 EXPECT_GT(table.GetCounterValue("t:bar"), 0); |
332 EXPECT_LE(kDuration.InMilliseconds(), table.GetCounterValue("t:bar")); | 333 EXPECT_LE(kDuration.InMilliseconds(), table.GetCounterValue("t:bar")); |
333 | 334 |
334 // Verify that timing again is additive. | 335 // Verify that timing again is additive. |
335 bar.Start(); | 336 bar.Start(); |
336 PlatformThread::Sleep(kDuration); | 337 PlatformThread::Sleep(kDuration); |
337 bar.Stop(); | 338 bar.Stop(); |
338 EXPECT_GT(table.GetCounterValue("t:bar"), 0); | 339 EXPECT_GT(table.GetCounterValue("t:bar"), 0); |
339 EXPECT_LE(kDuration.InMilliseconds() * 2, table.GetCounterValue("t:bar")); | 340 EXPECT_LE(kDuration.InMilliseconds() * 2, table.GetCounterValue("t:bar")); |
| 341 DeleteShmem(kTableName); |
340 } | 342 } |
341 | 343 |
342 // Test some basic StatsRate operations | 344 // Test some basic StatsRate operations |
343 // Usually fails on all platforms when run alone. http://crbug.com/131024 | 345 TEST_F(StatsTableTest, StatsRate) { |
344 TEST_F(StatsTableTest, DISABLED_StatsRate) { | |
345 // Create a stats table. | 346 // Create a stats table. |
346 const std::string kTableName = "StatTable"; | 347 const std::string kTableName = "StatTable"; |
347 const int kMaxThreads = 20; | 348 const int kMaxThreads = 20; |
348 const int kMaxCounter = 5; | 349 const int kMaxCounter = 5; |
| 350 DeleteShmem(kTableName); |
349 StatsTable table(kTableName, kMaxThreads, kMaxCounter); | 351 StatsTable table(kTableName, kMaxThreads, kMaxCounter); |
350 StatsTable::set_current(&table); | 352 StatsTable::set_current(&table); |
351 | 353 |
352 StatsRate baz("baz"); | 354 StatsRate baz("baz"); |
353 | 355 |
354 // Test initial state. | 356 // Test initial state. |
355 EXPECT_FALSE(baz.Running()); | 357 EXPECT_FALSE(baz.Running()); |
356 EXPECT_EQ(0, table.GetCounterValue("c:baz")); | 358 EXPECT_EQ(0, table.GetCounterValue("c:baz")); |
357 EXPECT_EQ(0, table.GetCounterValue("t:baz")); | 359 EXPECT_EQ(0, table.GetCounterValue("t:baz")); |
358 | 360 |
359 const TimeDelta kDuration = TimeDelta::FromMilliseconds(100); | 361 const TimeDelta kDuration = TimeDelta::FromMilliseconds(100); |
360 | 362 |
361 // Do some timing. | 363 // Do some timing. |
362 baz.Start(); | 364 baz.Start(); |
363 PlatformThread::Sleep(kDuration); | 365 PlatformThread::Sleep(kDuration); |
364 baz.Stop(); | 366 baz.Stop(); |
365 EXPECT_EQ(1, table.GetCounterValue("c:baz")); | 367 EXPECT_EQ(1, table.GetCounterValue("c:baz")); |
366 EXPECT_LE(kDuration.InMilliseconds(), table.GetCounterValue("t:baz")); | 368 EXPECT_LE(kDuration.InMilliseconds(), table.GetCounterValue("t:baz")); |
367 | 369 |
368 // Verify that timing again is additive. | 370 // Verify that timing again is additive. |
369 baz.Start(); | 371 baz.Start(); |
370 PlatformThread::Sleep(kDuration); | 372 PlatformThread::Sleep(kDuration); |
371 baz.Stop(); | 373 baz.Stop(); |
372 EXPECT_EQ(2, table.GetCounterValue("c:baz")); | 374 EXPECT_EQ(2, table.GetCounterValue("c:baz")); |
373 EXPECT_LE(kDuration.InMilliseconds() * 2, table.GetCounterValue("t:baz")); | 375 EXPECT_LE(kDuration.InMilliseconds() * 2, table.GetCounterValue("t:baz")); |
| 376 DeleteShmem(kTableName); |
374 } | 377 } |
375 | 378 |
376 // Test some basic StatsScope operations | 379 // Test some basic StatsScope operations |
377 TEST_F(StatsTableTest, StatsScope) { | 380 TEST_F(StatsTableTest, StatsScope) { |
378 // Create a stats table. | 381 // Create a stats table. |
379 const std::string kTableName = "StatTable"; | 382 const std::string kTableName = "StatTable"; |
380 const int kMaxThreads = 20; | 383 const int kMaxThreads = 20; |
381 const int kMaxCounter = 5; | 384 const int kMaxCounter = 5; |
382 DeleteShmem(kTableName); | 385 DeleteShmem(kTableName); |
383 StatsTable table(kTableName, kMaxThreads, kMaxCounter); | 386 StatsTable table(kTableName, kMaxThreads, kMaxCounter); |
(...skipping 26 matching lines...) Expand all Loading... |
410 PlatformThread::Sleep(kDuration); | 413 PlatformThread::Sleep(kDuration); |
411 } | 414 } |
412 EXPECT_LE(kDuration.InMilliseconds() * 2, table.GetCounterValue("t:foo")); | 415 EXPECT_LE(kDuration.InMilliseconds() * 2, table.GetCounterValue("t:foo")); |
413 EXPECT_LE(kDuration.InMilliseconds() * 2, table.GetCounterValue("t:bar")); | 416 EXPECT_LE(kDuration.InMilliseconds() * 2, table.GetCounterValue("t:bar")); |
414 EXPECT_EQ(2, table.GetCounterValue("c:bar")); | 417 EXPECT_EQ(2, table.GetCounterValue("c:bar")); |
415 | 418 |
416 DeleteShmem(kTableName); | 419 DeleteShmem(kTableName); |
417 } | 420 } |
418 | 421 |
419 } // namespace base | 422 } // namespace base |
OLD | NEW |