You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
176 lines
4.9 KiB
176 lines
4.9 KiB
4 months ago
|
|
||
|
***** QPA FILE FORMAT ******
|
||
|
|
||
|
Date: 21st March 2013
|
||
|
|
||
|
The QPA file is a combination of two formats:
|
||
|
- Container format is the outer format that runs through test
|
||
|
executable life time
|
||
|
- Per case XML-based log is stored for each test case within
|
||
|
the container format
|
||
|
|
||
|
The best additional reference is the code used to handle the logs as
|
||
|
well as sample .qpa file. See framework/qphelper/qpTestLog.c, for
|
||
|
example. Also, executor/xeTestLogParser.cpp will be a helful.
|
||
|
|
||
|
The descriptions below flow in the order the items appear in normal
|
||
|
log files. Comments are prefixed with an asterisk ('*').
|
||
|
|
||
|
=== Container format ===
|
||
|
|
||
|
* Container format starts with multiple entries of form:
|
||
|
|
||
|
#sessionInfo [key] [value]
|
||
|
|
||
|
* The session info entries do not have fixed order.
|
||
|
* Info header keys written by a test binary are listed below.
|
||
|
releaseName
|
||
|
releaseId
|
||
|
targetName
|
||
|
|
||
|
* Candy writes and reads the following additional keys:
|
||
|
candyTargetName
|
||
|
resultName
|
||
|
timestamp
|
||
|
configName
|
||
|
|
||
|
* Additional header values will be added as needed.
|
||
|
|
||
|
* The test binary starts actual execution by outputting:
|
||
|
#beginSession
|
||
|
|
||
|
* Each test case looks like:
|
||
|
#beginTestCaseResult <name of the test case>
|
||
|
<Test Case Log - see the separate section below>
|
||
|
#endTestCaseResult or #terminateTestCaseResult <cause>
|
||
|
|
||
|
* After test cases, tests time summary is added
|
||
|
#beginTestsCasesTime <section with time summary>
|
||
|
#endTestsCasesTime <end of time summary section>
|
||
|
|
||
|
* Execution done
|
||
|
#endSession
|
||
|
|
||
|
|
||
|
=== Test Case Log ===
|
||
|
|
||
|
* XML log can be incomplete due to, e.g., crash. Please, use a SAX
|
||
|
parser as they can work with incomplete XML.
|
||
|
|
||
|
* First start the XML stream and open the TestCaseResult element. All
|
||
|
other elements go into the TestCaseResult element.
|
||
|
|
||
|
<?xml version="1.0"?>
|
||
|
|
||
|
<TestCaseResult Version="0.3.2" CasePath="[path]" CaseType="[type]">
|
||
|
[path] = Full name of the test case. Groups separated with periods ('.')
|
||
|
[type] = SelfValidate,Performance,Accuracy,Capability
|
||
|
The version will be increased any time changes to the format are made.
|
||
|
|
||
|
* After this point there'll be a mix of following elements. Order
|
||
|
corresponds to the execution of the test case. All of the elements
|
||
|
below may contain attributes Name and Description, which will have
|
||
|
appropriate strings as values. Not all elements will have Name and
|
||
|
Description.
|
||
|
|
||
|
|
||
|
<Text>[string]</Text>
|
||
|
|
||
|
|
||
|
<Number Tag="[tag]" Unit="[string]">[float]</Number>
|
||
|
[tag] = Performance,Quality,Precision,Time
|
||
|
|
||
|
|
||
|
<ShaderProgram LinkStatus="[status]">
|
||
|
<VertexShader CompileStatus="[status]">
|
||
|
<ShaderSource>[string]</ShaderSource>
|
||
|
<InfoLog>[string]</InfoLog>
|
||
|
</VertexShader>
|
||
|
<FragmentShader CompileStatus="[status]">
|
||
|
<ShaderSource>[string]</ShaderSource>
|
||
|
<InfoLog>[string]</InfoLog>
|
||
|
</FragmentShader>
|
||
|
<InfoLog>[string]</InfoLog>
|
||
|
</ShaderProgram>
|
||
|
[status] = OK,Fail
|
||
|
InfoLogs are the outputs from the GLES log query functions.
|
||
|
|
||
|
|
||
|
<EglConfigSet>
|
||
|
<EglConfig BufferSize="[int]"
|
||
|
RedSize="[int]"
|
||
|
GreenSize="[int]"
|
||
|
BlueSize="[int]"
|
||
|
LuminanceSize="[int]"
|
||
|
AlphaSize="[int]"
|
||
|
AlphaMaskSize="[int]"
|
||
|
BindToTextureRGB="[bool]"
|
||
|
BindToTextureRGBA="[bool]"
|
||
|
ColorBufferType="[string]"
|
||
|
ConfigCaveat="[string]"
|
||
|
ConfigID="[int]"
|
||
|
Conformant="[string]"
|
||
|
DepthSize="[int]"
|
||
|
Level="[int]"
|
||
|
MaxPBufferWidth="[int]"
|
||
|
MaxPBufferHeight="[int]"
|
||
|
MaxPBufferPixels="[int]"
|
||
|
MaxSwapInterval="[int]"
|
||
|
MinSwapInterval="[int]"
|
||
|
NativeRenderable="[bool]"
|
||
|
RenderableType="[string]"
|
||
|
SampleBuffers="[int]"
|
||
|
Samples="[int]"
|
||
|
StencilSize="[int]"
|
||
|
SurfaceTypes="[int]"
|
||
|
TransparentType="[int]"
|
||
|
TransparentRedValue="[int]"
|
||
|
TransparentGreenValue="[int]"
|
||
|
TransparentBlueValue="[int]"/>
|
||
|
</EglConfigSet>
|
||
|
[bool] = True,False
|
||
|
|
||
|
|
||
|
<KernelSource>[string]</KernelSource>
|
||
|
OpenCL kernel
|
||
|
|
||
|
|
||
|
<CompileInfo CompileStatus="[status]">[string]</CompileInfo>
|
||
|
[status] = OK,Fail
|
||
|
Compile info for OpenCL kernel
|
||
|
|
||
|
|
||
|
<ImageSet>[One or more related images]</ImageSet>
|
||
|
|
||
|
|
||
|
<Image Width="[int]"
|
||
|
Height="[int]"
|
||
|
Format="[format]"
|
||
|
CompressionMode="[compression]">
|
||
|
[base64 encoded data]
|
||
|
</Image>
|
||
|
[format] = RGB888,RGBA8888
|
||
|
[compression] = None,PNG
|
||
|
|
||
|
|
||
|
<Section>[any of the above log elements and section elements]</Section>
|
||
|
|
||
|
|
||
|
* If the test finishes so that the framework has control, the Result
|
||
|
element is inserted.
|
||
|
|
||
|
<Result StatusCode="[status]">[Details string]</Result>
|
||
|
[status] =
|
||
|
Pass, // Test case passed.
|
||
|
Fail, // Test case failed (not passed).
|
||
|
QualityWarning, // Result within specification, but suspicious quality wise
|
||
|
CompatibilityWarning, // Result within specification, but likely to cause fragmentation
|
||
|
NotSupported, // Some feature was not supported in the implementation.
|
||
|
ResourceError, // A resource error has occurred.
|
||
|
InternalError, // An internal error has occurred.
|
||
|
[Details string] = Further details or measured value as float for Performance and Accuracy cases.
|
||
|
|
||
|
* We are done, let's close the TestCaseResult element
|
||
|
|
||
|
</TestCaseResult>
|