1 2 ***** QPA FILE FORMAT ****** 3 4 Date: 21st March 2013 5 6 The QPA file is a combination of two formats: 7 - Container format is the outer format that runs through test 8 executable life time 9 - Per case XML-based log is stored for each test case within 10 the container format 11 12 The best additional reference is the code used to handle the logs as 13 well as sample .qpa file. See framework/qphelper/qpTestLog.c, for 14 example. Also, executor/xeTestLogParser.cpp will be a helful. 15 16 The descriptions below flow in the order the items appear in normal 17 log files. Comments are prefixed with an asterisk ('*'). 18 19 === Container format === 20 21 * Container format starts with multiple entries of form: 22 23 #sessionInfo [key] [value] 24 25 * The session info entries do not have fixed order. 26 * Info header keys written by a test binary are listed below. 27 releaseName 28 releaseId 29 targetName 30 31 * Candy writes and reads the following additional keys: 32 candyTargetName 33 resultName 34 timestamp 35 configName 36 37 * Additional header values will be added as needed. 38 39 * The test binary starts actual execution by outputting: 40 #beginSession 41 42 * Each test case looks like: 43 #beginTestCaseResult <name of the test case> 44 <Test Case Log - see the separate section below> 45 #endTestCaseResult or #terminateTestCaseResult <cause> 46 47 * Execution done 48 #endSession 49 50 51 === Test Case Log === 52 53 * XML log can be incomplete due to, e.g., crash. Please, use a SAX 54 parser as they can work with incomplete XML. 55 56 * First start the XML stream and open the TestCaseResult element. All 57 other elements go into the TestCaseResult element. 58 59 <?xml version="1.0"?> 60 61 <TestCaseResult Version="0.3.2" CasePath="[path]" CaseType="[type]"> 62 [path] = Full name of the test case. Groups separated with periods ('.') 63 [type] = SelfValidate,Performance,Accuracy,Capability 64 The version will be increased any time changes to the format are made. 65 66 * After this point there'll be a mix of following elements. Order 67 corresponds to the execution of the test case. All of the elements 68 below may contain attributes Name and Description, which will have 69 appropriate strings as values. Not all elements will have Name and 70 Description. 71 72 73 <Text>[string]</Text> 74 75 76 <Number Tag="[tag]" Unit="[string]">[float]</Number> 77 [tag] = Performance,Quality,Precision,Time 78 79 80 <ShaderProgram LinkStatus="[status]"> 81 <VertexShader CompileStatus="[status]"> 82 <ShaderSource>[string]</ShaderSource> 83 <InfoLog>[string]</InfoLog> 84 </VertexShader> 85 <FragmentShader CompileStatus="[status]"> 86 <ShaderSource>[string]</ShaderSource> 87 <InfoLog>[string]</InfoLog> 88 </FragmentShader> 89 <InfoLog>[string]</InfoLog> 90 </ShaderProgram> 91 [status] = OK,Fail 92 InfoLogs are the outputs from the GLES log query functions. 93 94 95 <EglConfigSet> 96 <EglConfig BufferSize="[int]" 97 RedSize="[int]" 98 GreenSize="[int]" 99 BlueSize="[int]" 100 LuminanceSize="[int]" 101 AlphaSize="[int]" 102 AlphaMaskSize="[int]" 103 BindToTextureRGB="[bool]" 104 BindToTextureRGBA="[bool]" 105 ColorBufferType="[string]" 106 ConfigCaveat="[string]" 107 ConfigID="[int]" 108 Conformant="[string]" 109 DepthSize="[int]" 110 Level="[int]" 111 MaxPBufferWidth="[int]" 112 MaxPBufferHeight="[int]" 113 MaxPBufferPixels="[int]" 114 MaxSwapInterval="[int]" 115 MinSwapInterval="[int]" 116 NativeRenderable="[bool]" 117 RenderableType="[string]" 118 SampleBuffers="[int]" 119 Samples="[int]" 120 StencilSize="[int]" 121 SurfaceTypes="[int]" 122 TransparentType="[int]" 123 TransparentRedValue="[int]" 124 TransparentGreenValue="[int]" 125 TransparentBlueValue="[int]"/> 126 </EglConfigSet> 127 [bool] = True,False 128 129 130 <KernelSource>[string]</KernelSource> 131 OpenCL kernel 132 133 134 <CompileInfo CompileStatus="[status]">[string]</CompileInfo> 135 [status] = OK,Fail 136 Compile info for OpenCL kernel 137 138 139 <ImageSet>[One or more related images]</ImageSet> 140 141 142 <Image Width="[int]" 143 Height="[int]" 144 Format="[format]" 145 CompressionMode="[compression]"> 146 [base64 encoded data] 147 </Image> 148 [format] = RGB888,RGBA8888 149 [compression] = None,PNG 150 151 152 <Section>[any of the above log elements and section elements]</Section> 153 154 155 * If the test finishes so that the framework has control, the Result 156 element is inserted. 157 158 <Result StatusCode="[status]">[Details string]</Result> 159 [status] = 160 Pass, // Test case passed. 161 Fail, // Test case failed (not passed). 162 QualityWarning, // Result within specification, but suspicious quality wise 163 CompatibilityWarning, // Result within specification, but likely to cause fragmentation 164 NotSupported, // Some feature was not supported in the implementation. 165 ResourceError, // A resource error has occurred. 166 InternalError, // An internal error has occurred. 167 [Details string] = Further details or measured value as float for Performance and Accuracy cases. 168 169 * We are done, let's close the TestCaseResult element 170 171 </TestCaseResult> 172