blob: 81d93b62eb567c13e0130ed9dfb5c70cd231af8c [file] [log] [blame]
David Chendd896942017-09-26 11:44:40 -07001// Copyright (C) 2017 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#define LOG_TAG "statsd_test"
16
17#include "frameworks/base/cmds/statsd/src/statsd_config.pb.h"
18#include "../src/matchers/LogEntryMatcherManager.h"
19#include "../src/parse_util.h"
20#include <log/logprint.h>
21#include <log/log_read.h>
22#include <log/log_event_list.h>
23#include <gtest/gtest.h>
24
25#include <stdio.h>
26
27using namespace android::os::statsd;
28using std::unordered_map;
29
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070030const int kTagIdWakelock = 123;
31const int kKeyIdState = 45;
32const int kKeyIdPackageVersion = 67;
33
David Chendd896942017-09-26 11:44:40 -070034#ifdef __ANDROID__
35TEST(LogEntryMatcherTest, TestSimpleMatcher) {
36 // Set up the matcher
37 LogEntryMatcher matcher;
38 auto simpleMatcher = matcher.mutable_simple_log_entry_matcher();
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070039 simpleMatcher->add_tag(kTagIdWakelock);
David Chendd896942017-09-26 11:44:40 -070040
41 unordered_map<int, long> intMap;
42 unordered_map<int, string> strMap;
43 unordered_map<int, float> floatMap;
44 unordered_map<int, bool> boolMap;
45
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070046 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap, boolMap));
David Chendd896942017-09-26 11:44:40 -070047}
48
49TEST(LogEntryMatcherTest, TestBoolMatcher) {
50 // Set up the matcher
51 LogEntryMatcher matcher;
52 auto simpleMatcher = matcher.mutable_simple_log_entry_matcher();
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070053 simpleMatcher->add_tag(kTagIdWakelock);
David Chendd896942017-09-26 11:44:40 -070054 auto keyValue = simpleMatcher->add_key_value_matcher();
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070055 keyValue->mutable_key_matcher()->set_key(kKeyIdState);
David Chendd896942017-09-26 11:44:40 -070056
57
58 unordered_map<int, long> intMap;
59 unordered_map<int, string> strMap;
60 unordered_map<int, float> floatMap;
61 unordered_map<int, bool> boolMap;
62
63 keyValue->set_eq_bool(true);
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070064 boolMap[kKeyIdState] = true;
65 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -070066 boolMap));
67
68 keyValue->set_eq_bool(false);
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070069 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -070070 floatMap, boolMap));
71
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070072 boolMap[kKeyIdState] = false;
73 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -070074 boolMap));
75}
76
77TEST(LogEntryMatcherTest, TestStringMatcher) {
78 // Set up the matcher
79 LogEntryMatcher matcher;
80 auto simpleMatcher = matcher.mutable_simple_log_entry_matcher();
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070081 simpleMatcher->add_tag(kTagIdWakelock);
David Chendd896942017-09-26 11:44:40 -070082 auto keyValue = simpleMatcher->add_key_value_matcher();
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070083 keyValue->mutable_key_matcher()->set_key(kKeyIdState);
David Chendd896942017-09-26 11:44:40 -070084 keyValue->set_eq_string("wakelock_name");
85
86 unordered_map<int, long> intMap;
87 unordered_map<int, string> strMap;
88 unordered_map<int, float> floatMap;
89 unordered_map<int, bool> boolMap;
90
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070091 strMap[kKeyIdState] = "wakelock_name";
David Chendd896942017-09-26 11:44:40 -070092
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -070093 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap, boolMap));
David Chendd896942017-09-26 11:44:40 -070094}
95
96TEST(LogEntryMatcherTest, TestIntComparisonMatcher) {
97 // Set up the matcher
98 LogEntryMatcher matcher;
99 auto simpleMatcher = matcher.mutable_simple_log_entry_matcher();
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700100 simpleMatcher->add_tag(kTagIdWakelock);
David Chendd896942017-09-26 11:44:40 -0700101 auto keyValue = simpleMatcher->add_key_value_matcher();
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700102 keyValue->mutable_key_matcher()->set_key(kKeyIdState);
David Chendd896942017-09-26 11:44:40 -0700103
104 unordered_map<int, long> intMap;
105 unordered_map<int, string> strMap;
106 unordered_map<int, float> floatMap;
107 unordered_map<int, bool> boolMap;
108
109 keyValue->set_lt_int(10);
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700110 intMap[kKeyIdState] = 11;
111 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700112 floatMap, boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700113 intMap[kKeyIdState] = 10;
114 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700115 floatMap, boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700116 intMap[kKeyIdState] = 9;
117 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700118 floatMap, boolMap));
119
120 keyValue->set_gt_int(10);
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700121 intMap[kKeyIdState] = 11;
122 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700123 floatMap, boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700124 intMap[kKeyIdState] = 10;
125 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700126 floatMap, boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700127 intMap[kKeyIdState] = 9;
128 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700129 floatMap, boolMap));
130}
131
132TEST(LogEntryMatcherTest, TestIntWithEqualityComparisonMatcher) {
133 // Set up the matcher
134 LogEntryMatcher matcher;
135 auto simpleMatcher = matcher.mutable_simple_log_entry_matcher();
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700136 simpleMatcher->add_tag(kTagIdWakelock);
David Chendd896942017-09-26 11:44:40 -0700137 auto keyValue = simpleMatcher->add_key_value_matcher();
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700138 keyValue->mutable_key_matcher()->set_key(kKeyIdState);
David Chendd896942017-09-26 11:44:40 -0700139
140 unordered_map<int, long> intMap;
141 unordered_map<int, string> strMap;
142 unordered_map<int, float> floatMap;
143 unordered_map<int, bool> boolMap;
144
145 keyValue->set_lte_int(10);
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700146 intMap[kKeyIdState] = 11;
147 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700148 floatMap, boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700149 intMap[kKeyIdState] = 10;
150 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700151 floatMap, boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700152 intMap[kKeyIdState] = 9;
153 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700154 floatMap, boolMap));
155
156 keyValue->set_gte_int(10);
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700157 intMap[kKeyIdState] = 11;
158 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700159 floatMap, boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700160 intMap[kKeyIdState] = 10;
161 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700162 floatMap, boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700163 intMap[kKeyIdState] = 9;
164 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700165 floatMap, boolMap));
166}
167
168TEST(LogEntryMatcherTest, TestFloatComparisonMatcher) {
169 // Set up the matcher
170 LogEntryMatcher matcher;
171 auto simpleMatcher = matcher.mutable_simple_log_entry_matcher();
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700172 simpleMatcher->add_tag(kTagIdWakelock);
David Chendd896942017-09-26 11:44:40 -0700173 auto keyValue = simpleMatcher->add_key_value_matcher();
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700174 keyValue->mutable_key_matcher()->set_key(kKeyIdState);
David Chendd896942017-09-26 11:44:40 -0700175
176 unordered_map<int, long> intMap;
177 unordered_map<int, string> strMap;
178 unordered_map<int, float> floatMap;
179 unordered_map<int, bool> boolMap;
180
181 keyValue->set_lt_float(10.0);
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700182 floatMap[kKeyIdState] = 10.1;
183 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700184 floatMap, boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700185 floatMap[kKeyIdState] = 9.9;
186 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700187 floatMap, boolMap));
188
189 keyValue->set_gt_float(10.0);
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700190 floatMap[kKeyIdState] = 10.1;
191 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700192 floatMap, boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700193 floatMap[kKeyIdState] = 9.9;
194 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap,
David Chendd896942017-09-26 11:44:40 -0700195 floatMap, boolMap));
196}
197
198// Helper for the composite matchers.
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700199void addSimpleMatcher(SimpleLogEntryMatcher* simpleMatcher, int tag, int key, int val) {
David Chendd896942017-09-26 11:44:40 -0700200 simpleMatcher->add_tag(tag);
201 auto keyValue = simpleMatcher->add_key_value_matcher();
202 keyValue->mutable_key_matcher()->set_key(key);
203 keyValue->set_eq_int(val);
204}
205
206TEST(LogEntryMatcherTest, TestAndMatcher) {
207 // Set up the matcher
208 LogEntryMatcher matcher;
209 auto combination = matcher.mutable_combination();
210 combination->set_operation(LogicalOperation::AND);
211
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700212 addSimpleMatcher(combination->add_matcher()->mutable_simple_log_entry_matcher(), kTagIdWakelock, kKeyIdState, 3);
213 addSimpleMatcher(combination->add_matcher()->mutable_simple_log_entry_matcher(), kTagIdWakelock, kKeyIdPackageVersion, 4);
David Chendd896942017-09-26 11:44:40 -0700214
215 unordered_map<int, long> intMap;
216 unordered_map<int, string> strMap;
217 unordered_map<int, float> floatMap;
218 unordered_map<int, bool> boolMap;
219
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700220 intMap[kKeyIdPackageVersion] = 4;
221 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap, boolMap));
David Chendd896942017-09-26 11:44:40 -0700222 intMap.clear();
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700223 intMap[kKeyIdState] = 3;
224 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap, boolMap));
David Chendd896942017-09-26 11:44:40 -0700225 intMap.clear();
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700226 intMap[kKeyIdState] = 3;
227 intMap[kKeyIdPackageVersion] = 4;
228 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap, boolMap));
David Chendd896942017-09-26 11:44:40 -0700229}
230
231TEST(LogEntryMatcherTest, TestOrMatcher) {
232 // Set up the matcher
233 LogEntryMatcher matcher;
234 auto combination = matcher.mutable_combination();
235 combination->set_operation(LogicalOperation::OR);
236
237 addSimpleMatcher(combination->add_matcher()->mutable_simple_log_entry_matcher(),
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700238 kTagIdWakelock, kKeyIdState, 3);
David Chendd896942017-09-26 11:44:40 -0700239 addSimpleMatcher(combination->add_matcher()->mutable_simple_log_entry_matcher(),
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700240 kTagIdWakelock, kKeyIdPackageVersion, 4);
David Chendd896942017-09-26 11:44:40 -0700241
242 unordered_map<int, long> intMap;
243 unordered_map<int, string> strMap;
244 unordered_map<int, float> floatMap;
245 unordered_map<int, bool> boolMap;
246
247 // Don't set any key-value pairs.
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700248 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -0700249 boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700250 intMap[kKeyIdPackageVersion] = 4;
251 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -0700252 boolMap));
253 intMap.clear();
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700254 intMap[kKeyIdState] = 3;
255 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -0700256 boolMap));
257 intMap.clear();
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700258 intMap[kKeyIdState] = 3;
259 intMap[kKeyIdPackageVersion] = 4;
260 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -0700261 boolMap));
262}
263
264TEST(LogEntryMatcherTest, TestNotMatcher) {
265 // Set up the matcher
266 LogEntryMatcher matcher;
267 auto combination = matcher.mutable_combination();
268 combination->set_operation(LogicalOperation::NOT);
269
270 // Define first simpleMatcher
271 addSimpleMatcher(combination->add_matcher()->mutable_simple_log_entry_matcher(),
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700272 kTagIdWakelock, kKeyIdState, 3);
David Chendd896942017-09-26 11:44:40 -0700273
274 unordered_map<int, long> intMap;
275 unordered_map<int, string> strMap;
276 unordered_map<int, float> floatMap;
277 unordered_map<int, bool> boolMap;
278
279 // Don't set any key-value pairs.
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700280 intMap[kKeyIdState] = 3;
281 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -0700282 boolMap));
283}
284
285TEST(LogEntryMatcherTest, TestNANDMatcher) {
286 // Set up the matcher
287 LogEntryMatcher matcher;
288 auto combination = matcher.mutable_combination();
289 combination->set_operation(LogicalOperation::NAND);
290
291 addSimpleMatcher(combination->add_matcher()->mutable_simple_log_entry_matcher(),
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700292 kTagIdWakelock, kKeyIdState, 3);
David Chendd896942017-09-26 11:44:40 -0700293 addSimpleMatcher(combination->add_matcher()->mutable_simple_log_entry_matcher(),
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700294 kTagIdWakelock, kKeyIdPackageVersion, 4);
David Chendd896942017-09-26 11:44:40 -0700295
296 unordered_map<int, long> intMap;
297 unordered_map<int, string> strMap;
298 unordered_map<int, float> floatMap;
299 unordered_map<int, bool> boolMap;
300
301 // Don't set any key-value pairs.
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700302 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -0700303 boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700304 intMap[kKeyIdState] = 3;
305 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -0700306 boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700307 intMap[kKeyIdPackageVersion] = 4;
308 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -0700309 boolMap));
310}
311
312TEST(LogEntryMatcherTest, TestNORMatcher) {
313 // Set up the matcher
314 LogEntryMatcher matcher;
315 auto combination = matcher.mutable_combination();
316 combination->set_operation(LogicalOperation::NOR);
317
318 addSimpleMatcher(combination->add_matcher()->mutable_simple_log_entry_matcher(),
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700319 kTagIdWakelock, kKeyIdState, 3);
David Chendd896942017-09-26 11:44:40 -0700320 addSimpleMatcher(combination->add_matcher()->mutable_simple_log_entry_matcher(),
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700321 kTagIdWakelock, kKeyIdPackageVersion, 4);
David Chendd896942017-09-26 11:44:40 -0700322
323 unordered_map<int, long> intMap;
324 unordered_map<int, string> strMap;
325 unordered_map<int, float> floatMap;
326 unordered_map<int, bool> boolMap;
327
328 // Don't set any key-value pairs.
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700329 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -0700330 boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700331 intMap[kKeyIdState] = 3;
332 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -0700333 boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700334 intMap[kKeyIdPackageVersion] = 4;
335 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -0700336 boolMap));
337}
338
339// Tests that a NOT on top of AND is the same as NAND
340TEST(LogEntryMatcherTest, TestMultipleLayerMatcher) {
341 LogEntryMatcher matcher;
342 auto not_combination = matcher.mutable_combination();
343 not_combination->set_operation(LogicalOperation::NOT);
344
345 // Now add the AND
346 auto combination = not_combination->add_matcher()->mutable_combination();
347 combination->set_operation(LogicalOperation::AND);
348 addSimpleMatcher(combination->add_matcher()->mutable_simple_log_entry_matcher(),
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700349 kTagIdWakelock, kKeyIdState, 3);
David Chendd896942017-09-26 11:44:40 -0700350 addSimpleMatcher(combination->add_matcher()->mutable_simple_log_entry_matcher(),
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700351 kTagIdWakelock, kKeyIdPackageVersion, 4);
David Chendd896942017-09-26 11:44:40 -0700352
353 unordered_map<int, long> intMap;
354 unordered_map<int, string> strMap;
355 unordered_map<int, float> floatMap;
356 unordered_map<int, bool> boolMap;
357
358 // Don't set any key-value pairs.
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700359 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -0700360 boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700361 intMap[kKeyIdState] = 3;
362 EXPECT_TRUE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -0700363 boolMap));
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700364 intMap[kKeyIdPackageVersion] = 4;
365 EXPECT_FALSE(LogEntryMatcherManager::matches(matcher, kTagIdWakelock, intMap, strMap, floatMap,
David Chendd896942017-09-26 11:44:40 -0700366 boolMap));
367}
Stefan Lafoncdb1a0e2017-09-27 20:24:15 -0700368
David Chendd896942017-09-26 11:44:40 -0700369#else
370 GTEST_LOG_(INFO) << "This test does nothing.\n";
371#endif