winIDEA SDK
|
This section describes how to specify test step in YAML format (version 1.1). YAML is language used for structured data representation, which is human readable and machine parseable. It is easier to read than XML, and much easier to write. More information is available at Wikipedia and The Official YAML Web Site.
Bold and underlined - used for mandatory tags and default values
Code
- used for examples and code
Italics - used for emphasis
Frames with different background colors are used to show the following:
Test Specification Syntax
Example, which demonstrates usage, but can not be run standalone.
Example, which represents complete test and can be run with SDK winIDEA project.
YAML uses characters '&' and '*' to define anchors and references. This conflicts with operators in C, so we must quote all strings, which start with '&' or '*', when specifying C operators.
Examples:
- ax == &g # OK, because YAML list item is scalar 'ax == &g', # which does not start with '&' ptr1: '&g' # must be quoted, because mapping pair is composed of # scalars 'ptr1' and '&g'. Scalar '&g' starts with '&', # so quoting is needed. '*ptr1': 10 # must be quoted, because mapping key '*ptr1' starts with '*'
Another issue are square brackets '[' and ']', which are used for lists in YAML flow style, and for array indices in C/C++. They have to be quoted always when they are the first char in string, or when they are used in YAML flow style lists, even if they do not start the string. To be on the safe side, use single quotes for all strings which contain square brackets.
Since both C and YAML use single and double quotes, it is important to understand quoting in YAML and C and how it is used in isystem.test.
YAML understands three types of strings. The string type is determined by the first character. If it is single quote ('), it is single quoted string, if it is double quote ("), it is double quoted string, and it is plain string in all other cases. If the first character is not quote (single or double), it is a plain string, even if quotes appear inside of the string. Detailed descriptions follow:
& * , : # { } [ ]
locals: myVar: int desc: This is test description.If quotes appear inside plain string, they are treated as any other character, for example:
expect: - retVal == 'a'The plain string here is
retVal == 'a'
. Quotes have no special meaning for YAML parser.locals: myvar: char singleQuote: char init: myVar: 's' singleQuote: '\''' # backslash is required for C evaluator, which gets: '\'' function: [myFunction, ['&myvar', 'a[0]'], retVal] expect: - retVal == '\''Note the last line in example, where the single quote is not escaped, because this line contains a plain string
retVal == '\''
, not quoted string.locals: array: char [15] init: array: "Hello!" func: [f, [array]]Backslash '\' character in strings must be escaped as in C, for example:
"\\home\\test\n" # string ends with newline character
Example of complete test specification:
locals: a: char[10] b: char[15] c: char[5] d: char[20] pd: 'char *' init: a: "elephant" b: "horse" c: "" pd: '&d' d: "monitor" func: [funcTestCharArray2, [a, b, c], charRetVal] expect: - a[0] == 'f' - a == "flephant" - b[1] == 'g' - c[0] == 0 - c[2] == 'h' - pd == "monitor" - pd == &d - charRetVal[2] == 'h'
More details about quotes in YAML can be found at The Official YAML Web Site.
Test specifications may use also variables, which are defined on host only. These variables should be prefixed with $ and surrounded with {}:
${<varName>}
for example:
${expectedValue}
These variables do not have to be declared, and they always contain strings. Inside test specification they are simply replaced with their value. To use them, we simply assign value to them in Variables section, and then use them in expressions.
Reserved host variables
Host variables must start with a letter. They may contain also numbers and underscores in their name, but not as the first character. Names starting with underscore are reserved, and will be defined by iSYSTEM.
Predefined host variables
Predefined host variables are created automatically by isystem.test and can be used in expressions. The following host variables are predefined:
{_p1}
refers to first function parameter. Global host variables
User defined host variable with prefix g_ are global variables, which means they will be available in all succeeding test cases. Their value can be changed, but once defined they can not be deleted.
This section contains test specification syntax, which includes test environment and test cases.
env: version: <xx.yy.zz> workspace: <pathToWinIDEAWorkspaceFile> useQualifiedFuncName: <true | false> address: <ipAddrOrHostName> port: <portNumber> coreIds: [<coreId-0>, ...] autoConnect: <true | false> autoIdFormat: <formatString> defaultRetValName: <varName> logFile: [<fileName>, ...] initBeforeRun: <true | false> disableInterrupts: <true | false> testTimeout: <timeout> breakpointType: <keepWinIDEASetting | useHWBreakpoints | useSWBreakpoints | useHWBPsForInitThenSWBPs> initSequence: - coreId: <coreId> action: <connectToCore | download | reset | run | delAllBreakpoints | callTargetFunction | callScriptFunction | loadSymbolsOnly | waitUntilStopped> params: [<param0>, ...] - ... scriptConfig: workingDir: <directory> modules: [<moduleName>, ...] sysPaths: [<sysPath>, ...] timeout: <timeInSeconds> extensionClass: <scriptClassName> toolsConfig: isAutoSetAnalyzerFName: <true | false> analyzerFName: <fileName> isSetTestIdOnPaste: <true | false> evaluatorConfig: isOverrideWinIDEASettings: <true | false> charDisplay: <ASCII | Integer | Both> isAnsiChar: <true | false> isHex: <true | false> binaryDisplay: <Blanks | NoBlanksTrailingB> isDisplayPointerMemArea: <true | false> isCharArrayAsString: <true | false> isDereferenceStringPointers: <true | false> addressDisplay: <HexNoPrefix | HexPrefix> enumDisplay: <Enum | Integer | Both> isDisplayCollapsedArrayStruct: <true | false> vagueFloatPrecision: <floatNumber> testCaseTargetInit: downloadOnTCInit: <true | false> resetOnTCInit: <true | false> runOnTCInit: <true | false> stopFunctionOnTCInit: <functionName> stackUsageOptions: - coreId: <coreId> isActive: <true | false> baseAddr: <address> endAddr: <address> pattern: <bytePattern> - ... checkTargetState: <true | false> verifySymbolsBeforeRun: <true | false> reportConfig: testIDEAVersion: <version> winIDEAVersion: <version> reportContents: <full | errorsOnly> outFormat: <xml | yaml | csv | xls | xlsx> fileName: <fileName> iyamlFileName: <iyamlFileName> xsltFull: <fileName> xsltErrors: <fileName> xmlLogoImage: <> xmlReportHeader: <> cssFile: <> isEmbeddedXsltCss: <true | false> isCreateHtml: <true | false> csvSeparator: <char> isCSVHeaderLine: <true | false> isXLSVerticalHeader: <true | false> isIncludeTestSpec: <true | false> isAbsPathForLinks: <true | false> htmlViewMode: <all | errorsOnly> testInfo: {<key>: <value>, ...} useCustomTime: <true | false> testFilters: - filterId: <> type: <builtIn | script> coreId: < > partitions: [<partition>, ...] modules: [<>, ...] includedIds: [<testId>, ...] excludedIds: [<testId>, ...] includedFunctions: [<functionName>, ...] excludedFunctions: [<functionName>, ...] mustHaveAllTags: [<tag>, ...] mustHaveOneOfTags: [<tag>, ...] mustNotHaveAllTags: [<tag>, ...] mustNotHaveOneOfTags: [<tag>, ...] isOr1: <true | false> isOr2: <true | false> isOr3: <true | false> scriptFunction: <scriptFunctionName> scriptFunctionParams: [<scriptFunctionParam>, ...] - ... groups: id: < > isExecute: <true | false> desc: <text> filter: filterId: < > type: <builtIn | script> coreId: < > partitions: [<partition>, ...] modules: [<>, ...] includedIds: [<testId>, ...] excludedIds: [<testId>, ...] includedFunctions: [<functionName>, ...] excludedFunctions: [<functionName>, ...] mustHaveAllTags: [<tag>, ...] mustHaveOneOfTags: [<tag>, ...] mustNotHaveAllTags: [<tag>, ...] mustNotHaveOneOfTags: [<tag>, ...] isOr1: <true | false> isOr2: <true | false> isOr3: <true | false> scriptFunction: <scriptFunctionName> scriptFunctionParams: [<scriptFunctionParam>, ...] mergedAnalyzerFile: <fileName.trd> isCloseAfterTest: <true | false> coverageExport: isActive: <true | false> isMeasureAllFunctions: <true | false> isIgnoreNonReachableCode: <true | false> mergeScope: <none | siblingsOnly | siblingsAndParent | all> mergeFilter: filterId: < > type: <builtIn | script> coreId: < > partitions: [<partition>, ...] modules: [<>, ...] includedIds: [<testId>, ...] excludedIds: [<testId>, ...] includedFunctions: [<functionName>, ...] excludedFunctions: [<functionName>, ...] mustHaveAllTags: [<tag>, ...] mustHaveOneOfTags: [<tag>, ...] mustNotHaveAllTags: [<tag>, ...] mustNotHaveOneOfTags: [<tag>, ...] isOr1: <true | false> isOr2: <true | false> isOr3: <true | false> scriptFunction: <scriptFunctionName> scriptFunctionParams: [<scriptFunctionParam>, ...] exportFormat: <HTML | Text | CSV | XML | Review (HTML) | Review (Text)> formatVariant: <variantName> exportFile: <fileName> isAssemblerInfo: <true | false> isLaunchViewer: <true | false> isExportModuleLines: <true | false> isExportSources: <true | false> isExportFunctionLines: <true | false> isExportAsm: <true | false> isExportRanges: <true | false> exportFunctionsFilter: <functionName> exportModulesFilter: <moduleName> statistics: - func: <functionName> code: <percentage> sourceLines: <percentage> branches: <percentage> taken: <percentage> notTaken: <percentage> both: <percentage> execCount: <> - ... coverageAllCodeInGroup: func: <functionName> code: <percentage> sourceLines: <percentage> branches: <percentage> taken: <percentage> notTaken: <percentage> both: <percentage> execCount: <> coverageTestCasesOnly: func: <functionName> code: <percentage> sourceLines: <percentage> branches: <percentage> taken: <percentage> notTaken: <percentage> both: <percentage> execCount: <> initScriptFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName> endScriptFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName> children: - - ... testCases: id: < > testScope: <unitTest | systemTest> baseId: < > run: <true | false> imports: id: inherit: <true | false> ids: [<testId>, ...] scope: inherit: <true | false> ids: [<testId>, ...] desc: inherit: <true | false> ids: [<testId>, ...] tags: inherit: <true | false> ids: [<testId>, ...] options: inherit: <true | false> ids: [<testId>, ...] persistVars: inherit: <true | false> ids: [<testId>, ...] locals: inherit: <true | false> ids: [<testId>, ...] init: inherit: <true | false> ids: [<testId>, ...] beginStopCondition: inherit: <true | false> ids: [<testId>, ...] endStopCondition: inherit: <true | false> ids: [<testId>, ...] func: inherit: <true | false> ids: [<testId>, ...] testTimeout: inherit: <true | false> ids: [<testId>, ...] coreId: inherit: <true | false> ids: [<testId>, ...] initTargetFunc: inherit: <true | false> ids: [<testId>, ...] initFunc: inherit: <true | false> ids: [<testId>, ...] endFunc: inherit: <true | false> ids: [<testId>, ...] restoreTargetFunc: inherit: <true | false> ids: [<testId>, ...] stubs: inherit: <true | false> ids: [<testId>, ...] userStubs: inherit: <true | false> ids: [<testId>, ...] testPoints: inherit: <true | false> ids: [<testId>, ...] preCondition: inherit: <true | false> ids: [<testId>, ...] assert: inherit: <true | false> ids: [<testId>, ...] stackUsage: inherit: <true | false> ids: [<testId>, ...] log: inherit: <true | false> ids: [<testId>, ...] analyzer: inherit: <true | false> ids: [<testId>, ...] hil: inherit: <true | false> ids: [<testId>, ...] dryRun: inherit: <true | false> ids: [<testId>, ...] diagrams: inherit: <true | false> ids: [<testId>, ...] params: inherit: <true | false> ids: [<testId>, ...] desc: <text> tags: [<tag>, ...] options: {<winIDEAOptionPath>: <optionValue>, ...} persistVars: decl: {<varName>: <varType>, ...} delete: [<varName>, ...] isDeleteAll: <true | false> locals: {<varName>: <varType>, ...} init: {<varName>: <varValue>, ...} beginStopCondition: stopType: <breakpoint | stop | rtExpression | noRun> timeout: <milliseconds> rtExpression: <expression> conditionCount: <count> conditionExpr: <expression> bpLocation: resourceType: <function | file | address> resourceName: <fileName or functionName> srcFileLocation: <localHost | winIDEAHost> line: <number> isSearch: <true | false> linesRange: <number> searchContext: <any | code | comment> matchType: <plain | regEx | testPointId> pattern: <pattern> lineOffset: <number> numSteps: <number> endStopCondition: stopType: <breakpoint | stop | rtExpression | noRun> timeout: <milliseconds> rtExpression: <expression> conditionCount: <count> conditionExpr: <expression> bpLocation: resourceType: <function | file | address> resourceName: <fileName or functionName> srcFileLocation: <localHost | winIDEAHost> line: <number> isSearch: <true | false> linesRange: <number> searchContext: <any | code | comment> matchType: <plain | regEx | testPointId> pattern: <pattern> lineOffset: <number> numSteps: <number> func: func: <functionName> params: [<parameter>, ...] retVal: <varName> testTimeout: <timeout> coreId: <coreId> initTargetFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName> initFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName> endFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName> restoreTargetFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName> stubs: - stubbedFunc: <functionName> isActive: <true | false> isCustomActivation: <true | false> params: [<parameter>, ...] retValName: <varName> scriptFunc: <functionName> hitLimits: min: <numHits> max: <numHits> log: before: [<varName>, ...] after: [<varName>, ...] assignSteps: - expect: [<expression>, ...] assign: {<varName>: <varValue>, ...} scriptParams: [<parameter>, ...] next: <index> - ... - ... userStubs: - func: <functionName> isActive: <true | false> replacementFunc: <functionName> - ... testPoints: - tpId: <> isActive: <true | false> isCustomActivation: <true | false> conditionCount: <count> conditionExpr: <expression> scriptFunc: <functonName> location: resourceType: <function | file | address> resourceName: <fileName or functionName> srcFileLocation: <localHost | winIDEAHost> line: <number> isSearch: <true | false> linesRange: <number> searchContext: <any | code | comment> matchType: <plain | regEx | testPointId> pattern: <pattern> lineOffset: <number> numSteps: <number> log: before: [<varName>, ...] after: [<varName>, ...] hitLimits: min: <numHits> max: <numHits> steps: - expect: [<expression>, ...] assign: {<varName>: <varValue>, ...} scriptParams: [<parameter>, ...] next: <index> - ... - ... preCondition: isExpectException: <true | false> expressions: [<C expression>, ...] assert: isExpectException: <true | false> expressions: [<C expression>, ...] stackUsage: minLimit: <numBytes> maxLimit: <numBytes> log: before: [<varName>, ...] after: [<varName>, ...] analyzer: runMode: <off | start> document: <fileName> openMode: <u | w | a> isSlowRun: <true | false> trigger: <triggerName> isPredefTrigger: <true | false> isSaveAfterTest: <true | false> isCloseAfterTest: <true | false> trace: isActive: <true | false> exportFormat: <Text | CSV | Binary | XML> exportFile: <fileName> coverage: isActive: <true | false> isMeasureAllFunctions: <true | false> isIgnoreNonReachableCode: <true | false> mergeScope: <none | siblingsOnly | siblingsAndParent | all> mergeFilter: filterId: < > type: <builtIn | script> coreId: < > partitions: [<partition>, ...] modules: [<>, ...] includedIds: [<testId>, ...] excludedIds: [<testId>, ...] includedFunctions: [<functionName>, ...] excludedFunctions: [<functionName>, ...] mustHaveAllTags: [<tag>, ...] mustHaveOneOfTags: [<tag>, ...] mustNotHaveAllTags: [<tag>, ...] mustNotHaveOneOfTags: [<tag>, ...] isOr1: <true | false> isOr2: <true | false> isOr3: <true | false> scriptFunction: <scriptFunctionName> scriptFunctionParams: [<scriptFunctionParam>, ...] exportFormat: <HTML | Text | CSV | XML | Review (HTML) | Review (Text)> formatVariant: <variantName> exportFile: <fileName> isAssemblerInfo: <true | false> isLaunchViewer: <true | false> isExportModuleLines: <true | false> isExportSources: <true | false> isExportFunctionLines: <true | false> isExportAsm: <true | false> isExportRanges: <true | false> exportFunctionsFilter: <functionName> exportModulesFilter: <moduleName> statistics: - func: <functionName> code: <percentage> sourceLines: <percentage> branches: <percentage> taken: <percentage> notTaken: <percentage> both: <percentage> execCount: <> - ... profiler: isActive: <true | false> isMeasureAllFunctions: <true | false> exportFormat: <Text | XML | CSV | Text1 | XMLBinaryTimeline | BTF | MDF> exportFile: <> isExportActiveOnly: <true | false> isProfileAUX: <true | false> isSaveHistory: <true | false> codeAreas: - name: <funcName or varName> value: <stateValue> netTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] grossTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] callTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] periodTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] outsideTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] hits: [<number>, ...] - ... dataAreas: - name: <funcName or varName> value: <stateValue> netTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] grossTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] callTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] periodTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] outsideTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] hits: [<number>, ...] - ... hil: params: {<hilParamName>: <hilParamValue>, ...} dryRun: assign: {<hostVarName>: <expression>, ...} isUpdateCoverage: <true | false> isUpdateProfiler: <true | false> profilerMultiplier: < > profilerOffset: < > diagrams: isActive: <true | false> diagrams: - isActive: <true | false> diagramType: <flowChart | sequenceDiagram | callGraph | staticCallGraph | flameGraph | custom | customAsync> script: <scriptName.py> params: [<arg1>, ...] outFile: <fileName> isAddToReport: <true | false> viewer: <multiPage | singlePage | externalApp | none> dataFormat: <byExtension | bitmap | SVG> externalViewer: <pathToApp> - ... tests: - - ...
env: version: <xx.yy.zz> workspace: <pathToWinIDEAWorkspaceFile> useQualifiedFuncName: <true | false> address: <ipAddrOrHostName> port: <portNumber> coreIds: [<coreId-0>, ...] autoConnect: <true | false> autoIdFormat: <formatString> defaultRetValName: <varName> logFile: [<fileName>, ...] initBeforeRun: <true | false> disableInterrupts: <true | false> testTimeout: <timeout> breakpointType: <keepWinIDEASetting | useHWBreakpoints | useSWBreakpoints | useHWBPsForInitThenSWBPs> initSequence: - coreId: <coreId> action: <connectToCore | download | reset | run | delAllBreakpoints | callTargetFunction | callScriptFunction | loadSymbolsOnly | waitUntilStopped> params: [<param0>, ...] - ... scriptConfig: workingDir: <directory> modules: [<moduleName>, ...] sysPaths: [<sysPath>, ...] timeout: <timeInSeconds> extensionClass: <scriptClassName> toolsConfig: isAutoSetAnalyzerFName: <true | false> analyzerFName: <fileName> isSetTestIdOnPaste: <true | false> evaluatorConfig: isOverrideWinIDEASettings: <true | false> charDisplay: <ASCII | Integer | Both> isAnsiChar: <true | false> isHex: <true | false> binaryDisplay: <Blanks | NoBlanksTrailingB> isDisplayPointerMemArea: <true | false> isCharArrayAsString: <true | false> isDereferenceStringPointers: <true | false> addressDisplay: <HexNoPrefix | HexPrefix> enumDisplay: <Enum | Integer | Both> isDisplayCollapsedArrayStruct: <true | false> vagueFloatPrecision: <floatNumber> testCaseTargetInit: downloadOnTCInit: <true | false> resetOnTCInit: <true | false> runOnTCInit: <true | false> stopFunctionOnTCInit: <functionName> stackUsageOptions: - coreId: <coreId> isActive: <true | false> baseAddr: <address> endAddr: <address> pattern: <bytePattern> - ... checkTargetState: <true | false> verifySymbolsBeforeRun: <true | false>
where:
keepWinIDEASetting
- keep configuration from winIDEA.useHWBreakpoints
- use hardware breakpoints. Because the number of hardware breakpoints is limited, the number of stubs and test points is limited with this option.useSWBreakpoints
- use software breakpoints. Provides unlimited number of stubs and test points.useHWBPsForInitThenSWBPs
- use hardware breakpoints during target initialization, then switch to software breakpoints. Use this setting when target init code performs checksum of the code, but more stubs or test points are required than the number of available hardware breakpoints.version: 9.12.146 workspace: '/proj/demo/Sample5554.xjrf' address: 192.168.1.10 stopFunction: main defaultRetValName: retVal port: 5333 autoIdFormat: /${uuid}/${params}
initSequence: - coreId: <coreId> action: <connectToCore | download | reset | run | delAllBreakpoints | callTargetFunction | callScriptFunction | loadSymbolsOnly | waitUntilStopped> params: [<param0>, ...] - ...
where:
connectToCore
- makes connection to the specified core.download
- performs download.reset
- resets target.run
- runs target. Optionsl parameter may specify name of the function or label to run to.delAllBreakpoints
- deletes all break points on target.callTargetFunction
- calls function on target. Parameter defines function name.callScriptFunction
- calls script function. Parameter defines script function name.loadSymbolsOnly
- winIDEA only loads symbols from download file.waitUntilStopped
- waits until target stops, for example when running until function `main()`.
scriptConfig: workingDir: <directory> modules: [<moduleName>, ...] sysPaths: [<sysPath>, ...] timeout: <timeInSeconds> extensionClass: <scriptClassName>
where:
scriptConfig: workingDir: '/proj/myProject' modules: [sys, myModule] sysPaths: ['/proj/utils', '/lib/python'] timeout: 10000 extensionClass: myModule.myClass
toolsConfig: isAutoSetAnalyzerFName: <true | false> analyzerFName: <fileName> isSetTestIdOnPaste: <true | false>
where:
${_testId}-${_function}.trd
. See testIDEA content proposals for available host vars.
evaluatorConfig: isOverrideWinIDEASettings: <true | false> charDisplay: <ASCII | Integer | Both> isAnsiChar: <true | false> isHex: <true | false> binaryDisplay: <Blanks | NoBlanksTrailingB> isDisplayPointerMemArea: <true | false> isCharArrayAsString: <true | false> isDereferenceStringPointers: <true | false> addressDisplay: <HexNoPrefix | HexPrefix> enumDisplay: <Enum | Integer | Both> isDisplayCollapsedArrayStruct: <true | false> vagueFloatPrecision: <floatNumber>
where:
ASCII
- chars are displayed as ASCII charactersInteger
- chars are displayed as integersBoth
- chars are displayed as both ASCII characters and integersBlanks
- binary values are displayed as 11111111 00000000NoBlanksTrailingB
- binary values are displayed as 1111111100000000BHexNoPrefix
- addresses are displayed as hex numbers without prefixHexPrefix
- addresses are displayed as hex numbers with '0x' prefixEnum
- enum identifier is displayedInteger
- integer value is displayedBoth
- enum identifier and integer value are displayedevaluatorConfig: isUseDefaultWinIDEASettings: false charDisplay: Both isAnsiChar: true isHex: true binaryDisplay: Blanks isDisplayPointerMemArea: true isCharArrayAsString: true isDereferenceStringPointers: true addressDisplay: HexPrefix enumDisplay: Both isDisplayCollapsedArrayStruct: false vagueFloatPrecision: 1e-5
testCaseTargetInit: downloadOnTCInit: <true | false> resetOnTCInit: <true | false> runOnTCInit: <true | false> stopFunctionOnTCInit: <functionName>
where:
testCaseTargetInit: downloadOnTCInit: false resetOnTCInit: true runOnTCInit: true stopFunctionOnTCInit: main
stackUsageOptions: - coreId: <coreId> isActive: <true | false> baseAddr: <address> endAddr: <address> pattern: <bytePattern> - ...
where:
(Debug | Debug Options ... | tab Stack Usage)
, and stack usage is only measured for test cases, which specify the limit.stackUsageOptions: - coreId: core-0 isActive: true baseAddr: 0x4000f000 endAddr: 0x4000fff0 pattern: 0x55
reportConfig: testIDEAVersion: <version> winIDEAVersion: <version> reportContents: <full | errorsOnly> outFormat: <xml | yaml | csv | xls | xlsx> fileName: <fileName> iyamlFileName: <iyamlFileName> xsltFull: <fileName> xsltErrors: <fileName> xmlLogoImage: <> xmlReportHeader: <> cssFile: <> isEmbeddedXsltCss: <true | false> isCreateHtml: <true | false> csvSeparator: <char> isCSVHeaderLine: <true | false> isXLSVerticalHeader: <true | false> isIncludeTestSpec: <true | false> isAbsPathForLinks: <true | false> htmlViewMode: <all | errorsOnly> testInfo: {<key>: <value>, ...} useCustomTime: <true | false>
where:
full
- report will contain all measured values from profiler of coverage sections.errorsOnly
- report will contain only those measured values, which have caused the test to fail.xml
- save in XML format.yaml
- save in YAML format.csv
- save in CSV format.xls
- save in old Excel format.xlsx
- save in new Excel format.all
- results of all test cases are shown.errorsOnly
- only results of test cases with error are shownreportConfig: winIDEAVersion: 9.12.145 reportContents: full outFormat: xml fileName: 'd:/tmp/reportFull.xml' xsltFull: 'itestResult.blue.xslt' xsltErrors: ' itestErrors.gray.xslt' csvSeparator: ',' isCSVHeaderLine: true isXLSVerticalHeader: false isIncludeTestSpec: true useCustomTime: false isAbsPathForLinks: true testInfo: tester: markok winIDEAVersion: 9.12.45 date: time:
testFilters: - filterId: <> type: <builtIn | script> coreId: < > partitions: [<partition>, ...] modules: [<>, ...] includedIds: [<testId>, ...] excludedIds: [<testId>, ...] includedFunctions: [<functionName>, ...] excludedFunctions: [<functionName>, ...] mustHaveAllTags: [<tag>, ...] mustHaveOneOfTags: [<tag>, ...] mustNotHaveAllTags: [<tag>, ...] mustNotHaveOneOfTags: [<tag>, ...] isOr1: <true | false> isOr2: <true | false> isOr3: <true | false> scriptFunction: <scriptFunctionName> scriptFunctionParams: [<scriptFunctionParam>, ...] - ...
where:
builtIn
- filter built into testIDEA is usedscript
- filter implemented in Python script is usedtestFilters: - filterId: filterA type: script mustHaveAllTags: [asd] mustHaveOneOfTags: [sdfgh] isOr1: false isOr2: false isOr3: false scriptFunction: filterHasParams scriptFunctionParams: [_isys_testSpec, 1] - filterId: filterB isOr1: false isOr2: false isOr3: false includedIds: [two] excludedIds: [three] excludedFunctions: [Func4]
groups: id: <> isExecute: <true | false> desc: <text> filter: filterId: < > type: <builtIn | script> coreId: < > partitions: [<partition>, ...] modules: [<>, ...] includedIds: [<testId>, ...] excludedIds: [<testId>, ...] includedFunctions: [<functionName>, ...] excludedFunctions: [<functionName>, ...] mustHaveAllTags: [<tag>, ...] mustHaveOneOfTags: [<tag>, ...] mustNotHaveAllTags: [<tag>, ...] mustNotHaveOneOfTags: [<tag>, ...] isOr1: <true | false> isOr2: <true | false> isOr3: <true | false> scriptFunction: <scriptFunctionName> scriptFunctionParams: [<scriptFunctionParam>, ...] mergedAnalyzerFile: <fileName.trd> isCloseAfterTest: <true | false> coverageExport: isActive: <true | false> isMeasureAllFunctions: <true | false> isIgnoreNonReachableCode: <true | false> mergeScope: <none | siblingsOnly | siblingsAndParent | all> mergeFilter: filterId: < > type: <builtIn | script> coreId: < > partitions: [<partition>, ...] modules: [<>, ...] includedIds: [<testId>, ...] excludedIds: [<testId>, ...] includedFunctions: [<functionName>, ...] excludedFunctions: [<functionName>, ...] mustHaveAllTags: [<tag>, ...] mustHaveOneOfTags: [<tag>, ...] mustNotHaveAllTags: [<tag>, ...] mustNotHaveOneOfTags: [<tag>, ...] isOr1: <true | false> isOr2: <true | false> isOr3: <true | false> scriptFunction: <scriptFunctionName> scriptFunctionParams: [<scriptFunctionParam>, ...] exportFormat: <HTML | Text | CSV | XML | Review (HTML) | Review (Text)> formatVariant: <variantName> exportFile: <fileName> isAssemblerInfo: <true | false> isLaunchViewer: <true | false> isExportModuleLines: <true | false> isExportSources: <true | false> isExportFunctionLines: <true | false> isExportAsm: <true | false> isExportRanges: <true | false> exportFunctionsFilter: <functionName> exportModulesFilter: <moduleName> statistics: - func: <functionName> code: <percentage> sourceLines: <percentage> branches: <percentage> taken: <percentage> notTaken: <percentage> both: <percentage> execCount: <> - ... coverageAllCodeInGroup: func: <functionName> code: <percentage> sourceLines: <percentage> branches: <percentage> taken: <percentage> notTaken: <percentage> both: <percentage> execCount: <> coverageTestCasesOnly: func: <functionName> code: <percentage> sourceLines: <percentage> branches: <percentage> taken: <percentage> notTaken: <percentage> both: <percentage> execCount: <> initScriptFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName> endScriptFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName> children: - - ...
where:
filter: filterId: <> type: <builtIn | script> coreId: < > partitions: [<partition>, ...] modules: [<>, ...] includedIds: [<testId>, ...] excludedIds: [<testId>, ...] includedFunctions: [<functionName>, ...] excludedFunctions: [<functionName>, ...] mustHaveAllTags: [<tag>, ...] mustHaveOneOfTags: [<tag>, ...] mustNotHaveAllTags: [<tag>, ...] mustNotHaveOneOfTags: [<tag>, ...] isOr1: <true | false> isOr2: <true | false> isOr3: <true | false> scriptFunction: <scriptFunctionName> scriptFunctionParams: [<scriptFunctionParam>, ...]
where:
builtIn
- filter built into testIDEA is usedscript
- filter implemented in Python script is usedtestFilters: - filterId: filterA type: script mustHaveAllTags: [asd] mustHaveOneOfTags: [sdfgh] isOr1: false isOr2: false isOr3: false scriptFunction: filterHasParams scriptFunctionParams: [_isys_testSpec, 1] - filterId: filterB isOr1: false isOr2: false isOr3: false includedIds: [two] excludedIds: [three] excludedFunctions: [Func4]
coverageExport: isActive: <true | false> isMeasureAllFunctions: <true | false> isIgnoreNonReachableCode: <true | false> mergeScope: <none | siblingsOnly | siblingsAndParent | all> mergeFilter: filterId: <> type: <builtIn | script> coreId: < > partitions: [<partition>, ...] modules: [<>, ...] includedIds: [<testId>, ...] excludedIds: [<testId>, ...] includedFunctions: [<functionName>, ...] excludedFunctions: [<functionName>, ...] mustHaveAllTags: [<tag>, ...] mustHaveOneOfTags: [<tag>, ...] mustNotHaveAllTags: [<tag>, ...] mustNotHaveOneOfTags: [<tag>, ...] isOr1: <true | false> isOr2: <true | false> isOr3: <true | false> scriptFunction: <scriptFunctionName> scriptFunctionParams: [<scriptFunctionParam>, ...] exportFormat: <HTML | Text | CSV | XML | Review (HTML) | Review (Text)> formatVariant: <variantName> exportFile: <fileName> isAssemblerInfo: <true | false> isLaunchViewer: <true | false> isExportModuleLines: <true | false> isExportSources: <true | false> isExportFunctionLines: <true | false> isExportAsm: <true | false> isExportRanges: <true | false> exportFunctionsFilter: <functionName> exportModulesFilter: <moduleName> statistics: - func: <functionName> code: <percentage> sourceLines: <percentage> branches: <percentage> taken: <percentage> notTaken: <percentage> both: <percentage> execCount: <> - ...
where:
true
, coverage is recordedtrue
, coverage of all function is recorded, not only of those added in statistics section.none
- no merging is performed.siblingsOnly
- only siblings of this test case, which have already been executed, are used as filter input.siblingsAndParent
- only siblings and parent of this test case, which have already been executed, are used as filter input.all
- all test cases which have been executed up to this point are used as filter inputHTML
- specifies HTML export format.Text
- specifies text export format.CSV
- specifies CSV export format.XML
- specifies XML export format.Review (HTML)
- deprecated.Review (Text)
- deprecated.exportFormat
.true
, information about assembly level coverage will be provided.true
, lines coverage for modules will be exported.true
, lines coverage for modules will be exported.coverage: isActive: true exportFormat: HTML exportFile: testExport.html statistics: - func: max_int code: 96 sourceLines: 85 branches: 100 notTaken: 100
mergeFilter: filterId: <> type: <builtIn | script> coreId: < > partitions: [<partition>, ...] modules: [<>, ...] includedIds: [<testId>, ...] excludedIds: [<testId>, ...] includedFunctions: [<functionName>, ...] excludedFunctions: [<functionName>, ...] mustHaveAllTags: [<tag>, ...] mustHaveOneOfTags: [<tag>, ...] mustNotHaveAllTags: [<tag>, ...] mustNotHaveOneOfTags: [<tag>, ...] isOr1: <true | false> isOr2: <true | false> isOr3: <true | false> scriptFunction: <scriptFunctionName> scriptFunctionParams: [<scriptFunctionParam>, ...]
where:
builtIn
- filter built into testIDEA is usedscript
- filter implemented in Python script is usedtestFilters: - filterId: filterA type: script mustHaveAllTags: [asd] mustHaveOneOfTags: [sdfgh] isOr1: false isOr2: false isOr3: false scriptFunction: filterHasParams scriptFunctionParams: [_isys_testSpec, 1] - filterId: filterB isOr1: false isOr2: false isOr3: false includedIds: [two] excludedIds: [three] excludedFunctions: [Func4]
statistics: - func: <functionName> code: <percentage> sourceLines: <percentage> branches: <percentage> taken: <percentage> notTaken: <percentage> both: <percentage> execCount: <> - ...
where:
coverageAllCodeInGroup: func: <functionName> code: <percentage> sourceLines: <percentage> branches: <percentage> taken: <percentage> notTaken: <percentage> both: <percentage> execCount: <>
where:
coverageTestCasesOnly: func: <functionName> code: <percentage> sourceLines: <percentage> branches: <percentage> taken: <percentage> notTaken: <percentage> both: <percentage> execCount: <>
where:
initScriptFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName>
where:
func: func: min_int params: - 4 - 9 retVal: rv
func: [min_int, [4, 9], rv] expect: [rv == 4]
endScriptFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName>
where:
func: func: min_int params: - 4 - 9 retVal: rv
func: [min_int, [4, 9], rv] expect: [rv == 4]
testCases: id: <> testScope: <unitTest | systemTest> baseId: < > run: <true | false> imports: id: inherit: <true | false> ids: [<testId>, ...] scope: inherit: <true | false> ids: [<testId>, ...] desc: inherit: <true | false> ids: [<testId>, ...] tags: inherit: <true | false> ids: [<testId>, ...] options: inherit: <true | false> ids: [<testId>, ...] persistVars: inherit: <true | false> ids: [<testId>, ...] locals: inherit: <true | false> ids: [<testId>, ...] init: inherit: <true | false> ids: [<testId>, ...] beginStopCondition: inherit: <true | false> ids: [<testId>, ...] endStopCondition: inherit: <true | false> ids: [<testId>, ...] func: inherit: <true | false> ids: [<testId>, ...] testTimeout: inherit: <true | false> ids: [<testId>, ...] coreId: inherit: <true | false> ids: [<testId>, ...] initTargetFunc: inherit: <true | false> ids: [<testId>, ...] initFunc: inherit: <true | false> ids: [<testId>, ...] endFunc: inherit: <true | false> ids: [<testId>, ...] restoreTargetFunc: inherit: <true | false> ids: [<testId>, ...] stubs: inherit: <true | false> ids: [<testId>, ...] userStubs: inherit: <true | false> ids: [<testId>, ...] testPoints: inherit: <true | false> ids: [<testId>, ...] preCondition: inherit: <true | false> ids: [<testId>, ...] assert: inherit: <true | false> ids: [<testId>, ...] stackUsage: inherit: <true | false> ids: [<testId>, ...] log: inherit: <true | false> ids: [<testId>, ...] analyzer: inherit: <true | false> ids: [<testId>, ...] hil: inherit: <true | false> ids: [<testId>, ...] dryRun: inherit: <true | false> ids: [<testId>, ...] diagrams: inherit: <true | false> ids: [<testId>, ...] params: inherit: <true | false> ids: [<testId>, ...] desc: <text> tags: [<tag>, ...] options: {<winIDEAOptionPath>: <optionValue>, ...} persistVars: decl: {<varName>: <varType>, ...} delete: [<varName>, ...] isDeleteAll: <true | false> locals: {<varName>: <varType>, ...} init: {<varName>: <varValue>, ...} beginStopCondition: stopType: <breakpoint | stop | rtExpression | noRun> timeout: <milliseconds> rtExpression: <expression> conditionCount: <count> conditionExpr: <expression> bpLocation: resourceType: <function | file | address> resourceName: <fileName or functionName> srcFileLocation: <localHost | winIDEAHost> line: <number> isSearch: <true | false> linesRange: <number> searchContext: <any | code | comment> matchType: <plain | regEx | testPointId> pattern: <pattern> lineOffset: <number> numSteps: <number> endStopCondition: stopType: <breakpoint | stop | rtExpression | noRun> timeout: <milliseconds> rtExpression: <expression> conditionCount: <count> conditionExpr: <expression> bpLocation: resourceType: <function | file | address> resourceName: <fileName or functionName> srcFileLocation: <localHost | winIDEAHost> line: <number> isSearch: <true | false> linesRange: <number> searchContext: <any | code | comment> matchType: <plain | regEx | testPointId> pattern: <pattern> lineOffset: <number> numSteps: <number> func: func: <functionName> params: [<parameter>, ...] retVal: <varName> testTimeout: <timeout> coreId: <coreId> initTargetFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName> initFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName> endFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName> restoreTargetFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName> stubs: - stubbedFunc: <functionName> isActive: <true | false> isCustomActivation: <true | false> params: [<parameter>, ...] retValName: <varName> scriptFunc: <functionName> hitLimits: min: <numHits> max: <numHits> log: before: [<varName>, ...] after: [<varName>, ...] assignSteps: - expect: [<expression>, ...] assign: {<varName>: <varValue>, ...} scriptParams: [<parameter>, ...] next: <index> - ... - ... userStubs: - func: <functionName> isActive: <true | false> replacementFunc: <functionName> - ... testPoints: - tpId: <> isActive: <true | false> isCustomActivation: <true | false> conditionCount: <count> conditionExpr: <expression> scriptFunc: <functonName> location: resourceType: <function | file | address> resourceName: <fileName or functionName> srcFileLocation: <localHost | winIDEAHost> line: <number> isSearch: <true | false> linesRange: <number> searchContext: <any | code | comment> matchType: <plain | regEx | testPointId> pattern: <pattern> lineOffset: <number> numSteps: <number> log: before: [<varName>, ...] after: [<varName>, ...] hitLimits: min: <numHits> max: <numHits> steps: - expect: [<expression>, ...] assign: {<varName>: <varValue>, ...} scriptParams: [<parameter>, ...] next: <index> - ... - ... preCondition: isExpectException: <true | false> expressions: [<C expression>, ...] assert: isExpectException: <true | false> expressions: [<C expression>, ...] stackUsage: minLimit: <numBytes> maxLimit: <numBytes> log: before: [<varName>, ...] after: [<varName>, ...] analyzer: runMode: <off | start> document: <fileName> openMode: <u | w | a> isSlowRun: <true | false> trigger: <triggerName> isPredefTrigger: <true | false> isSaveAfterTest: <true | false> isCloseAfterTest: <true | false> trace: isActive: <true | false> exportFormat: <Text | CSV | Binary | XML> exportFile: <fileName> coverage: isActive: <true | false> isMeasureAllFunctions: <true | false> isIgnoreNonReachableCode: <true | false> mergeScope: <none | siblingsOnly | siblingsAndParent | all> mergeFilter: filterId: < > type: <builtIn | script> coreId: < > partitions: [<partition>, ...] modules: [<>, ...] includedIds: [<testId>, ...] excludedIds: [<testId>, ...] includedFunctions: [<functionName>, ...] excludedFunctions: [<functionName>, ...] mustHaveAllTags: [<tag>, ...] mustHaveOneOfTags: [<tag>, ...] mustNotHaveAllTags: [<tag>, ...] mustNotHaveOneOfTags: [<tag>, ...] isOr1: <true | false> isOr2: <true | false> isOr3: <true | false> scriptFunction: <scriptFunctionName> scriptFunctionParams: [<scriptFunctionParam>, ...] exportFormat: <HTML | Text | CSV | XML | Review (HTML) | Review (Text)> formatVariant: <variantName> exportFile: <fileName> isAssemblerInfo: <true | false> isLaunchViewer: <true | false> isExportModuleLines: <true | false> isExportSources: <true | false> isExportFunctionLines: <true | false> isExportAsm: <true | false> isExportRanges: <true | false> exportFunctionsFilter: <functionName> exportModulesFilter: <moduleName> statistics: - func: <functionName> code: <percentage> sourceLines: <percentage> branches: <percentage> taken: <percentage> notTaken: <percentage> both: <percentage> execCount: <> - ... profiler: isActive: <true | false> isMeasureAllFunctions: <true | false> exportFormat: <Text | XML | CSV | Text1 | XMLBinaryTimeline | BTF | MDF> exportFile: <> isExportActiveOnly: <true | false> isProfileAUX: <true | false> isSaveHistory: <true | false> codeAreas: - name: <funcName or varName> value: <stateValue> netTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] grossTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] callTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] periodTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] outsideTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] hits: [<number>, ...] - ... dataAreas: - name: <funcName or varName> value: <stateValue> netTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] grossTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] callTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] periodTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] outsideTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] hits: [<number>, ...] - ... hil: params: {<hilParamName>: <hilParamValue>, ...} dryRun: assign: {<hostVarName>: <expression>, ...} isUpdateCoverage: <true | false> isUpdateProfiler: <true | false> profilerMultiplier: < > profilerOffset: < > diagrams: isActive: <true | false> diagrams: - isActive: <true | false> diagramType: <flowChart | sequenceDiagram | callGraph | staticCallGraph | flameGraph | custom | customAsync> script: <scriptName.py> params: [<arg1>, ...] outFile: <fileName> isAddToReport: <true | false> viewer: <multiPage | singlePage | externalApp | none> dataFormat: <byExtension | bitmap | SVG> externalViewer: <pathToApp> - ... tests: - - ...
where:
unitTest
- function will be tested, see section 'func' for function name and parameterssystemTest
- other parts of system will be tested, see sections 'beginStopCondition' and 'endStopCondition'.Help | Display Options ...
for the list of available options. [, [, ...], ]
. Always use mapping form when writing comments to sections.id: test_00023 desc: This test verifies function timings. tags: nightly, unit, systemA run: false locals: a: MyStruct index: int arr: int[10] init: a.x: 10 a.y: 20 index: 0 arr[1]: 333444 initFunc: - arrayInit - - 'myArray' - 0 - 20 - 30 endFunc: - arrayTest - - 'myArray' - 0 - 20 - 30 expect: - a.x == 0x10 - rv == 45 && a > 20 - index >= 0 - charArray == "hello"' - rv == 8 && g_char1 == 'a' @@ b d # rv is written in binary and g_char1 in decimal format
id: test-4 desc: |- This test demonstrates analyzer and profiler analysis. func: [max_int, [8, 456], rv] expect: - rv == 456 analyzer: runMode: start document: max_int.trd openMode: w trigger: Profiler coverage: isActive: true exportFormat: HTML exportFile: testExport.html statistics: - func: max_int code: 96 sourceLines: 85 branches: 100 notTaken: 100 profiler: isActive: true exportFormat: XML exportFile: profilerExport.xml isSaveHistory: true codeAreas: - name: 'max_int' netTime: min: - 6000 - 8000 max: - 6000 - 8000 total: - 6500 - 8000 grossTime: total: - 6000 hits: - 1 - 1 dataAreas: - name: d tests: - id: test-5 imports: analyzer: inherit: true func: ['', [-2, -4]] expect: - rv == -2 - id: test-6 func: ['', [8, 2]] expect: - rv == 8 analyzer: runMode: start document: max_int.trd openMode: w profiler: isActive: true isSaveHistory: true codeAreas: - name: 'max_int' netTime: min: - 4001 - 8001 max: - 4002 - 8002 total: - 4003 - 8003 hits: - 1 - 4
imports: id: inherit: <true | false> ids: [<testId>, ...] scope: inherit: <true | false> ids: [<testId>, ...] desc: inherit: <true | false> ids: [<testId>, ...] tags: inherit: <true | false> ids: [<testId>, ...] options: inherit: <true | false> ids: [<testId>, ...] persistVars: inherit: <true | false> ids: [<testId>, ...] locals: inherit: <true | false> ids: [<testId>, ...] init: inherit: <true | false> ids: [<testId>, ...] beginStopCondition: inherit: <true | false> ids: [<testId>, ...] endStopCondition: inherit: <true | false> ids: [<testId>, ...] func: inherit: <true | false> ids: [<testId>, ...] testTimeout: inherit: <true | false> ids: [<testId>, ...] coreId: inherit: <true | false> ids: [<testId>, ...] initTargetFunc: inherit: <true | false> ids: [<testId>, ...] initFunc: inherit: <true | false> ids: [<testId>, ...] endFunc: inherit: <true | false> ids: [<testId>, ...] restoreTargetFunc: inherit: <true | false> ids: [<testId>, ...] stubs: inherit: <true | false> ids: [<testId>, ...] userStubs: inherit: <true | false> ids: [<testId>, ...] testPoints: inherit: <true | false> ids: [<testId>, ...] preCondition: inherit: <true | false> ids: [<testId>, ...] assert: inherit: <true | false> ids: [<testId>, ...] stackUsage: inherit: <true | false> ids: [<testId>, ...] log: inherit: <true | false> ids: [<testId>, ...] analyzer: inherit: <true | false> ids: [<testId>, ...] hil: inherit: <true | false> ids: [<testId>, ...] dryRun: inherit: <true | false> ids: [<testId>, ...] diagrams: inherit: <true | false> ids: [<testId>, ...] params: inherit: <true | false> ids: [<testId>, ...]
where:
id: inherit: <true | false> ids: [<testId>, ...]
where:
scope: inherit: <true | false> ids: [<testId>, ...]
where:
desc: inherit: <true | false> ids: [<testId>, ...]
where:
tags: inherit: <true | false> ids: [<testId>, ...]
where:
options: inherit: <true | false> ids: [<testId>, ...]
where:
persistVars: inherit: <true | false> ids: [<testId>, ...]
where:
locals: inherit: <true | false> ids: [<testId>, ...]
where:
init: inherit: <true | false> ids: [<testId>, ...]
where:
beginStopCondition: inherit: <true | false> ids: [<testId>, ...]
where:
endStopCondition: inherit: <true | false> ids: [<testId>, ...]
where:
func: inherit: <true | false> ids: [<testId>, ...]
where:
testTimeout: inherit: <true | false> ids: [<testId>, ...]
where:
coreId: inherit: <true | false> ids: [<testId>, ...]
where:
initTargetFunc: inherit: <true | false> ids: [<testId>, ...]
where:
initFunc: inherit: <true | false> ids: [<testId>, ...]
where:
endFunc: inherit: <true | false> ids: [<testId>, ...]
where:
restoreTargetFunc: inherit: <true | false> ids: [<testId>, ...]
where:
stubs: inherit: <true | false> ids: [<testId>, ...]
where:
userStubs: inherit: <true | false> ids: [<testId>, ...]
where:
testPoints: inherit: <true | false> ids: [<testId>, ...]
where:
preCondition: inherit: <true | false> ids: [<testId>, ...]
where:
assert: inherit: <true | false> ids: [<testId>, ...]
where:
stackUsage: inherit: <true | false> ids: [<testId>, ...]
where:
log: inherit: <true | false> ids: [<testId>, ...]
where:
analyzer: inherit: <true | false> ids: [<testId>, ...]
where:
hil: inherit: <true | false> ids: [<testId>, ...]
where:
dryRun: inherit: <true | false> ids: [<testId>, ...]
where:
diagrams: inherit: <true | false> ids: [<testId>, ...]
where:
params: inherit: <true | false> ids: [<testId>, ...]
where:
persistVars: decl: {<varName>: <varType>, ...} delete: [<varName>, ...] isDeleteAll: <true | false>
where:
persistVars: decl: per_v: Vehicle
beginStopCondition: stopType: <breakpoint | stop | rtExpression | noRun> timeout: <milliseconds> rtExpression: <expression> conditionCount: <count> conditionExpr: <expression> bpLocation: resourceType: <function | file | address> resourceName: <fileName or functionName> srcFileLocation: <localHost | winIDEAHost> line: <number> isSearch: <true | false> linesRange: <number> searchContext: <any | code | comment> matchType: <plain | regEx | testPointId> pattern: <pattern> lineOffset: <number> numSteps: <number>
where:
breakpoint
- target will stop when breskpoint is hit. Breakpoint location is defined by tag bpLocation
below.stop
- target will be stopped by emulator when timeout expires, see tag timeout
below.rtExpression
- target will be stopped by emulator when real time expression evaluates to true, see tag rtExpression
below. Target must support real-time access for this option to work.noRun
- target will not be run - this stop condition is not active.breakpoint
, then breakpoint is set after this timeout expires.stop
, then target is stopped after this timeout.rtExpression
, then expression evaluation starts after this timeout.stopType == rtExpression
bpLocation: resourceType: <function | file | address> resourceName: <fileName or functionName> srcFileLocation: <localHost | winIDEAHost> line: <number> isSearch: <true | false> linesRange: <number> searchContext: <any | code | comment> matchType: <plain | regEx | testPointId> pattern: <pattern> lineOffset: <number> numSteps: <number>
where:
function
- function is used for test point location - line numbers are function relative.file
- file is used for test point location - line numbers are file relative.address
- address is used for test point location - intended for iSYSTEM internal use.resourceType
above.localHost
- sources will be read from local host, where isystem.connect client is runningwinIDEAHost
- sources will be read from remote host, where winIDEA is runningany
- complete line is searched for pattern.code
- only code is searched for pattern. Single line comment (//) is removed.comment
- only comment is searched (single line comment is recognized only (//)).plain
- pattern is used for search literally.regEx
- pattern is interpreted as regular expression.testPointId
- Search pattern is composed of string 'TID: ' and Test Point ID. Tag pattern
is ignored.tp[12A]
tp.
tp.*
endStopCondition: stopType: <breakpoint | stop | rtExpression | noRun> timeout: <milliseconds> rtExpression: <expression> conditionCount: <count> conditionExpr: <expression> bpLocation: resourceType: <function | file | address> resourceName: <fileName or functionName> srcFileLocation: <localHost | winIDEAHost> line: <number> isSearch: <true | false> linesRange: <number> searchContext: <any | code | comment> matchType: <plain | regEx | testPointId> pattern: <pattern> lineOffset: <number> numSteps: <number>
where:
breakpoint
- target will stop when breskpoint is hit. Breakpoint location is defined by tag bpLocation
below.stop
- target will be stopped by emulator when timeout expires, see tag timeout
below.rtExpression
- target will be stopped by emulator when real time expression evaluates to true, see tag rtExpression
below. Target must support real-time access for this option to work.noRun
- target will not be run - this stop condition is not active.breakpoint
, then breakpoint is set after this timeout expires.stop
, then target is stopped after this timeout.rtExpression
, then expression evaluation starts after this timeout.stopType == rtExpression
[, [, ...], ]
. Always use mapping form when writing comments to sections.
Syntax:
func: func: <functionName> params: [<parameter>, ...] retVal: <varName>
where:
func: func: min_int params: - 4 - 9 retVal: rv
func: [min_int, [4, 9], rv] expect: [rv == 4]
initTargetFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName>
where:
func: func: min_int params: - 4 - 9 retVal: rv
func: [min_int, [4, 9], rv] expect: [rv == 4]
initFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName>
where:
func: func: min_int params: - 4 - 9 retVal: rv
func: [min_int, [4, 9], rv] expect: [rv == 4]
endFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName>
where:
func: func: min_int params: - 4 - 9 retVal: rv
func: [min_int, [4, 9], rv] expect: [rv == 4]
restoreTargetFunc: func: <functionName> params: [<parameter>, ...] retVal: <varName>
where:
func: func: min_int params: - 4 - 9 retVal: rv
func: [min_int, [4, 9], rv] expect: [rv == 4]
stubs: - stubbedFunc: <functionName> isActive: <true | false> isCustomActivation: <true | false> params: [<parameter>, ...] retValName: <varName> scriptFunc: <functionName> hitLimits: min: <numHits> max: <numHits> log: before: [<varName>, ...] after: [<varName>, ...] assignSteps: - expect: [<expression>, ...] assign: {<varName>: <varValue>, ...} scriptParams: [<parameter>, ...] next: <index> - ... - ...
where:
func: [funcForIntStubTest, [], retVal] stubs: - func: [stubbedFuncInt, stubRV] assignSteps: - assign: stubRV: 654 scriptParams: [3, 4] - assign: stubRV: 655 scriptParams: [4, 5] next: 0 # continue with the first step expect: - retVal == 700
hitLimits: min: <numHits> max: <numHits>
where:
log: before: [<varName>, ...] after: [<varName>, ...]
where:
assignSteps: - expect: [<expression>, ...] assign: {<varName>: <varValue>, ...} scriptParams: [<parameter>, ...] next: <index> - ...
where:
userStubs: - func: <functionName> isActive: <true | false> replacementFunc: <functionName> - ...
where:
func: [funcForIntStubTest, [], rv] userStubs: - func: stubbedFuncInt isActive: true replacementFunc: repl_stubbedFuncInt expect: - rv == 234
testPoints: - tpId: <> isActive: <true | false> isCustomActivation: <true | false> conditionCount: <count> conditionExpr: <expression> scriptFunc: <functonName> location: resourceType: <function | file | address> resourceName: <fileName or functionName> srcFileLocation: <localHost | winIDEAHost> line: <number> isSearch: <true | false> linesRange: <number> searchContext: <any | code | comment> matchType: <plain | regEx | testPointId> pattern: <pattern> lineOffset: <number> numSteps: <number> log: before: [<varName>, ...] after: [<varName>, ...] hitLimits: min: <numHits> max: <numHits> steps: - expect: [<expression>, ...] assign: {<varName>: <varValue>, ...} scriptParams: [<parameter>, ...] next: <index> - ... - ...
where:
testPoints: - tpId: tp_id_4 location: resourceName: testPointTest line: 0 isSearch: true log: before: - p1 - x after: - p1 steps: - expect: - p1 == 11 assign: g_char1: 12 - tpId: myComplexTestPoint scriptFunc: stubFunc3 location: resourceName: testPointTest isSearch: true searchContext: any matchType: plain pattern: myComplexTestPoint log: before: - p1 - x after: - x steps: - expect: - p1==11 scriptParams: - 45
location: resourceType: <function | file | address> resourceName: <fileName or functionName> srcFileLocation: <localHost | winIDEAHost> line: <number> isSearch: <true | false> linesRange: <number> searchContext: <any | code | comment> matchType: <plain | regEx | testPointId> pattern: <pattern> lineOffset: <number> numSteps: <number>
where:
function
- function is used for test point location - line numbers are function relative.file
- file is used for test point location - line numbers are file relative.address
- address is used for test point location - intended for iSYSTEM internal use.resourceType
above.localHost
- sources will be read from local host, where isystem.connect client is runningwinIDEAHost
- sources will be read from remote host, where winIDEA is runningany
- complete line is searched for pattern.code
- only code is searched for pattern. Single line comment (//) is removed.comment
- only comment is searched (single line comment is recognized only (//)).plain
- pattern is used for search literally.regEx
- pattern is interpreted as regular expression.testPointId
- Search pattern is composed of string 'TID: ' and Test Point ID. Tag pattern
is ignored.tp[12A]
tp.
tp.*
log: before: [<varName>, ...] after: [<varName>, ...]
where:
hitLimits: min: <numHits> max: <numHits>
where:
steps: - expect: [<expression>, ...] assign: {<varName>: <varValue>, ...} scriptParams: [<parameter>, ...] next: <index> - ...
where:
preCondition: isExpectException: <true | false> expressions: [<C expression>, ...]
where:
assert: isExpectException: <true | false> expressions: [<C expression>, ...]
where:
stackUsage: minLimit: <numBytes> maxLimit: <numBytes>
where:
log: before: [<varName>, ...] after: [<varName>, ...]
where:
analyzer: runMode: <off | start> document: <fileName> openMode: <u | w | a> isSlowRun: <true | false> trigger: <triggerName> isPredefTrigger: <true | false> isSaveAfterTest: <true | false> isCloseAfterTest: <true | false> trace: isActive: <true | false> exportFormat: <Text | CSV | Binary | XML> exportFile: <fileName> coverage: isActive: <true | false> isMeasureAllFunctions: <true | false> isIgnoreNonReachableCode: <true | false> mergeScope: <none | siblingsOnly | siblingsAndParent | all> mergeFilter: filterId: <> type: <builtIn | script> coreId: < > partitions: [<partition>, ...] modules: [<>, ...] includedIds: [<testId>, ...] excludedIds: [<testId>, ...] includedFunctions: [<functionName>, ...] excludedFunctions: [<functionName>, ...] mustHaveAllTags: [<tag>, ...] mustHaveOneOfTags: [<tag>, ...] mustNotHaveAllTags: [<tag>, ...] mustNotHaveOneOfTags: [<tag>, ...] isOr1: <true | false> isOr2: <true | false> isOr3: <true | false> scriptFunction: <scriptFunctionName> scriptFunctionParams: [<scriptFunctionParam>, ...] exportFormat: <HTML | Text | CSV | XML | Review (HTML) | Review (Text)> formatVariant: <variantName> exportFile: <fileName> isAssemblerInfo: <true | false> isLaunchViewer: <true | false> isExportModuleLines: <true | false> isExportSources: <true | false> isExportFunctionLines: <true | false> isExportAsm: <true | false> isExportRanges: <true | false> exportFunctionsFilter: <functionName> exportModulesFilter: <moduleName> statistics: - func: <functionName> code: <percentage> sourceLines: <percentage> branches: <percentage> taken: <percentage> notTaken: <percentage> both: <percentage> execCount: <> - ... profiler: isActive: <true | false> isMeasureAllFunctions: <true | false> exportFormat: <Text | XML | CSV | Text1 | XMLBinaryTimeline | BTF | MDF> exportFile: <> isExportActiveOnly: <true | false> isProfileAUX: <true | false> isSaveHistory: <true | false> codeAreas: - name: <funcName or varName> value: <stateValue> netTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] grossTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] callTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] periodTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] outsideTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] hits: [<number>, ...] - ... dataAreas: - name: <funcName or varName> value: <stateValue> netTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] grossTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] callTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] periodTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] outsideTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] hits: [<number>, ...] - ...
where:
off
- analyzer is not startedstart
- analyzer is started*.trd
for file name.u
- opens existing file for update.w
- (default) opens existing file and deletes contents or creates new file.a
- opens existing file and keeps contents, or creates new file. Currently contents is appended only for coverage.true
, then slow run is used for analyzer. This way analyzer can be run on targets without trace capabilities.true
, the document is saved after test. false
by default.true
, the document is closed after test. false
by default.analyzer: runMode: start document: cumulative.trd openMode: w isSaveAfterTest: true isCloseAfterTest: false coverage: isActive: true statistics: - func: complexFunction code: 50
trace: isActive: <true | false> exportFormat: <Text | CSV | Binary | XML> exportFile: <fileName>
where:
true
, trace is recorded.Text
- specifies text export format.CSV
- specifies CSV export format.Binary
- specifies binary export format.XML
- specifies XML export format.exportFormat
.
coverage: isActive: <true | false> isMeasureAllFunctions: <true | false> isIgnoreNonReachableCode: <true | false> mergeScope: <none | siblingsOnly | siblingsAndParent | all> mergeFilter: filterId: <> type: <builtIn | script> coreId: < > partitions: [<partition>, ...] modules: [<>, ...] includedIds: [<testId>, ...] excludedIds: [<testId>, ...] includedFunctions: [<functionName>, ...] excludedFunctions: [<functionName>, ...] mustHaveAllTags: [<tag>, ...] mustHaveOneOfTags: [<tag>, ...] mustNotHaveAllTags: [<tag>, ...] mustNotHaveOneOfTags: [<tag>, ...] isOr1: <true | false> isOr2: <true | false> isOr3: <true | false> scriptFunction: <scriptFunctionName> scriptFunctionParams: [<scriptFunctionParam>, ...] exportFormat: <HTML | Text | CSV | XML | Review (HTML) | Review (Text)> formatVariant: <variantName> exportFile: <fileName> isAssemblerInfo: <true | false> isLaunchViewer: <true | false> isExportModuleLines: <true | false> isExportSources: <true | false> isExportFunctionLines: <true | false> isExportAsm: <true | false> isExportRanges: <true | false> exportFunctionsFilter: <functionName> exportModulesFilter: <moduleName> statistics: - func: <functionName> code: <percentage> sourceLines: <percentage> branches: <percentage> taken: <percentage> notTaken: <percentage> both: <percentage> execCount: <> - ...
where:
true
, coverage is recordedtrue
, coverage of all function is recorded, not only of those added in statistics section.none
- no merging is performed.siblingsOnly
- only siblings of this test case, which have already been executed, are used as filter input.siblingsAndParent
- only siblings and parent of this test case, which have already been executed, are used as filter input.all
- all test cases which have been executed up to this point are used as filter inputHTML
- specifies HTML export format.Text
- specifies text export format.CSV
- specifies CSV export format.XML
- specifies XML export format.Review (HTML)
- deprecated.Review (Text)
- deprecated.exportFormat
.true
, information about assembly level coverage will be provided.true
, lines coverage for modules will be exported.true
, lines coverage for modules will be exported.coverage: isActive: true exportFormat: HTML exportFile: testExport.html statistics: - func: max_int code: 96 sourceLines: 85 branches: 100 notTaken: 100
profiler: isActive: <true | false> isMeasureAllFunctions: <true | false> exportFormat: <Text | XML | CSV | Text1 | XMLBinaryTimeline | BTF | MDF> exportFile: <> isExportActiveOnly: <true | false> isProfileAUX: <true | false> isSaveHistory: <true | false> codeAreas: - name: <funcName or varName> value: <stateValue> netTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] grossTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] callTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] periodTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] outsideTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] hits: [<number>, ...] - ... dataAreas: - name: <funcName or varName> value: <stateValue> netTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] grossTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] callTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] periodTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] outsideTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] hits: [<number>, ...] - ...
where:
true
, profiling data is recordedtrue
, profiling data of all function is recorded, not only of those added in code areas.Text
- specifies text export format.XML
- specifies XML export format.CSV
- specifies CSV export format.Text1
- specifies Text1 export format.XMLBinaryTimeline
- specifies XML export format for statistics, binary file for timeline.BTF
- specifies BTF export format.MDF
- specifies MDF export format.exportFormat
.true
, AUX signals will be recorded.true
, profiler timeline results will be saved after test.analyzer: profiler: isActive: true exportFormat: XML exportFile: profilerExport.xml isSaveHistory: true codeAreas: - name: 'max_int' netTime: min: - 6000 - 8000 max: - 6000 - 8000 total: - 6500 - 8000 grossTime: total: - 6000 hits: - 1 - 1
codeAreas: - name: <funcName or varName> value: <stateValue> netTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] grossTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] callTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] periodTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] outsideTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] hits: [<number>, ...] - ...
where:
netTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>]
where:
grossTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>]
where:
callTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>]
where:
periodTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>]
where:
outsideTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>]
where:
dataAreas: - name: <funcName or varName> value: <stateValue> netTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] grossTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] callTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] periodTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] outsideTime: min: [<lowerBound>, <upperBound>] minStart: [<lowerBound>, <upperBound>] minEnd: [<lowerBound>, <upperBound>] max: [<lowerBound>, <upperBound>] maxStart: [<lowerBound>, <upperBound>] maxEnd: [<lowerBound>, <upperBound>] total: [<lowerBound>, <upperBound>] average: [<lowerBound>, <upperBound>] hits: [<number>, ...] - ...
where:
hil: params: {<hilParamName>: <hilParamValue>, ...}
where:
hil: params: DigitalOut.DOUT0: HIGH
dryRun: assign: {<hostVarName>: <expression>, ...} isUpdateCoverage: <true | false> isUpdateProfiler: <true | false> profilerMultiplier: <> profilerOffset: < >
where:
diagrams: isActive: <true | false> diagrams: - isActive: <true | false> diagramType: <flowChart | sequenceDiagram | callGraph | staticCallGraph | flameGraph | custom | customAsync> script: <scriptName.py> params: [<arg1>, ...] outFile: <fileName> isAddToReport: <true | false> viewer: <multiPage | singlePage | externalApp | none> dataFormat: <byExtension | bitmap | SVG> externalViewer: <pathToApp> - ...
where:
diagrams: - isActive: <true | false> diagramType: <flowChart | sequenceDiagram | callGraph | staticCallGraph | flameGraph | custom | customAsync> script: <scriptName.py> params: [<arg1>, ...] outFile: <fileName> isAddToReport: <true | false> viewer: <multiPage | singlePage | externalApp | none> dataFormat: <byExtension | bitmap | SVG> externalViewer: <pathToApp> - ...
where:
flowChart
- built-in flow chart based on static analysis of object code is drawn.sequenceDiagram
- built-in sequence diagram based on analyzer recording is drawn. Use testIDEA to properly configure analyzer.callGraph
- built-in call graph based on analyzer recording is drawn. Use testIDEA to properly configure analyzer.staticCallGraph
- built-in call graph based on static object code analysis.flameGraph
- built-in flame graph based on dynamic stack trace analysis.custom
- custom specified script is called to create a diagram.customAsync
- custom specified script is called asynchronously to create a diagram. These diagrams can not be included in reports.multiPage
- testIDEA opens diagram in multipage window.singlePage
- testIDEA opens diagram in single-page window.externalApp
- testIDEA opens diagram in external application.none
- testIDEA opens diagram only in section Diagrams.byExtension
- display format is determined on extension: svg, csv, txt, png, jpg, jpeg, bmpbitmap
- one of bitmap formats (jpg, bmp, ...)SVG
- SVG format