1 /* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package dexfuzz.listeners; 18 19 import java.util.List; 20 import java.util.Map; 21 22 import dexfuzz.executors.Executor; 23 24 /** 25 * Counts divergences as they appear and checks if the testing was successful 26 * or not. Testing is successful if all divergences found are either self 27 * divergent or caused by differences in architectures. 28 */ 29 public class FinalStatusListener extends BaseListener { 30 private long divergence; 31 private long selfDivergent; 32 private long architectureSplit; 33 34 @Override handleDivergences(Map<String, List<Executor>> outputMap)35 public void handleDivergences(Map<String, List<Executor>> outputMap) { 36 divergence++; 37 } 38 39 @Override handleSelfDivergence()40 public void handleSelfDivergence() { 41 selfDivergent++; 42 } 43 44 @Override handleArchitectureSplit()45 public void handleArchitectureSplit() { 46 architectureSplit++; 47 } 48 isSuccessful()49 public boolean isSuccessful() { 50 return (divergence - selfDivergent - architectureSplit) == 0; 51 } 52 } 53