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