|
16 | 16 |
|
17 | 17 | #include "src/trace_processor/importers/json/json_trace_tokenizer.h" |
18 | 18 |
|
19 | | -#include <json/value.h> |
| 19 | +#include <cstring> |
| 20 | +#include <string> |
20 | 21 |
|
21 | | -#include "src/trace_processor/importers/json/json_utils.h" |
22 | 22 | #include "test/gtest_and_gmock.h" |
23 | 23 |
|
24 | | -namespace perfetto { |
25 | | -namespace trace_processor { |
26 | | -namespace { |
27 | | - |
28 | | -TEST(JsonTraceTokenizerTest, ReadDictSuccess) { |
29 | | - const char* start = R"({ "foo": "bar" })"; |
30 | | - const char* end = start + strlen(start); |
31 | | - const char* next = nullptr; |
32 | | - base::StringView value; |
33 | | - ReadDictRes result = ReadOneJsonDict(start, end, &value, &next); |
34 | | - |
35 | | - ASSERT_EQ(result, ReadDictRes::kFoundDict); |
36 | | - ASSERT_EQ(next, end); |
37 | | - |
38 | | - Json::Value parsed = *json::ParseJsonString(value); |
39 | | - ASSERT_EQ(parsed["foo"].asString(), "bar"); |
40 | | -} |
41 | | - |
42 | | -TEST(JsonTraceTokenizerTest, ReadDictQuotedBraces) { |
43 | | - const char* start = R"({ "foo": "}\"bar{\\" })"; |
44 | | - const char* end = start + strlen(start); |
45 | | - const char* next = nullptr; |
46 | | - base::StringView value; |
47 | | - ReadDictRes result = ReadOneJsonDict(start, end, &value, &next); |
48 | | - |
49 | | - ASSERT_EQ(result, ReadDictRes::kFoundDict); |
50 | | - ASSERT_EQ(next, end); |
51 | | - |
52 | | - Json::Value parsed = *json::ParseJsonString(value); |
53 | | - ASSERT_EQ(parsed["foo"].asString(), "}\"bar{\\"); |
54 | | -} |
55 | | - |
56 | | -TEST(JsonTraceTokenizerTest, ReadDictTwoDicts) { |
57 | | - const char* start = R"({"foo": 1}, {"bar": 2})"; |
58 | | - const char* middle = start + strlen(R"({"foo": 1})"); |
59 | | - const char* end = start + strlen(start); |
60 | | - const char* next = nullptr; |
61 | | - base::StringView value; |
62 | | - |
63 | | - ASSERT_EQ(ReadOneJsonDict(start, end, &value, &next), |
64 | | - ReadDictRes::kFoundDict); |
65 | | - ASSERT_EQ(next, middle); |
66 | | - |
67 | | - Json::Value parsed = *json::ParseJsonString(value); |
68 | | - ASSERT_EQ(parsed["foo"].asInt(), 1); |
69 | | - |
70 | | - ASSERT_EQ(ReadOneJsonDict(next, end, &value, &next), ReadDictRes::kFoundDict); |
71 | | - ASSERT_EQ(next, end); |
72 | | - |
73 | | - parsed = *json::ParseJsonString(value); |
74 | | - ASSERT_EQ(parsed["bar"].asInt(), 2); |
75 | | -} |
76 | | - |
77 | | -TEST(JsonTraceTokenizerTest, ReadDictNeedMoreData) { |
78 | | - const char* start = R"({"foo": 1)"; |
79 | | - const char* end = start + strlen(start); |
80 | | - const char* next = nullptr; |
81 | | - base::StringView value; |
| 24 | +#include <json/value.h> |
82 | 25 |
|
83 | | - ASSERT_EQ(ReadOneJsonDict(start, end, &value, &next), |
84 | | - ReadDictRes::kNeedsMoreData); |
85 | | - ASSERT_EQ(next, nullptr); |
86 | | -} |
| 26 | +namespace perfetto::trace_processor { |
| 27 | +namespace { |
87 | 28 |
|
88 | 29 | TEST(JsonTraceTokenizerTest, ReadKeyIntValue) { |
89 | 30 | const char* start = R"("Test": 01234, )"; |
@@ -225,53 +166,5 @@ TEST(JsonTraceTokenizerTest, ReadSystraceEndOfData) { |
225 | 166 | ASSERT_EQ(next, end); |
226 | 167 | } |
227 | 168 |
|
228 | | -TEST(JsonTraceTokenizerTest, ExtractValueForJsonKey) { |
229 | | - std::optional<std::string> line; |
230 | | - |
231 | | - ASSERT_TRUE(ExtractValueForJsonKey(R"({"ts": 149029})", "ts", &line).ok()); |
232 | | - ASSERT_EQ(*line, "149029"); |
233 | | - |
234 | | - ASSERT_TRUE(ExtractValueForJsonKey(R"( |
235 | | - { |
236 | | - "lots_of": "whitespace" |
237 | | - } |
238 | | - )", |
239 | | - "lots_of", &line) |
240 | | - .ok()); |
241 | | - ASSERT_EQ(*line, "whitespace"); |
242 | | - |
243 | | - ASSERT_TRUE(ExtractValueForJsonKey(R"( |
244 | | - { |
245 | | - "lots_of": "whitespace" , |
246 | | - "other": "value" |
247 | | - } |
248 | | - )", |
249 | | - "other", &line) |
250 | | - .ok()); |
251 | | - ASSERT_EQ(*line, "value"); |
252 | | - |
253 | | - ASSERT_TRUE(ExtractValueForJsonKey(R"({ |
254 | | - "ts": 149029, "foo": "bar" |
255 | | - })", |
256 | | - "ts", &line) |
257 | | - .ok()); |
258 | | - ASSERT_EQ(*line, "149029"); |
259 | | - |
260 | | - ASSERT_TRUE(ExtractValueForJsonKey(R"({ |
261 | | - "ts": 149029, "foo": "bar" |
262 | | - })", |
263 | | - "foo", &line) |
264 | | - .ok()); |
265 | | - ASSERT_EQ(*line, "bar"); |
266 | | - |
267 | | - ASSERT_TRUE(ExtractValueForJsonKey(R"({ |
268 | | - "nested": {"ts": 149029, "foo": "bar"} |
269 | | - })", |
270 | | - "nested", &line) |
271 | | - .ok()); |
272 | | - ASSERT_EQ(*line, R"({"ts": 149029, "foo": "bar"})"); |
273 | | -} |
274 | | - |
275 | 169 | } // namespace |
276 | | -} // namespace trace_processor |
277 | | -} // namespace perfetto |
| 170 | +} // namespace perfetto::trace_processor |
0 commit comments