package edu.usc.enl.dynamicmeasurement.metric.hhhmonitors;
import edu.usc.enl.dynamicmeasurement.algorithms.tasks.hhh.flow.singleswitch.FalseHHHFinder;
import edu.usc.enl.dynamicmeasurement.model.WildcardPattern;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Created with IntelliJ IDEA.
* User: masoud
* Date: 8/12/13
* Time: 9:31 AM
*/
public class DescribedTrueTraffic extends TrueHHHMonitorMetric {
public DescribedTrueTraffic(boolean ratio,FalseHHHFinder falseHHHFinder) {
super(ratio, falseHHHFinder);
}
public Double compute(List<WildcardPattern> realHhhs, List<WildcardPattern> reportedHHH, List<WildcardPattern> monitors) {
Set<WildcardPattern> falseHHHs = new HashSet<>(falseHHHFinder.getLastFalseHHHs());
double describedTrueHHHsTraffic = 0;
for (WildcardPattern hhh : reportedHHH) {
if (!falseHHHs.contains(hhh)) {
describedTrueHHHsTraffic += hhh.getWeight();
}
}
if (ratio) {
double sum = 0;
for (WildcardPattern monitor : monitors) {
sum += monitor.getWeight();
}
return describedTrueHHHsTraffic / sum;
} else {
return describedTrueHHHsTraffic;
}
}
@Override
public String toString2() {
return "DescribedTrueTraffic";
}
}