diff options
author | Yabin Cui <yabinc@google.com> | 2019-08-03 00:06:01 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2019-08-03 00:06:01 +0000 |
commit | fe6f4fa2ad6b3a0dc8855797f5850fa6322cee24 (patch) | |
tree | 0e3fc7318be55d6f5f3b19ea0092f785c45bae4e | |
parent | a596802d3938336f04abf122bc997846aef3e7e7 (diff) | |
parent | 68220c5b7687b61c4d8bcf2a15b09348ca94ba57 (diff) | |
download | extras-fe6f4fa2ad6b3a0dc8855797f5850fa6322cee24.tar.gz |
Merge "simpleperf: fix report_html.py."
-rwxr-xr-x | simpleperf/scripts/report_html.py | 5 | ||||
-rw-r--r-- | simpleperf/scripts/script_testdata/two_process_perf.data | bin | 0 -> 53289 bytes | |||
-rwxr-xr-x | simpleperf/scripts/test.py | 15 |
3 files changed, 20 insertions, 0 deletions
diff --git a/simpleperf/scripts/report_html.py b/simpleperf/scripts/report_html.py index d7fe0ecf..f2292720 100755 --- a/simpleperf/scripts/report_html.py +++ b/simpleperf/scripts/report_html.py @@ -642,6 +642,7 @@ class RecordData(object): hit_func_ids = set() for event in self.events.values(): min_limit = event.event_count * min_func_percent * 0.01 + to_del_processes = [] for process in event.processes.values(): to_del_threads = [] for thread in process.threads.values(): @@ -651,6 +652,10 @@ class RecordData(object): thread.limit_percents(min_limit, min_callchain_percent, hit_func_ids) for thread in to_del_threads: del process.threads[thread] + if not process.threads: + to_del_processes.append(process.pid) + for process in to_del_processes: + del event.processes[process] self.functions.trim_functions(hit_func_ids) def _get_event(self, event_name): diff --git a/simpleperf/scripts/script_testdata/two_process_perf.data b/simpleperf/scripts/script_testdata/two_process_perf.data Binary files differnew file mode 100644 index 00000000..c61d5916 --- /dev/null +++ b/simpleperf/scripts/script_testdata/two_process_perf.data diff --git a/simpleperf/scripts/test.py b/simpleperf/scripts/test.py index 1b01c5f9..24a04356 100755 --- a/simpleperf/scripts/test.py +++ b/simpleperf/scripts/test.py @@ -1285,6 +1285,21 @@ class TestReportHtml(TestBase): hit_count += 1 self.assertEqual(hit_count, len(event_count_for_thread_name)) + def test_no_empty_process(self): + """ Test not showing a process having no threads. """ + perf_data = os.path.join('testdata', 'two_process_perf.data') + self.run_cmd(['report_html.py', '-i', perf_data]) + record_data = self._load_record_data_in_html('report.html') + processes = record_data['sampleInfo'][0]['processes'] + self.assertEqual(len(processes), 2) + + # One process is removed because all its threads are removed for not + # reaching the min_func_percent limit. + self.run_cmd(['report_html.py', '-i', perf_data, '--min_func_percent', '20']) + record_data = self._load_record_data_in_html('report.html') + processes = record_data['sampleInfo'][0]['processes'] + self.assertEqual(len(processes), 1) + def _load_record_data_in_html(self, html_file): with open(html_file, 'r') as fh: data = fh.read() |