blob: 842ad001f72f48cf13b2a8c8e2a783e447fb056a [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);
}