From e4a1cdd05cfe7703fa788f349942d3b05af945f7 Mon Sep 17 00:00:00 2001 From: hansen <dominik_hansen@web.de> Date: Mon, 1 Jun 2015 16:22:21 +0200 Subject: [PATCH] Collecting action coverage --- tlatools/src/tlc2/output/OutputCollector.java | 9 ++++++++- tlatools/src/tlc2/tool/AbstractChecker.java | 6 ++++++ tlatools/src/tlc2/tool/Spec.java | 2 ++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/tlatools/src/tlc2/output/OutputCollector.java b/tlatools/src/tlc2/output/OutputCollector.java index dec13f686..4c237f703 100644 --- a/tlatools/src/tlc2/output/OutputCollector.java +++ b/tlatools/src/tlc2/output/OutputCollector.java @@ -2,10 +2,15 @@ package tlc2.output; import java.util.ArrayList; import java.util.Date; +import java.util.Hashtable; +import tla2sany.semantic.SemanticNode; +import tla2sany.st.Location; import tlc2.module.TLC; +import tlc2.tool.Action; import tlc2.tool.TLCState; import tlc2.tool.TLCStateInfo; +import tlc2.util.ObjLongTable; public class OutputCollector { @@ -13,7 +18,9 @@ public class OutputCollector { private static TLCState initialState = null; private static ArrayList<TLCStateInfo> trace = null; private static ArrayList<Message> allMessages = new ArrayList<Message>(); - + public static Action nextPred = null; + public static Hashtable<Location, Long> lineCount= new Hashtable<Location, Long>(); + public static ArrayList<TLCStateInfo> getTrace() { return trace; } diff --git a/tlatools/src/tlc2/tool/AbstractChecker.java b/tlatools/src/tlc2/tool/AbstractChecker.java index cac020874..7d9ac8dad 100644 --- a/tlatools/src/tlc2/tool/AbstractChecker.java +++ b/tlatools/src/tlc2/tool/AbstractChecker.java @@ -1,13 +1,16 @@ package tlc2.tool; import java.io.IOException; +import java.util.Hashtable; import java.util.concurrent.atomic.AtomicLong; import tla2sany.modanalyzer.SpecObj; import tla2sany.semantic.SemanticNode; +import tla2sany.st.Location; import tlc2.TLCGlobals; import tlc2.output.EC; import tlc2.output.MP; +import tlc2.output.OutputCollector; import tlc2.tool.liveness.ILiveCheck; import tlc2.tool.liveness.LiveCheck; import tlc2.tool.liveness.Liveness; @@ -151,6 +154,7 @@ public abstract class AbstractChecker implements Cancelable MP.printMessage(EC.TLC_COVERAGE_START); // First collecting all counts from all workers: ObjLongTable counts = this.tool.getPrimedLocs(); + Hashtable<String, Location> locationTable = new Hashtable<String, Location>(); for (int i = 0; i < workers.length; i++) { ObjLongTable counts1 = workers[i].getCounts(); @@ -160,6 +164,7 @@ public abstract class AbstractChecker implements Cancelable { String loc = ((SemanticNode) key).getLocation().toString(); counts.add(loc, counts1.get(key)); + locationTable.put(loc, ((SemanticNode) key).getLocation()); } } // Reporting: @@ -168,6 +173,7 @@ public abstract class AbstractChecker implements Cancelable { long val = counts.get(skeys[i]); MP.printMessage(EC.TLC_COVERAGE_VALUE, new String[] { skeys[i].toString(), String.valueOf(val) }); + OutputCollector.lineCount.put(locationTable.get(skeys[i]), val); } MP.printMessage(EC.TLC_COVERAGE_END); } diff --git a/tlatools/src/tlc2/tool/Spec.java b/tlatools/src/tlc2/tool/Spec.java index 1094f2586..48b1f0f4e 100644 --- a/tlatools/src/tlc2/tool/Spec.java +++ b/tlatools/src/tlc2/tool/Spec.java @@ -42,6 +42,7 @@ import tla2sany.semantic.ThmOrAssumpDefNode; import tlc2.TLCGlobals; import tlc2.output.EC; import tlc2.output.MP; +import tlc2.output.OutputCollector; import tlc2.util.Context; import tlc2.util.List; import tlc2.util.ObjLongTable; @@ -915,6 +916,7 @@ public class Spec implements ValueConstants, ToolGlobals, Serializable Assert.fail(EC.TLC_CONFIG_ID_REQUIRES_NO_ARG, new String[] { "next state action", name }); } this.nextPred = new Action(def.getBody(), Context.Empty); + OutputCollector.nextPred = this.nextPred; } } -- GitLab