| /* |
| * Copyright (C) 2008 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. |
| */ |
| package org.apache.harmony.crypto.tests.javax.crypto.func; |
| |
| public abstract class TestThread implements Runnable { |
| public String[] algNamesArray = null; |
| public int aCounter = 0; |
| public String algName = null; |
| public StringBuffer errorSB = null; |
| public int fails = 0; |
| public boolean flagTestResult = false; |
| |
| TestThread(String[] names) { |
| algNamesArray = names; |
| aCounter = 0; |
| } |
| |
| public abstract void test() throws Exception; |
| |
| public void launcher() { |
| Thread thread = null; |
| |
| do { |
| algName = getNextAlgorithmName(); |
| thread = new Thread(this); |
| thread.start(); |
| try { |
| thread.join(); |
| } catch (InterruptedException e) { |
| e.printStackTrace(); |
| } |
| } while (hasAlgorithmName()); |
| } |
| |
| public void run() { |
| try { |
| test(); |
| } catch (Exception e) { |
| if(errorSB == null) { |
| errorSB = new StringBuffer(); |
| } |
| errorSB.append(e.getMessage()); |
| errorSB.append("\n"); |
| errorSB.append(getAlgorithmName()); |
| errorSB.append("\n"); |
| StackTraceElement[] st = e.getStackTrace(); |
| for (int i = 0; i < st.length; i++) { |
| errorSB.append(st[i].toString()); |
| errorSB.append("\n"); |
| } |
| fails++; |
| return; |
| } |
| flagTestResult = true; |
| } |
| |
| public String getAlgorithmName() { |
| return algName; |
| } |
| |
| public boolean hasAlgorithmName() { |
| return (aCounter < algNamesArray.length); |
| } |
| |
| public String getNextAlgorithmName() { |
| aCounter = (hasAlgorithmName()) ? aCounter : 0; |
| return algNamesArray[aCounter++]; |
| } |
| |
| public long getTotalFailuresNumber() { |
| return fails; |
| } |
| |
| public String getFailureMessages() { |
| return (errorSB == null) ? "" : new String(errorSB); |
| } |
| } |