1/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2/*
3 *     Copyright 2018 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/**
19 * Tests that Phosphor macros work correctly when phosphor is disabled.
20 */
21
22#define PHOSPHOR_DISABLED 1
23
24#include "macro_test.h"
25
26class MacroDisabledTraceEventTest : public MacroTraceEventTest {};
27
28/**
29 * Test that when Phosphor is disabled the LockGuard still locks / unlocks
30 * the mutex.
31 */
32TEST_F(MacroDisabledTraceEventTest, LockGuard) {
33    MockUniqueLock m;
34    {
35        testing::InSequence dummy;
36        EXPECT_CALL(m, lock()).Times(1);
37        EXPECT_CALL(m, unlock()).Times(1);
38        // Expect no events to be logged when disabled.
39        verifications.clear();
40
41        TRACE_LOCKGUARD(m, "category", "name");
42    }
43
44    {
45        testing::InSequence dummy;
46        EXPECT_CALL(m, lock()).Times(1);
47        EXPECT_CALL(m, unlock()).Times(1);
48        // Expect no events to be logged when disabled.
49        verifications.clear();
50
51        TRACE_LOCKGUARD_TIMED(
52                m, "category", "name", std::chrono::microseconds(1));
53    }
54}
55