blob: 1ea74d9e82e7c3f0ea20af6f3882f3d4e2e83409 [file] [log] [blame]
/*
* Copyright (C) 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.
*/
package dexfuzz.listeners;
import dexfuzz.ExecutionResult;
import dexfuzz.executors.Executor;
import dexfuzz.program.Mutation;
import java.util.List;
import java.util.Map;
/**
* Logs output to the console, when not using --repeat.
*/
public class ConsoleLoggerListener extends BaseListener {
@Override
public void setup() {
}
@Override
public void shutdown() {
}
private void logToConsole(String msg) {
System.out.println("CONSOLE: " + msg);
}
@Override
public void handleSuccessfulHostVerification() {
logToConsole("Successful host verification");
}
@Override
public void handleFailedHostVerification(ExecutionResult verificationResult) {
logToConsole("Failed host verification");
}
@Override
public void handleMutations(List<Mutation> mutations) {
for (Mutation mutation : mutations) {
logToConsole("Applied mutation: " + mutation.toString());
}
}
@Override
public void handleArchitectureSplit() {
logToConsole("Detected architectural split.");
}
@Override
public void handleFailedTargetVerification() {
logToConsole("Failed target verification");
}
@Override
public void handleIterationStarted(int iteration) {
logToConsole("Starting iteration " + iteration);
}
@Override
public void handleIterationFinished(int iteration) {
logToConsole("Finished iteration " + iteration);
}
@Override
public void handleTimeouts(List<Executor> timedOut, List<Executor> didNotTimeOut) {
logToConsole("Timed out: " + timedOut.size() + " Did not time out: " + didNotTimeOut.size());
}
@Override
public void handleDivergences(Map<String, List<Executor>> outputMap) {
logToConsole("Got divergences!");
int outputCount = 1;
for (List<Executor> executors : outputMap.values()) {
logToConsole("Output " + outputCount + ":");
for (Executor executor : executors) {
logToConsole(" " + executor.getName());
}
outputCount++;
}
}
@Override
public void handleFuzzingFile(String inputFile) {
logToConsole("Fuzzing: " + inputFile);
}
@Override
public void handleSeed(long seed) {
logToConsole("Seed: " + seed);
}
@Override
public void handleHostVerificationSigabort(ExecutionResult verificationResult) {
logToConsole("Sigaborted host verification");
}
@Override
public void handleSuccessfullyFuzzedFile(String programName) {
logToConsole("Program " + programName + " successfully fuzzed.");
}
@Override
public void handleSuccess(Map<String, List<Executor>> outputMap) {
logToConsole("Execution was successful");
}
@Override
public void handleDumpOutput(String outputLine, Executor executor) {
logToConsole(executor.getName() + " OUTPUT: " + outputLine);
}
@Override
public void handleDumpVerify(String verifyLine) {
logToConsole("VERIFY: " + verifyLine);
}
@Override
public void handleMutationFail() {
logToConsole("DEX file was not mutated");
}
@Override
public void handleMutationStats(String statsString) {
logToConsole("Mutations performed: " + statsString);
}
@Override
public void handleTiming(String name, float elapsedTime) {
logToConsole(String.format("'%s': %.3fs", name, elapsedTime));
}
@Override
public void handleSummary() {
logToConsole("--- SUMMARY ---");
}
@Override
public void handleSelfDivergence() {
logToConsole("Seen self divergence");
}
@Override
public void handleMessage(String msg) {
logToConsole(msg);
}
}