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