sota.ast.util
Class TestLogManager

java.lang.Object
  extended by sota.ast.util.TestLogManager

public class TestLogManager
extends java.lang.Object

Klasse mit statischen Methoden zur Berechnung und Verarbeitung von HitsLists. Ausgangspunkt sind die durch den LogReader gelesenen TestCases. Die dort gespeicherten pathLists werden hier aufbereitet zu hitlists, die eine schnelle Applikation auf den AST ermöglichen.


Field Summary
protected static java.util.Stack<ASTIterationNode> stackOfIterationNodes
           
protected static java.util.Stack<java.lang.Integer> stackOfLoopCounters
           
protected static boolean VERBOSE
           
 
Constructor Summary
TestLogManager()
           
 
Method Summary
protected static void applyEssentialTestLogPath(ASTManager ast, java.util.ArrayList<java.lang.Integer> list)
          Berechnet die HitLists und Verzweigungen für Funktionspfade nach Instrumentierung Level 1 und 2.
protected static void applyFullTestLogPath(ASTManager ast, java.util.ArrayList<java.lang.Integer> list)
          Berechnet die HitLists und Verzweigungen für Funktionspfade nach Instrumentierung Level 3.
static void applyTestCase(ASTManager ast, TestCase testCase)
          Appliziert die vorher berechneten HitLists (incl.
protected static void collectHitList(ASTManager ast, TestCase testCase)
          Läuft über den AST und erstellt für das TestLog die HitLists.
static void completeTestLogs(ASTManager ast)
          Wandelt die Pfadlisten der eingelesenen TestLogs in HitLists um, d.h. macht für jedes TestLog: 1. durchlaufe alle Pfade und erhöhe Hits, berechne Verzweigungsinfos 2. erstelle aus diesen Infos die HitList für das TestLog und merke diese 3. lösche Hits und fahre bei nächstem TestLog fort
protected static ASTNode propagateHits(ASTNode n, ASTNode endNode)
           
static void resetHits(ASTManager ast)
          Setzt alle Überdeckungsinformationen wieder auf Null.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

stackOfIterationNodes

protected static java.util.Stack<ASTIterationNode> stackOfIterationNodes

stackOfLoopCounters

protected static java.util.Stack<java.lang.Integer> stackOfLoopCounters

VERBOSE

protected static final boolean VERBOSE
See Also:
Constant Field Values
Constructor Detail

TestLogManager

public TestLogManager()
Method Detail

applyEssentialTestLogPath

protected static void applyEssentialTestLogPath(ASTManager ast,
                                                java.util.ArrayList<java.lang.Integer> list)
Berechnet die HitLists und Verzweigungen für Funktionspfade nach Instrumentierung Level 1 und 2. In EP stehen nur: case, catch, true/false und loop. Beginnend mit Funktionseingang propagiere Hits solange, bis der BranchNode des nächsten Pfadknotens erreicht wird, dann folge der Entscheidung bis zum nächsten. Beim Propagieren zu beachten: - wenn switch getroffen wird, dann wurde dieses übersprungen, - wenn try getroffen wurde, dann wurde dieses ohne catch ausgeführt, - wenn iteration kam, dann wurde geskippt. Auf Stack bis Ende des Konstrukts zu halten: Try,Iteration, Switch

Parameters:
ast - - der aktuelle ASTManager
list - - die zu applizierende Pfadliste

applyFullTestLogPath

protected static void applyFullTestLogPath(ASTManager ast,
                                           java.util.ArrayList<java.lang.Integer> list)
Berechnet die HitLists und Verzweigungen für Funktionspfade nach Instrumentierung Level 3. Alle Anweisungensknoten sind im LogPath enthalten, diese müssen lediglich aufaddiert und dann lediglich die Verzweigungsinfo berechnet werden für Switch, Try, Iteration. Zu merken: aktuelles Iterationskonstrukt für Anzahl der Loops

Parameters:
ast - - der aktuelle ASTManager
list - - die zu applizierende Pfadliste

applyTestCase

public static void applyTestCase(ASTManager ast,
                                 TestCase testCase)
Appliziert die vorher berechneten HitLists (incl. Selections und Truthvectors) auf den AST.

Parameters:
ast - Der aktuelle ASTManager.
testCase - Das TestLog mit den zu applizierenden HitLists.

collectHitList

protected static void collectHitList(ASTManager ast,
                                     TestCase testCase)
Läuft über den AST und erstellt für das TestLog die HitLists.

Parameters:
ast - Der aktuelle ASTManager.
testCase - Das TestLog, für welches die Hitlists erstellt werden.

completeTestLogs

public static void completeTestLogs(ASTManager ast)
Wandelt die Pfadlisten der eingelesenen TestLogs in HitLists um, d.h. macht für jedes TestLog: 1. durchlaufe alle Pfade und erhöhe Hits, berechne Verzweigungsinfos 2. erstelle aus diesen Infos die HitList für das TestLog und merke diese 3. lösche Hits und fahre bei nächstem TestLog fort

Parameters:
ast - Der aktuelle ASTManager.

propagateHits

protected static ASTNode propagateHits(ASTNode n,
                                       ASTNode endNode)

resetHits

public static void resetHits(ASTManager ast)
Setzt alle Überdeckungsinformationen wieder auf Null.

Parameters:
ast - Der aktuelle ASTManager.