(
self,
thread_ids: Sequence[int] | None = None,
function_ids: Sequence[int] | None = None,
start_ms: int | None = None,
end_ms: int | None = None,
metric: str = "malloc",
metrics: Sequence[str] | None = None,
scope: str = "inclusive",
resolution: int | None = None,
)
| 1065 | return output_path |
| 1066 | |
| 1067 | def query_bundle( |
| 1068 | self, |
| 1069 | thread_ids: Sequence[int] | None = None, |
| 1070 | function_ids: Sequence[int] | None = None, |
| 1071 | start_ms: int | None = None, |
| 1072 | end_ms: int | None = None, |
| 1073 | metric: str = "malloc", |
| 1074 | metrics: Sequence[str] | None = None, |
| 1075 | scope: str = "inclusive", |
| 1076 | resolution: int | None = None, |
| 1077 | ) -> dict[str, Any]: |
| 1078 | selected_threads = self._normalize_thread_ids(thread_ids) |
| 1079 | start_tick, end_tick = self._normalize_window(start_ms, end_ms) |
| 1080 | selected_metrics = self._normalize_metrics(metrics, default=metric) |
| 1081 | series = self.query_multi_series( |
| 1082 | thread_ids=selected_threads, |
| 1083 | function_ids=function_ids, |
| 1084 | start_ms=start_tick, |
| 1085 | end_ms=end_tick, |
| 1086 | metrics=selected_metrics, |
| 1087 | scope=scope, |
| 1088 | split="auto", |
| 1089 | resolution=resolution, |
| 1090 | ) |
| 1091 | primary_metric = self._primary_metric(selected_metrics) |
| 1092 | detail_metric = self.detail_metric(selected_metrics, default=metric) |
| 1093 | top = self.top_functions( |
| 1094 | start_ms=start_tick, |
| 1095 | end_ms=end_tick, |
| 1096 | thread_ids=selected_threads, |
| 1097 | limit=15, |
| 1098 | metric=detail_metric, |
| 1099 | scope="exclusive", |
| 1100 | ) |
| 1101 | focus_thread = selected_threads[0] if selected_threads else (self._all_thread_ids[0] if self._all_thread_ids else None) |
| 1102 | stack_tree = self.stack_tree(focus_thread, start_tick, end_tick, metric=detail_metric) if focus_thread else None |
| 1103 | return { |
| 1104 | "series": series, |
| 1105 | "top": top, |
| 1106 | "focus_thread": focus_thread, |
| 1107 | "stack_tree": stack_tree, |
| 1108 | "context": self.describe_detail_context( |
| 1109 | start_ms=start_tick, |
| 1110 | end_ms=end_tick, |
| 1111 | thread_ids=selected_threads, |
| 1112 | focus_thread=focus_thread, |
| 1113 | ), |
| 1114 | "selected_metrics": [_metric_display_name(metric_name) for metric_name in selected_metrics], |
| 1115 | "primary_metric": primary_metric, |
| 1116 | "detail_metric": detail_metric, |
| 1117 | "detail_metric_display": _metric_display_name(detail_metric), |
| 1118 | } |
| 1119 | |
| 1120 | def query_multi_series( |
| 1121 | self, |
no test coverage detected