xref: /aosp_15_r20/external/libchrome/base/vlog_unittest.cc (revision 635a864187cb8b6c713ff48b7e790a6b21769273)
1*635a8641SAndroid Build Coastguard Worker // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file.
4*635a8641SAndroid Build Coastguard Worker 
5*635a8641SAndroid Build Coastguard Worker #include "base/vlog.h"
6*635a8641SAndroid Build Coastguard Worker 
7*635a8641SAndroid Build Coastguard Worker #include "base/logging.h"
8*635a8641SAndroid Build Coastguard Worker #include "base/time/time.h"
9*635a8641SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h"
10*635a8641SAndroid Build Coastguard Worker 
11*635a8641SAndroid Build Coastguard Worker namespace logging {
12*635a8641SAndroid Build Coastguard Worker 
13*635a8641SAndroid Build Coastguard Worker namespace {
14*635a8641SAndroid Build Coastguard Worker 
TEST(VlogTest,NoVmodule)15*635a8641SAndroid Build Coastguard Worker TEST(VlogTest, NoVmodule) {
16*635a8641SAndroid Build Coastguard Worker   int min_log_level = 0;
17*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0,
18*635a8641SAndroid Build Coastguard Worker             VlogInfo(std::string(), std::string(), &min_log_level)
19*635a8641SAndroid Build Coastguard Worker                 .GetVlogLevel("test1"));
20*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0,
21*635a8641SAndroid Build Coastguard Worker             VlogInfo("0", std::string(), &min_log_level).GetVlogLevel("test2"));
22*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(
23*635a8641SAndroid Build Coastguard Worker       0, VlogInfo("blah", std::string(), &min_log_level).GetVlogLevel("test3"));
24*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(
25*635a8641SAndroid Build Coastguard Worker       0,
26*635a8641SAndroid Build Coastguard Worker       VlogInfo("0blah1", std::string(), &min_log_level).GetVlogLevel("test4"));
27*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(1,
28*635a8641SAndroid Build Coastguard Worker             VlogInfo("1", std::string(), &min_log_level).GetVlogLevel("test5"));
29*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(5,
30*635a8641SAndroid Build Coastguard Worker             VlogInfo("5", std::string(), &min_log_level).GetVlogLevel("test6"));
31*635a8641SAndroid Build Coastguard Worker }
32*635a8641SAndroid Build Coastguard Worker 
TEST(VlogTest,MatchVlogPattern)33*635a8641SAndroid Build Coastguard Worker TEST(VlogTest, MatchVlogPattern) {
34*635a8641SAndroid Build Coastguard Worker   // Degenerate cases.
35*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("", ""));
36*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("", "****"));
37*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(MatchVlogPattern("", "x"));
38*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(MatchVlogPattern("x", ""));
39*635a8641SAndroid Build Coastguard Worker 
40*635a8641SAndroid Build Coastguard Worker   // Basic.
41*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("blah", "blah"));
42*635a8641SAndroid Build Coastguard Worker 
43*635a8641SAndroid Build Coastguard Worker   // ? should match exactly one character.
44*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("blah", "bl?h"));
45*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(MatchVlogPattern("blh", "bl?h"));
46*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(MatchVlogPattern("blaah", "bl?h"));
47*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("blah", "?lah"));
48*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(MatchVlogPattern("lah", "?lah"));
49*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(MatchVlogPattern("bblah", "?lah"));
50*635a8641SAndroid Build Coastguard Worker 
51*635a8641SAndroid Build Coastguard Worker   // * can match any number (even 0) of characters.
52*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("blah", "bl*h"));
53*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("blabcdefh", "bl*h"));
54*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("blh", "bl*h"));
55*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("blah", "*blah"));
56*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("ohblah", "*blah"));
57*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("blah", "blah*"));
58*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("blahhhh", "blah*"));
59*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("blahhhh", "blah*"));
60*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("blah", "*blah*"));
61*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("blahhhh", "*blah*"));
62*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("bbbblahhhh", "*blah*"));
63*635a8641SAndroid Build Coastguard Worker 
64*635a8641SAndroid Build Coastguard Worker   // Multiple *s should work fine.
65*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("ballaah", "b*la*h"));
66*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("blah", "b*la*h"));
67*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("bbbblah", "b*la*h"));
68*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("blaaah", "b*la*h"));
69*635a8641SAndroid Build Coastguard Worker 
70*635a8641SAndroid Build Coastguard Worker   // There should be no escaping going on.
71*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("bl\\ah", "bl\\?h"));
72*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(MatchVlogPattern("bl?h", "bl\\?h"));
73*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("bl\\aaaah", "bl\\*h"));
74*635a8641SAndroid Build Coastguard Worker   EXPECT_FALSE(MatchVlogPattern("bl*h", "bl\\*h"));
75*635a8641SAndroid Build Coastguard Worker 
76*635a8641SAndroid Build Coastguard Worker   // Any slash matches any slash.
77*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("/b\\lah", "/b\\lah"));
78*635a8641SAndroid Build Coastguard Worker   EXPECT_TRUE(MatchVlogPattern("\\b/lah", "/b\\lah"));
79*635a8641SAndroid Build Coastguard Worker }
80*635a8641SAndroid Build Coastguard Worker 
TEST(VlogTest,VmoduleBasic)81*635a8641SAndroid Build Coastguard Worker TEST(VlogTest, VmoduleBasic) {
82*635a8641SAndroid Build Coastguard Worker   const char kVSwitch[] = "-1";
83*635a8641SAndroid Build Coastguard Worker   const char kVModuleSwitch[] =
84*635a8641SAndroid Build Coastguard Worker       "foo=,bar=0,baz=blah,,qux=0blah1,quux=1,corge.ext=5";
85*635a8641SAndroid Build Coastguard Worker   int min_log_level = 0;
86*635a8641SAndroid Build Coastguard Worker   VlogInfo vlog_info(kVSwitch, kVModuleSwitch, &min_log_level);
87*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(-1, vlog_info.GetVlogLevel("/path/to/grault.cc"));
88*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, vlog_info.GetVlogLevel("/path/to/foo.cc"));
89*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, vlog_info.GetVlogLevel("D:\\Path\\To\\bar-inl.mm"));
90*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(-1, vlog_info.GetVlogLevel("D:\\path\\to what/bar_unittest.m"));
91*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, vlog_info.GetVlogLevel("baz.h"));
92*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, vlog_info.GetVlogLevel("/another/path/to/qux.h"));
93*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(1, vlog_info.GetVlogLevel("/path/to/quux"));
94*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(5, vlog_info.GetVlogLevel("c:\\path/to/corge.ext.h"));
95*635a8641SAndroid Build Coastguard Worker }
96*635a8641SAndroid Build Coastguard Worker 
TEST(VlogTest,VmoduleDirs)97*635a8641SAndroid Build Coastguard Worker TEST(VlogTest, VmoduleDirs) {
98*635a8641SAndroid Build Coastguard Worker   const char kVModuleSwitch[] =
99*635a8641SAndroid Build Coastguard Worker       "foo/bar.cc=1,baz\\*\\qux.cc=2,*quux/*=3,*/*-inl.h=4";
100*635a8641SAndroid Build Coastguard Worker   int min_log_level = 0;
101*635a8641SAndroid Build Coastguard Worker   VlogInfo vlog_info(std::string(), kVModuleSwitch, &min_log_level);
102*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, vlog_info.GetVlogLevel("/foo/bar.cc"));
103*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, vlog_info.GetVlogLevel("bar.cc"));
104*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(1, vlog_info.GetVlogLevel("foo/bar.cc"));
105*635a8641SAndroid Build Coastguard Worker 
106*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, vlog_info.GetVlogLevel("baz/grault/qux.h"));
107*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, vlog_info.GetVlogLevel("/baz/grault/qux.cc"));
108*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(2, vlog_info.GetVlogLevel("baz/grault/qux.cc"));
109*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(2, vlog_info.GetVlogLevel("baz/grault/blah/qux.cc"));
110*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(2, vlog_info.GetVlogLevel("baz\\grault\\qux.cc"));
111*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(2, vlog_info.GetVlogLevel("baz\\grault//blah\\qux.cc"));
112*635a8641SAndroid Build Coastguard Worker 
113*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, vlog_info.GetVlogLevel("/foo/bar/baz/quux.cc"));
114*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(3, vlog_info.GetVlogLevel("/foo/bar/baz/quux/grault.cc"));
115*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(3, vlog_info.GetVlogLevel("/foo\\bar/baz\\quux/grault.cc"));
116*635a8641SAndroid Build Coastguard Worker 
117*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(0, vlog_info.GetVlogLevel("foo/bar/test-inl.cc"));
118*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(4, vlog_info.GetVlogLevel("foo/bar/test-inl.h"));
119*635a8641SAndroid Build Coastguard Worker   EXPECT_EQ(4, vlog_info.GetVlogLevel("foo/bar/baz/blah-inl.h"));
120*635a8641SAndroid Build Coastguard Worker }
121*635a8641SAndroid Build Coastguard Worker 
122*635a8641SAndroid Build Coastguard Worker }  // namespace
123*635a8641SAndroid Build Coastguard Worker 
124*635a8641SAndroid Build Coastguard Worker }  // namespace logging
125