OLD | NEW |
| (Empty) |
1 // Copyright 2016 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 "components/metrics/leak_detector/protobuf_to_mojo_converter.h" | |
6 | |
7 #include "testing/gtest/include/gtest/gtest.h" | |
8 | |
9 namespace metrics { | |
10 namespace leak_detector { | |
11 | |
12 TEST(protobuf_to_mojo_converterTest, ConvertParams) { | |
13 MemoryLeakReportProto::Params params; | |
14 params.set_sampling_rate(0.75); | |
15 params.set_max_stack_depth(19); | |
16 params.set_analysis_interval_bytes(25 * 1024 * 1024); | |
17 params.set_size_suspicion_threshold(8); | |
18 params.set_call_stack_suspicion_threshold(11); | |
19 | |
20 // Convert to equivalent Mojo struct. | |
21 mojo::StructPtr<mojom::LeakDetectorParams> mojo_params = | |
22 mojom::LeakDetectorParams::New(); | |
23 protobuf_to_mojo_converter::ParamsToMojo(params, mojo_params.get()); | |
24 | |
25 EXPECT_DOUBLE_EQ(0.75, mojo_params->sampling_rate); | |
26 EXPECT_EQ(19U, mojo_params->max_stack_depth); | |
27 EXPECT_EQ(25U * 1024 * 1024, mojo_params->analysis_interval_bytes); | |
28 EXPECT_EQ(8U, mojo_params->size_suspicion_threshold); | |
29 EXPECT_EQ(11U, mojo_params->call_stack_suspicion_threshold); | |
30 | |
31 // Convert Mojo struct back to protobuf. | |
32 MemoryLeakReportProto::Params new_params; | |
33 protobuf_to_mojo_converter::MojoToParams(*mojo_params, &new_params); | |
34 | |
35 EXPECT_DOUBLE_EQ(0.75, new_params.sampling_rate()); | |
36 EXPECT_EQ(19U, new_params.max_stack_depth()); | |
37 EXPECT_EQ(25U * 1024 * 1024, new_params.analysis_interval_bytes()); | |
38 EXPECT_EQ(8U, new_params.size_suspicion_threshold()); | |
39 EXPECT_EQ(11U, new_params.call_stack_suspicion_threshold()); | |
40 } | |
41 | |
42 TEST(protobuf_to_mojo_converterTest, ConvertReport) { | |
43 MemoryLeakReportProto report; | |
44 report.add_call_stack(0xdeadbeef); | |
45 report.add_call_stack(0xc001d00d); | |
46 report.add_call_stack(0x900df00d); | |
47 report.set_size_bytes(24); | |
48 | |
49 auto entry1 = report.add_alloc_breakdown_history(); | |
50 entry1->add_counts_by_size(1); | |
51 entry1->add_counts_by_size(2); | |
52 entry1->add_counts_by_size(3); | |
53 entry1->set_count_for_call_stack(4); | |
54 | |
55 auto entry2 = report.add_alloc_breakdown_history(); | |
56 entry2->add_counts_by_size(11); | |
57 entry2->add_counts_by_size(12); | |
58 entry2->add_counts_by_size(13); | |
59 entry2->add_counts_by_size(14); | |
60 entry2->set_count_for_call_stack(15); | |
61 | |
62 auto entry3 = report.add_alloc_breakdown_history(); | |
63 entry3->add_counts_by_size(21); | |
64 entry3->add_counts_by_size(22); | |
65 entry3->add_counts_by_size(23); | |
66 entry3->add_counts_by_size(24); | |
67 entry3->add_counts_by_size(25); | |
68 entry3->set_count_for_call_stack(26); | |
69 | |
70 // Convert to equivalent Mojo struct. | |
71 mojo::StructPtr<mojom::MemoryLeakReport> mojo_report = | |
72 mojom::MemoryLeakReport::New(); | |
73 protobuf_to_mojo_converter::ReportToMojo(report, mojo_report.get()); | |
74 | |
75 ASSERT_EQ(3U, mojo_report->call_stack.size()); | |
76 EXPECT_EQ(0xdeadbeef, mojo_report->call_stack[0]); | |
77 EXPECT_EQ(0xc001d00d, mojo_report->call_stack[1]); | |
78 EXPECT_EQ(0x900df00d, mojo_report->call_stack[2]); | |
79 EXPECT_EQ(24U, mojo_report->size_bytes); | |
80 | |
81 ASSERT_EQ(3U, mojo_report->alloc_breakdown_history.size()); | |
82 | |
83 ASSERT_EQ(3U, mojo_report->alloc_breakdown_history[0]->counts_by_size.size()); | |
84 EXPECT_EQ(1U, mojo_report->alloc_breakdown_history[0]->counts_by_size[0]); | |
85 EXPECT_EQ(2U, mojo_report->alloc_breakdown_history[0]->counts_by_size[1]); | |
86 EXPECT_EQ(3U, mojo_report->alloc_breakdown_history[0]->counts_by_size[2]); | |
87 EXPECT_EQ(4U, mojo_report->alloc_breakdown_history[0]->count_for_call_stack); | |
88 | |
89 ASSERT_EQ(4U, mojo_report->alloc_breakdown_history[1]->counts_by_size.size()); | |
90 EXPECT_EQ(11U, mojo_report->alloc_breakdown_history[1]->counts_by_size[0]); | |
91 EXPECT_EQ(12U, mojo_report->alloc_breakdown_history[1]->counts_by_size[1]); | |
92 EXPECT_EQ(13U, mojo_report->alloc_breakdown_history[1]->counts_by_size[2]); | |
93 EXPECT_EQ(14U, mojo_report->alloc_breakdown_history[1]->counts_by_size[3]); | |
94 EXPECT_EQ(15U, mojo_report->alloc_breakdown_history[1]->count_for_call_stack); | |
95 | |
96 ASSERT_EQ(5U, mojo_report->alloc_breakdown_history[2]->counts_by_size.size()); | |
97 EXPECT_EQ(21U, mojo_report->alloc_breakdown_history[2]->counts_by_size[0]); | |
98 EXPECT_EQ(22U, mojo_report->alloc_breakdown_history[2]->counts_by_size[1]); | |
99 EXPECT_EQ(23U, mojo_report->alloc_breakdown_history[2]->counts_by_size[2]); | |
100 EXPECT_EQ(24U, mojo_report->alloc_breakdown_history[2]->counts_by_size[3]); | |
101 EXPECT_EQ(25U, mojo_report->alloc_breakdown_history[2]->counts_by_size[4]); | |
102 EXPECT_EQ(26U, mojo_report->alloc_breakdown_history[2]->count_for_call_stack); | |
103 | |
104 // Convert Mojo struct back to protobuf. | |
105 MemoryLeakReportProto new_report; | |
106 protobuf_to_mojo_converter::MojoToReport(*mojo_report, &new_report); | |
107 | |
108 ASSERT_EQ(3, new_report.call_stack().size()); | |
109 EXPECT_EQ(0xdeadbeef, new_report.call_stack(0)); | |
110 EXPECT_EQ(0xc001d00d, new_report.call_stack(1)); | |
111 EXPECT_EQ(0x900df00d, new_report.call_stack(2)); | |
112 EXPECT_EQ(24U, new_report.size_bytes()); | |
113 | |
114 ASSERT_EQ(3, new_report.alloc_breakdown_history().size()); | |
115 | |
116 ASSERT_EQ(3, new_report.alloc_breakdown_history(0).counts_by_size().size()); | |
117 EXPECT_EQ(1U, new_report.alloc_breakdown_history(0).counts_by_size(0)); | |
118 EXPECT_EQ(2U, new_report.alloc_breakdown_history(0).counts_by_size(1)); | |
119 EXPECT_EQ(3U, new_report.alloc_breakdown_history(0).counts_by_size(2)); | |
120 EXPECT_EQ(4U, new_report.alloc_breakdown_history(0).count_for_call_stack()); | |
121 | |
122 ASSERT_EQ(4, new_report.alloc_breakdown_history(1).counts_by_size().size()); | |
123 EXPECT_EQ(11U, new_report.alloc_breakdown_history(1).counts_by_size(0)); | |
124 EXPECT_EQ(12U, new_report.alloc_breakdown_history(1).counts_by_size(1)); | |
125 EXPECT_EQ(13U, new_report.alloc_breakdown_history(1).counts_by_size(2)); | |
126 EXPECT_EQ(14U, new_report.alloc_breakdown_history(1).counts_by_size(3)); | |
127 EXPECT_EQ(15U, new_report.alloc_breakdown_history(1).count_for_call_stack()); | |
128 | |
129 ASSERT_EQ(5, new_report.alloc_breakdown_history(2).counts_by_size().size()); | |
130 EXPECT_EQ(21U, new_report.alloc_breakdown_history(2).counts_by_size(0)); | |
131 EXPECT_EQ(22U, new_report.alloc_breakdown_history(2).counts_by_size(1)); | |
132 EXPECT_EQ(23U, new_report.alloc_breakdown_history(2).counts_by_size(2)); | |
133 EXPECT_EQ(24U, new_report.alloc_breakdown_history(2).counts_by_size(3)); | |
134 EXPECT_EQ(25U, new_report.alloc_breakdown_history(2).counts_by_size(4)); | |
135 EXPECT_EQ(26U, new_report.alloc_breakdown_history(2).count_for_call_stack()); | |
136 } | |
137 | |
138 } // namespace leak_detector | |
139 } // namespace metrics | |
OLD | NEW |