proxygen
LogLevelTest.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2017-present Facebook, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #include <folly/logging/LogLevel.h>
17 #include <folly/Conv.h>
18 #include <folly/Random.h>
20 
21 using namespace folly;
22 
23 TEST(LogLevel, fromString) {
26  EXPECT_EQ(
27  LogLevel::UNINITIALIZED, stringToLogLevel("LogLevel::UNINITIALIZED"));
28 
32  EXPECT_EQ(LogLevel::NONE, stringToLogLevel("LogLevel::none"));
33 
37  EXPECT_EQ(LogLevel::DBG, stringToLogLevel("loglevel::dEBug"));
38  EXPECT_EQ(LogLevel::DBG, stringToLogLevel("loglevel::DBG"));
39 
42  EXPECT_EQ(LogLevel::INFO, stringToLogLevel("loglevel(INFO)"));
43 
47 
53 
56 
60 
64 
68  EXPECT_EQ(LogLevel::MAX_LEVEL, stringToLogLevel("LogLevel::MAX_LEVEL"));
69 
77  EXPECT_EQ(LogLevel::DBG, stringToLogLevel("LogLevel(1000)"));
78 
83  EXPECT_EQ(LogLevel::INFO + 1, stringToLogLevel("Info998"));
86  EXPECT_EQ(LogLevel::INFO6, stringToLogLevel("LogLevel(2993)"));
87 
88  EXPECT_THROW(stringToLogLevel("foobar"), std::range_error);
89  EXPECT_THROW(stringToLogLevel("dbgx"), std::range_error);
90  EXPECT_THROW(stringToLogLevel("dbgxyz"), std::range_error);
91  EXPECT_THROW(stringToLogLevel("dbg-1"), std::range_error);
92  EXPECT_THROW(stringToLogLevel("dbg12345"), std::range_error);
93  EXPECT_THROW(stringToLogLevel("900z"), std::range_error);
94 }
95 
108 
113  EXPECT_EQ("DBG96", logLevelToString(static_cast<LogLevel>(1903)));
114  EXPECT_EQ("DBG64", logLevelToString(LogLevel::DBG4 - 60));
115 
120  EXPECT_EQ("INFO86", logLevelToString(static_cast<LogLevel>(2913)));
121  EXPECT_EQ("INFO57", logLevelToString(LogLevel::INFO7 - 50));
122 
123  EXPECT_EQ("LogLevel(123)", logLevelToString(static_cast<LogLevel>(123)));
124 }
125 
126 TEST(LogLevel, toStringAndBack) {
127  // Check that stringToLogLevel(logLevelToString()) is the identity function
128  auto checkLevel = [](LogLevel level) {
129  auto stringForm = logLevelToString(level);
130  auto outputLevel = stringToLogLevel(stringForm);
131  EXPECT_EQ(level, outputLevel)
132  << "error converting " << level << " (" << static_cast<uint32_t>(level)
133  << ") to string and back. String is " << stringForm;
134  };
135 
136  // Check all of the named levels
137  checkLevel(LogLevel::UNINITIALIZED);
138  checkLevel(LogLevel::NONE);
139  checkLevel(LogLevel::DBG);
140  checkLevel(LogLevel::DBG0);
141  checkLevel(LogLevel::DBG1);
142  checkLevel(LogLevel::DBG2);
143  checkLevel(LogLevel::DBG3);
144  checkLevel(LogLevel::DBG4);
145  checkLevel(LogLevel::DBG5);
146  checkLevel(LogLevel::DBG6);
147  checkLevel(LogLevel::DBG7);
148  checkLevel(LogLevel::DBG8);
149  checkLevel(LogLevel::DBG9);
150  checkLevel(LogLevel::INFO);
151  checkLevel(LogLevel::WARN);
152  checkLevel(LogLevel::WARNING);
153  checkLevel(LogLevel::ERR);
154  checkLevel(LogLevel::CRITICAL);
155  checkLevel(LogLevel::DFATAL);
156  checkLevel(LogLevel::FATAL);
157 
158  // Try with some random integer values
159  for (uint32_t numIters = 0; numIters < 10000; ++numIters) {
160  auto levelValue =
161  folly::Random::rand32(static_cast<uint32_t>(LogLevel::MAX_LEVEL));
162  checkLevel(static_cast<LogLevel>(levelValue));
163  }
164 }
folly::StringPiece toString(StateEnum state)
Definition: State.cpp:16
#define EXPECT_THROW(statement, expected_exception)
Definition: gtest.h:1843
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:1922
—— Concurrent Priority Queue Implementation ——
Definition: AtomicBitSet.h:29
LogLevel stringToLogLevel(StringPiece name)
Definition: LogLevel.cpp:42
string logLevelToString(LogLevel level)
Definition: LogLevel.cpp:109
LogLevel
Definition: LogLevel.h:38
static uint32_t rand32()
Definition: Random.h:213
TEST(SequencedExecutor, CPUThreadPoolExecutor)