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