blob: bfa68f992941859115d707df374d346730d13b12 [file] [log] [blame]
/*-------------------------------------------------------------------------
* drawElements Quality Program Tester Core
* ----------------------------------------
*
* Copyright 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*//*!
* \file
* \brief Test log parser for instrumentation
*//*--------------------------------------------------------------------*/
package com.drawelements.deqp.testercore;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
public class TestLogParser {
static { System.loadLibrary("deqp"); }
private long m_nativePointer;
private DeqpInstrumentation m_instrumentation;
private FileInputStream m_log;
private String m_logFileName;
private byte[] m_buffer;
private long m_logRead;
public TestLogParser() {
m_nativePointer = 0;
m_instrumentation = null;
m_log = null;
m_logRead = 0;
m_buffer = null;
}
public void init(DeqpInstrumentation instrumentation, String logFileName,
boolean logData) throws FileNotFoundException {
assert instrumentation != null;
assert m_instrumentation == null;
assert m_nativePointer == 0;
assert m_log == null;
m_logFileName = logFileName;
m_instrumentation = instrumentation;
m_nativePointer = nativeCreate(logData);
m_buffer = new byte[4 * 1024 * 1024];
m_log = new FileInputStream(m_logFileName);
}
public void deinit() throws IOException {
assert m_nativePointer != 0;
assert m_instrumentation != null;
assert m_log != null;
nativeDestroy(m_nativePointer);
if (m_log != null)
m_log.close();
m_nativePointer = 0;
m_instrumentation = null;
m_log = null;
m_buffer = null;
}
public boolean parse() throws IOException {
assert m_nativePointer != 0;
assert m_instrumentation != null;
assert m_log != null;
boolean gotData = false;
while (true) {
final int numAvailable = m_log.available();
if (numAvailable <= 0)
break;
final int numRead = m_log.read(
m_buffer, 0, Math.min(numAvailable, m_buffer.length));
assert numRead > 0;
m_logRead += numRead;
gotData = true;
nativeParse(m_nativePointer, m_instrumentation, m_buffer, numRead);
}
return gotData;
}
private static native long nativeCreate(boolean logData);
private static native void nativeDestroy(long nativePointer);
private static native void nativeParse(long nativePointer,
DeqpInstrumentation instrumentation,
byte[] buffer, int size);
}