1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
***** 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>
|