| Index: chrome/browser/net/chrome_net_log_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/net/chrome_net_log_unittest.cc (revision 0)
|
| +++ chrome/browser/net/chrome_net_log_unittest.cc (revision 0)
|
| @@ -0,0 +1,73 @@
|
| +// Copyright (c) 2010 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/net/chrome_net_log.h"
|
| +
|
| +#include "base/waitable_event.h"
|
| +#include "base/simple_thread.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +namespace {
|
| +
|
| +const int kThreads = 10;
|
| +const int kEvents = 100;
|
| +
|
| +class ChromeNetLogTestThread : public base::SimpleThread {
|
| + public:
|
| + ChromeNetLogTestThread() : base::SimpleThread("ChromeNetLogTest"),
|
| + can_start_loop_(false, false),
|
| + log_(NULL) {
|
| + }
|
| +
|
| + void Init(ChromeNetLog* log) {
|
| + log_ = log;
|
| + }
|
| +
|
| + virtual void Run() {
|
| + can_start_loop_.Wait();
|
| + for (int i = 0; i < kEvents; ++i) {
|
| + net::NetLog::Source source(net::NetLog::SOURCE_SOCKET, log_->NextID());
|
| + log_->AddEntry(net::NetLog::TYPE_SOCKET_ALIVE, base::TimeTicks(),
|
| + source, net::NetLog::PHASE_BEGIN, NULL);
|
| + }
|
| + log_->ClearAllPassivelyCapturedEvents();
|
| + }
|
| +
|
| + void ReallyStart() {
|
| + can_start_loop_.Signal();
|
| + }
|
| +
|
| + private:
|
| + // Only triggered once all threads have been created, to make it much less
|
| + // likely each thread completes before the next one starts.
|
| + base::WaitableEvent can_start_loop_;
|
| +
|
| + ChromeNetLog* log_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(ChromeNetLogTestThread);
|
| +};
|
| +
|
| +} // namespace
|
| +
|
| +// Attempts to check thread safety, exercising checks in ChromeNetLog and
|
| +// PassiveLogCollector.
|
| +TEST(ChromeNetLogTest, NetLogThreads) {
|
| + ChromeNetLog log;
|
| + ChromeNetLogTestThread threads[kThreads];
|
| +
|
| + for (int i = 0; i < kThreads; ++i) {
|
| + threads[i].Init(&log);
|
| + threads[i].Start();
|
| + }
|
| +
|
| + for (int i = 0; i < kThreads; ++i)
|
| + threads[i].ReallyStart();
|
| +
|
| + for (int i = 0; i < kThreads; ++i)
|
| + threads[i].Join();
|
| +
|
| + ChromeNetLog::EntryList entries;
|
| + log.GetAllPassivelyCapturedEvents(&entries);
|
| + EXPECT_EQ(0u, entries.size());
|
| +}
|
|
|
| Property changes on: chrome\browser\net\chrome_net_log_unittest.cc
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|