1 /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2 /*
3  *     Copyright 2019 Couchbase, Inc.
4  *
5  *   Licensed under the Apache License, Version 2.0 (the "License");
6  *   you may not use this file except in compliance with the License.
7  *   You may obtain a copy of the License at
8  *
9  *       http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *   Unless required by applicable law or agreed to in writing, software
12  *   distributed under the License is distributed on an "AS IS" BASIS,
13  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *   See the License for the specific language governing permissions and
15  *   limitations under the License.
16  */
17 
18 #include "mock_executor_pool.h"
19 #include "objectregistry.h"
20 #include "taskqueue.h"
21 
replaceExecutorPoolWithMock()22 void MockExecutorPool::replaceExecutorPoolWithMock() {
23     LockHolder lh(initGuard);
24     auto* executor = ExecutorPool::instance.load();
25     if (executor) {
26         executor->shutdown();
27     }
28     auto* epEngine = ObjectRegistry::onSwitchThread(nullptr, true);
29     executor = new MockExecutorPool(NUM_TASK_GROUPS);
30     ObjectRegistry::onSwitchThread(epEngine);
31     instance.store(executor);
32 }
33 
isTaskScheduled(const task_type_t queueType, const std::string& taskName)34 bool MockExecutorPool::isTaskScheduled(const task_type_t queueType,
35                                        const std::string& taskName) {
36     LockHolder lh(tMutex);
37     for (const auto& it : taskLocator) {
38         const auto& taskQueuePair = it.second;
39         if (taskName == taskQueuePair.first->getDescription() &&
40             taskQueuePair.second->getQueueType() == queueType) {
41             return true;
42         }
43     }
44     return false;
45 }
46