Index: base/stats_table_unittest.cc |
=================================================================== |
--- base/stats_table_unittest.cc (revision 8817) |
+++ base/stats_table_unittest.cc (working copy) |
@@ -5,6 +5,7 @@ |
#include "base/multiprocess_test.h" |
#include "base/platform_thread.h" |
#include "base/simple_thread.h" |
+#include "base/shared_memory.h" |
#include "base/stats_table.h" |
#include "base/stats_counters.h" |
#include "base/string_util.h" |
@@ -19,6 +20,11 @@ |
namespace base { |
class StatsTableTest : public MultiProcessTest { |
+ public: |
+ void DeleteShmem(std::string name) { |
+ base::SharedMemory mem; |
+ mem.Delete(UTF8ToWide(name)); |
+ } |
}; |
// Open a StatsTable and verify that we can write to each of the |
@@ -27,6 +33,7 @@ |
const std::string kTableName = "VerifySlotsStatTable"; |
const int kMaxThreads = 1; |
const int kMaxCounter = 5; |
+ DeleteShmem(kTableName); |
StatsTable table(kTableName, kMaxThreads, kMaxCounter); |
// Register a single thread. |
@@ -50,6 +57,8 @@ |
// Try to allocate an additional counter. Verify it fails. |
int counter_id = table.FindCounter(counter_base_name); |
EXPECT_EQ(counter_id, 0); |
+ |
+ DeleteShmem(kTableName); |
} |
// CounterZero will continually be set to 0. |
@@ -104,6 +113,7 @@ |
const std::string kTableName = "MultipleThreadStatTable"; |
const int kMaxThreads = 20; |
const int kMaxCounter = 5; |
+ DeleteShmem(kTableName); |
StatsTable table(kTableName, kMaxThreads, kMaxCounter); |
StatsTable::set_current(&table); |
@@ -149,16 +159,18 @@ |
EXPECT_EQ((kMaxThreads % 2) * kThreadLoops, |
table.GetCounterValue(name)); |
EXPECT_EQ(0, table.CountThreadsRegistered()); |
+ |
+ DeleteShmem(kTableName); |
} |
-const std::string kTableName = "MultipleProcessStatTable"; |
+const std::string kMPTableName = "MultipleProcessStatTable"; |
MULTIPROCESS_TEST_MAIN(StatsTableMultipleProcessMain) { |
// Each process will open the shared memory and set counters |
// concurrently in a loop. We'll use some pauses to |
// mixup the scheduling. |
- StatsTable table(kTableName, 0, 0); |
+ StatsTable table(kMPTableName, 0, 0); |
StatsTable::set_current(&table); |
StatsCounter zero_counter(kCounterZero); |
StatsCounter lucky13_counter(kCounter1313); |
@@ -177,12 +189,11 @@ |
// Create a few processes and have them poke on their counters. |
TEST_F(StatsTableTest, MultipleProcesses) { |
// Create a stats table. |
- const std::string kTableName = "MultipleProcessStatTable"; |
const int kMaxProcs = 20; |
const int kMaxCounter = 5; |
- StatsTable table(kTableName, kMaxProcs, kMaxCounter); |
+ DeleteShmem(kMPTableName); |
+ StatsTable table(kMPTableName, kMaxProcs, kMaxCounter); |
StatsTable::set_current(&table); |
- |
EXPECT_EQ(0, table.CountThreadsRegistered()); |
// Spin up a set of processes to go bang on the various counters. |
@@ -220,6 +231,8 @@ |
EXPECT_EQ(-kMaxProcs * kThreadLoops, |
table.GetCounterValue(name)); |
EXPECT_EQ(0, table.CountThreadsRegistered()); |
+ |
+ DeleteShmem(kMPTableName); |
} |
class MockStatsCounter : public StatsCounter { |
@@ -235,6 +248,7 @@ |
const std::string kTableName = "StatTable"; |
const int kMaxThreads = 20; |
const int kMaxCounter = 5; |
+ DeleteShmem(kTableName); |
StatsTable table(kTableName, kMaxThreads, kMaxCounter); |
StatsTable::set_current(&table); |
@@ -271,6 +285,8 @@ |
EXPECT_EQ(-1, table.GetCounterValue("c:foo")); |
foo.Decrement(-1); |
EXPECT_EQ(0, table.GetCounterValue("c:foo")); |
+ |
+ DeleteShmem(kTableName); |
} |
class MockStatsCounterTimer : public StatsCounterTimer { |
@@ -348,6 +364,7 @@ |
const std::string kTableName = "StatTable"; |
const int kMaxThreads = 20; |
const int kMaxCounter = 5; |
+ DeleteShmem(kTableName); |
StatsTable table(kTableName, kMaxThreads, kMaxCounter); |
StatsTable::set_current(&table); |
@@ -378,6 +395,8 @@ |
EXPECT_LE(1000, table.GetCounterValue("t:foo")); |
EXPECT_LE(1000, table.GetCounterValue("t:bar")); |
EXPECT_EQ(2, table.GetCounterValue("c:bar")); |
+ |
+ DeleteShmem(kTableName); |
} |
} // namespace base |