OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "content/browser/tracing/trace_subscriber_stdio.h" | |
6 | |
7 #include "base/file_util.h" | |
8 #include "base/files/scoped_temp_dir.h" | |
9 #include "base/threading/sequenced_worker_pool.h" | |
10 #include "content/public/browser/browser_thread.h" | |
11 #include "testing/gtest/include/gtest/gtest.h" | |
12 | |
13 namespace content { | |
14 | |
15 class TraceSubscriberStdioTest : public ::testing::Test {}; | |
16 | |
17 TEST_F(TraceSubscriberStdioTest, CanWriteArray) { | |
18 base::ScopedTempDir trace_dir; | |
19 ASSERT_TRUE(trace_dir.CreateUniqueTempDir()); | |
20 base::FilePath trace_file(trace_dir.path().AppendASCII("trace.txt")); | |
21 { | |
22 TraceSubscriberStdio subscriber(trace_file, | |
23 TraceSubscriberStdio::FILE_TYPE_ARRAY, | |
24 false); | |
25 | |
26 std::string foo("foo"); | |
27 subscriber.OnTraceDataCollected( | |
28 make_scoped_refptr(base::RefCountedString::TakeString(&foo))); | |
29 | |
30 std::string bar("bar"); | |
31 subscriber.OnTraceDataCollected( | |
32 make_scoped_refptr(base::RefCountedString::TakeString(&bar))); | |
33 | |
34 subscriber.OnEndTracingComplete(); | |
35 } | |
36 BrowserThread::GetBlockingPool()->FlushForTesting(); | |
37 std::string result; | |
38 EXPECT_TRUE(base::ReadFileToString(trace_file, &result)); | |
39 EXPECT_EQ("[foo,bar]", result); | |
40 } | |
41 | |
42 TEST_F(TraceSubscriberStdioTest, CanWritePropertyList) { | |
43 base::ScopedTempDir trace_dir; | |
44 ASSERT_TRUE(trace_dir.CreateUniqueTempDir()); | |
45 base::FilePath trace_file(trace_dir.path().AppendASCII("trace.txt")); | |
46 { | |
47 TraceSubscriberStdio subscriber( | |
48 trace_file, | |
49 TraceSubscriberStdio::FILE_TYPE_PROPERTY_LIST, | |
50 false); | |
51 | |
52 std::string foo("foo"); | |
53 subscriber.OnTraceDataCollected( | |
54 make_scoped_refptr(base::RefCountedString::TakeString(&foo))); | |
55 | |
56 std::string bar("bar"); | |
57 subscriber.OnTraceDataCollected( | |
58 make_scoped_refptr(base::RefCountedString::TakeString(&bar))); | |
59 | |
60 subscriber.OnEndTracingComplete(); | |
61 } | |
62 BrowserThread::GetBlockingPool()->FlushForTesting(); | |
63 std::string result; | |
64 EXPECT_TRUE(base::ReadFileToString(trace_file, &result)); | |
65 EXPECT_EQ("{\"traceEvents\":[foo,bar]}", result); | |
66 } | |
67 | |
68 TEST_F(TraceSubscriberStdioTest, CanWriteSystemDataFirst) { | |
69 base::ScopedTempDir trace_dir; | |
70 ASSERT_TRUE(trace_dir.CreateUniqueTempDir()); | |
71 base::FilePath trace_file(trace_dir.path().AppendASCII("trace.txt")); | |
72 { | |
73 TraceSubscriberStdio subscriber( | |
74 trace_file, | |
75 TraceSubscriberStdio::FILE_TYPE_PROPERTY_LIST, | |
76 true); | |
77 | |
78 std::string foo("foo"); | |
79 subscriber.OnTraceDataCollected( | |
80 make_scoped_refptr(base::RefCountedString::TakeString(&foo))); | |
81 | |
82 std::string bar("bar"); | |
83 subscriber.OnTraceDataCollected( | |
84 make_scoped_refptr(base::RefCountedString::TakeString(&bar))); | |
85 | |
86 std::string systemTrace("event1\nev\"ent\"2\n"); | |
87 subscriber.OnEndSystemTracing( | |
88 make_scoped_refptr(base::RefCountedString::TakeString(&systemTrace))); | |
89 subscriber.OnEndTracingComplete(); | |
90 } | |
91 BrowserThread::GetBlockingPool()->FlushForTesting(); | |
92 std::string result; | |
93 EXPECT_TRUE(base::ReadFileToString(trace_file, &result)); | |
94 EXPECT_EQ( | |
95 "{\"traceEvents\":[foo,bar],\"" | |
96 "systemTraceEvents\":\"event1\\nev\\\"ent\\\"2\\n\"}", | |
97 result); | |
98 } | |
99 | |
100 TEST_F(TraceSubscriberStdioTest, CanWriteSystemDataLast) { | |
101 base::ScopedTempDir trace_dir; | |
102 ASSERT_TRUE(trace_dir.CreateUniqueTempDir()); | |
103 base::FilePath trace_file(trace_dir.path().AppendASCII("trace.txt")); | |
104 { | |
105 TraceSubscriberStdio subscriber( | |
106 trace_file, | |
107 TraceSubscriberStdio::FILE_TYPE_PROPERTY_LIST, | |
108 true); | |
109 | |
110 std::string foo("foo"); | |
111 subscriber.OnTraceDataCollected( | |
112 make_scoped_refptr(base::RefCountedString::TakeString(&foo))); | |
113 | |
114 std::string bar("bar"); | |
115 subscriber.OnTraceDataCollected( | |
116 make_scoped_refptr(base::RefCountedString::TakeString(&bar))); | |
117 | |
118 std::string systemTrace("event1\nev\"ent\"2\n"); | |
119 subscriber.OnEndTracingComplete(); | |
120 subscriber.OnEndSystemTracing( | |
121 make_scoped_refptr(base::RefCountedString::TakeString(&systemTrace))); | |
122 } | |
123 BrowserThread::GetBlockingPool()->FlushForTesting(); | |
124 std::string result; | |
125 EXPECT_TRUE(base::ReadFileToString(trace_file, &result)); | |
126 EXPECT_EQ( | |
127 "{\"traceEvents\":[foo,bar],\"" | |
128 "systemTraceEvents\":\"event1\\nev\\\"ent\\\"2\\n\"}", | |
129 result); | |
130 } | |
131 | |
132 } // namespace content | |
OLD | NEW |