| // Copyright (C) 2021 The Android Open Source Project |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| import { |
| oneOf, |
| num, |
| bool, |
| arrayOf, |
| str, |
| requiredStr, |
| record, |
| runValidator, |
| ValidatedType, |
| } from './validators'; |
| |
| const recordModes = ['STOP_WHEN_FULL', 'RING_BUFFER', 'LONG_TRACE'] as const; |
| export const recordConfigValidator = record({ |
| mode: oneOf(recordModes, 'STOP_WHEN_FULL'), |
| durationMs: num(10000.0), |
| maxFileSizeMb: num(100), |
| fileWritePeriodMs: num(2500), |
| bufferSizeMb: num(64.0), |
| |
| cpuSched: bool(), |
| cpuFreq: bool(), |
| cpuFreqPollMs: num(1000), |
| cpuSyscall: bool(), |
| |
| gpuFreq: bool(), |
| gpuMemTotal: bool(), |
| |
| ftrace: bool(), |
| atrace: bool(), |
| ftraceEvents: arrayOf(str()), |
| ftraceExtraEvents: str(), |
| atraceCats: arrayOf(str()), |
| allAtraceApps: bool(true), |
| atraceApps: str(), |
| ftraceBufferSizeKb: num(0), |
| ftraceDrainPeriodMs: num(0), |
| androidLogs: bool(), |
| androidLogBuffers: arrayOf(str()), |
| androidFrameTimeline: bool(), |
| androidGameInterventionList: bool(), |
| androidNetworkTracing: bool(), |
| androidNetworkTracingPollMs: num(250), |
| |
| cpuCoarse: bool(), |
| cpuCoarsePollMs: num(1000), |
| |
| batteryDrain: bool(), |
| batteryDrainPollMs: num(1000), |
| |
| boardSensors: bool(), |
| |
| memHiFreq: bool(), |
| meminfo: bool(), |
| meminfoPeriodMs: num(1000), |
| meminfoCounters: arrayOf(str()), |
| |
| vmstat: bool(), |
| vmstatPeriodMs: num(1000), |
| vmstatCounters: arrayOf(str()), |
| |
| heapProfiling: bool(), |
| hpSamplingIntervalBytes: num(4096), |
| hpProcesses: str(), |
| hpContinuousDumpsPhase: num(), |
| hpContinuousDumpsInterval: num(), |
| hpSharedMemoryBuffer: num(8 * 1048576), |
| hpBlockClient: bool(true), |
| hpAllHeaps: bool(), |
| |
| javaHeapDump: bool(), |
| jpProcesses: str(), |
| jpContinuousDumpsPhase: num(), |
| jpContinuousDumpsInterval: num(), |
| |
| memLmk: bool(), |
| procStats: bool(), |
| procStatsPeriodMs: num(1000), |
| |
| chromeCategoriesSelected: arrayOf(str()), |
| chromeHighOverheadCategoriesSelected: arrayOf(str()), |
| chromePrivacyFiltering: bool(), |
| |
| chromeLogs: bool(), |
| taskScheduling: bool(), |
| ipcFlows: bool(), |
| jsExecution: bool(), |
| webContentRendering: bool(), |
| uiRendering: bool(), |
| inputEvents: bool(), |
| navigationAndLoading: bool(), |
| |
| symbolizeKsyms: bool(), |
| }); |
| export const namedRecordConfigValidator = record( |
| {title: requiredStr, key: requiredStr, config: recordConfigValidator}); |
| export type NamedRecordConfig = |
| ValidatedType<typeof namedRecordConfigValidator>; |
| export type RecordConfig = ValidatedType<typeof recordConfigValidator>; |
| |
| export function createEmptyRecordConfig(): RecordConfig { |
| return runValidator(recordConfigValidator, {}).result; |
| } |