(processes, tracked, options = DEFAULTS)
| 196 | } |
| 197 | |
| 198 | export function buildSample(processes, tracked, options = DEFAULTS) { |
| 199 | const discoveredTracked = discoverTrackedProcesses( |
| 200 | processes, |
| 201 | tracked, |
| 202 | options, |
| 203 | ); |
| 204 | const liveTracked = new Map(); |
| 205 | let capTotalKb = 0; |
| 206 | let mediaTotalKb = 0; |
| 207 | let windowServerTotalKb = 0; |
| 208 | const processRows = []; |
| 209 | const newPids = []; |
| 210 | |
| 211 | for (const [pid, trackedProcess] of discoveredTracked.entries()) { |
| 212 | const liveProcess = processes.find( |
| 213 | (processInfo) => processInfo.pid === pid, |
| 214 | ); |
| 215 | |
| 216 | if (!liveProcess) continue; |
| 217 | |
| 218 | const row = { |
| 219 | ...trackedProcess, |
| 220 | etimes: liveProcess.etimes, |
| 221 | rssKb: liveProcess.rssKb, |
| 222 | vszKb: liveProcess.vszKb, |
| 223 | }; |
| 224 | |
| 225 | liveTracked.set(pid, row); |
| 226 | processRows.push(row); |
| 227 | |
| 228 | if (row.group === "cap") capTotalKb += row.rssKb; |
| 229 | if (row.group === "media") mediaTotalKb += row.rssKb; |
| 230 | if (row.group === "system") windowServerTotalKb += row.rssKb; |
| 231 | if (row.isNew) newPids.push(pid); |
| 232 | } |
| 233 | |
| 234 | processRows.sort((left, right) => right.rssKb - left.rssKb); |
| 235 | |
| 236 | return { |
| 237 | capTotalKb, |
| 238 | grandTotalKb: capTotalKb + mediaTotalKb + windowServerTotalKb, |
| 239 | mediaTotalKb, |
| 240 | newPids: newPids.sort((left, right) => left - right), |
| 241 | processRows, |
| 242 | tracked: liveTracked, |
| 243 | windowServerTotalKb, |
| 244 | }; |
| 245 | } |
| 246 | |
| 247 | export function pickSettledSample( |
| 248 | samples, |
no test coverage detected