| /*------------------------------------------------------------------------- |
| * 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); |
| } |