| Index: services/resource_coordinator/public/cpp/memory/memory_dump_manager_delegate_impl_unittest.cc
|
| diff --git a/services/resource_coordinator/public/cpp/memory/memory_dump_manager_delegate_impl_unittest.cc b/services/resource_coordinator/public/cpp/memory/memory_dump_manager_delegate_impl_unittest.cc
|
| deleted file mode 100644
|
| index a0fcd2daec3c65f51d92447481d070192b7320fc..0000000000000000000000000000000000000000
|
| --- a/services/resource_coordinator/public/cpp/memory/memory_dump_manager_delegate_impl_unittest.cc
|
| +++ /dev/null
|
| @@ -1,135 +0,0 @@
|
| -// Copyright 2017 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 "services/resource_coordinator/public/cpp/memory/memory_dump_manager_delegate_impl.h"
|
| -#include "base/bind.h"
|
| -#include "base/bind_helpers.h"
|
| -#include "base/message_loop/message_loop.h"
|
| -#include "base/run_loop.h"
|
| -#include "base/trace_event/memory_dump_manager.h"
|
| -#include "base/trace_event/memory_dump_request_args.h"
|
| -#include "base/trace_event/trace_config.h"
|
| -#include "base/trace_event/trace_log.h"
|
| -#include "mojo/public/cpp/bindings/binding_set.h"
|
| -#include "services/resource_coordinator/public/cpp/memory/coordinator.h"
|
| -#include "services/resource_coordinator/public/interfaces/memory/memory_instrumentation.mojom.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -
|
| -using base::trace_event::MemoryDumpLevelOfDetail;
|
| -using base::trace_event::MemoryDumpManager;
|
| -using base::trace_event::MemoryDumpType;
|
| -
|
| -namespace memory_instrumentation {
|
| -
|
| -class MockCoordinator : public Coordinator, public mojom::Coordinator {
|
| - public:
|
| - void BindCoordinatorRequest(mojom::CoordinatorRequest request) override {
|
| - bindings_.AddBinding(this, std::move(request));
|
| - }
|
| -
|
| - void RegisterProcessLocalDumpManager(
|
| - mojom::ProcessLocalDumpManagerPtr process_manager) override {}
|
| -
|
| - void RequestGlobalMemoryDump(
|
| - const base::trace_event::MemoryDumpRequestArgs& args,
|
| - const RequestGlobalMemoryDumpCallback& callback) override {
|
| - callback.Run(args.dump_guid, true);
|
| - }
|
| -
|
| - private:
|
| - mojo::BindingSet<mojom::Coordinator> bindings_;
|
| -};
|
| -
|
| -class MemoryDumpManagerDelegateImplTest : public testing::Test {
|
| - public:
|
| - void SetUp() override {
|
| - message_loop_.reset(new base::MessageLoop());
|
| - coordinator_.reset(new MockCoordinator());
|
| - mdm_.reset(new MemoryDumpManager());
|
| - MemoryDumpManager::SetInstanceForTesting(mdm_.get());
|
| - MemoryDumpManagerDelegateImpl::Config config(coordinator_.get());
|
| - auto delegate = base::MakeUnique<MemoryDumpManagerDelegateImpl>(config);
|
| - delegate->SetAsNonCoordinatorForTesting();
|
| - mdm_->Initialize(std::move(delegate));
|
| -
|
| - // Enable tracing.
|
| - std::string category_filter = "-*,";
|
| - category_filter += MemoryDumpManager::kTraceCategory;
|
| - base::trace_event::TraceConfig trace_config(category_filter, "");
|
| - base::trace_event::TraceLog::GetInstance()->SetEnabled(
|
| - trace_config, base::trace_event::TraceLog::RECORDING_MODE);
|
| -
|
| - // Reset the counters.
|
| - expected_callback_calls_ = 0;
|
| - dump_requests_received_by_coordinator_ = 0;
|
| - quit_closure_.Reset();
|
| - }
|
| -
|
| - void TearDown() override {
|
| - base::trace_event::TraceLog::GetInstance()->SetDisabled();
|
| - MemoryDumpManager::SetInstanceForTesting(nullptr);
|
| - mdm_.reset();
|
| - coordinator_.reset();
|
| - message_loop_.reset();
|
| - }
|
| -
|
| - void OnGlobalMemoryDumpDone(int more_requests,
|
| - uint64_t dump_guid,
|
| - bool success) {
|
| - EXPECT_GT(expected_callback_calls_, 0);
|
| - EXPECT_FALSE(quit_closure_.is_null());
|
| -
|
| - dump_requests_received_by_coordinator_ += success ? 1 : 0;
|
| - expected_callback_calls_--;
|
| - if (expected_callback_calls_ == 0)
|
| - quit_closure_.Run();
|
| -
|
| - if (more_requests > 0)
|
| - SequentiallyRequestGlobalDumps(more_requests);
|
| - }
|
| -
|
| - void SequentiallyRequestGlobalDumps(int num_requests) {
|
| - MemoryDumpManager::GetInstance()->RequestGlobalDump(
|
| - MemoryDumpType::EXPLICITLY_TRIGGERED, MemoryDumpLevelOfDetail::LIGHT,
|
| - base::Bind(&MemoryDumpManagerDelegateImplTest::OnGlobalMemoryDumpDone,
|
| - base::Unretained(this), num_requests - 1));
|
| - }
|
| -
|
| - int expected_callback_calls_;
|
| - int dump_requests_received_by_coordinator_;
|
| - base::Closure quit_closure_;
|
| -
|
| - private:
|
| - std::unique_ptr<base::MessageLoop> message_loop_;
|
| - std::unique_ptr<MockCoordinator> coordinator_;
|
| - std::unique_ptr<MemoryDumpManager> mdm_;
|
| -};
|
| -
|
| -// Makes several global dump requests each after receiving the ACK for the
|
| -// previous one. There should be no throttling and all requests should be
|
| -// forwarded to the coordinator.
|
| -TEST_F(MemoryDumpManagerDelegateImplTest, NonOverlappingMemoryDumpRequests) {
|
| - base::RunLoop run_loop;
|
| - expected_callback_calls_ = 3;
|
| - quit_closure_ = run_loop.QuitClosure();
|
| - SequentiallyRequestGlobalDumps(3);
|
| - run_loop.Run();
|
| - EXPECT_EQ(3, dump_requests_received_by_coordinator_);
|
| -}
|
| -
|
| -// Makes several global dump requests without waiting for previous requests to
|
| -// finish. Only the first request should make it to the coordinator. The rest
|
| -// should be cancelled.
|
| -TEST_F(MemoryDumpManagerDelegateImplTest, OverlappingMemoryDumpRequests) {
|
| - base::RunLoop run_loop;
|
| - expected_callback_calls_ = 3;
|
| - quit_closure_ = run_loop.QuitClosure();
|
| - SequentiallyRequestGlobalDumps(1);
|
| - SequentiallyRequestGlobalDumps(1);
|
| - SequentiallyRequestGlobalDumps(1);
|
| - run_loop.Run();
|
| - EXPECT_EQ(1, dump_requests_received_by_coordinator_);
|
| -}
|
| -
|
| -} // namespace memory_instrumentation
|
|
|