diff --git a/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/JUnitTestExecutionListener.java b/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/JUnitTestExecutionListener.java index 15727a5..dc88b0d 100644 --- a/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/JUnitTestExecutionListener.java +++ b/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/JUnitTestExecutionListener.java @@ -16,8 +16,8 @@ public void testRunStarted(Description description) throws Exception { public void testRunFinished(Result result) throws Exception { // System.out.println("XXX Number of tests executed: " + result.getRunCount()); - WriteToFile.addToQueue("Number of tests executed: " + result.getRunCount()); - WriteToFile.addToQueue("XXX"); + WriteToFile.addToQueue("Number of tests executed: " + result.getRunCount(),"",-100); + WriteToFile.addToQueue("XXX","",-100); while (!WriteToFile.bqOutput.isEmpty()) { Thread.sleep(10); } @@ -26,7 +26,7 @@ public void testRunFinished(Result result) throws Exception { public void testStarted(Description description) throws Exception { // System.out.println("[TEST] "+description.getClassName()+": " + description.getMethodName()); - WriteToFile.addToQueue("[TEST] "+description.getClassName()+": " + description.getMethodName()); + WriteToFile.addToQueue("[TEST] "+description.getClassName()+": " + description.getMethodName(),"",-100); } public void testFinished(Description description) throws Exception { @@ -36,16 +36,16 @@ public void testFinished(Description description) throws Exception { public void testFailure(Failure failure) throws Exception { // System.out.println("Failed: " + failure.getDescription().getMethodName()); - WriteToFile.addToQueue("[TEST FAILURE]Failed: " + failure.getDescription().getMethodName()); + WriteToFile.addToQueue("[TEST FAILURE]Failed: " + failure.getDescription().getMethodName(),"",-100); } public void testAssumptionFailure(Failure failure) { // System.out.println("Failed: " + failure.getDescription().getMethodName()); - WriteToFile.addToQueue("Failed: " + failure.getDescription().getMethodName()); + WriteToFile.addToQueue("Failed: " + failure.getDescription().getMethodName(),"",-100); } public void testIgnored(Description description) throws Exception { // System.out.println("Ignored: " + description.getMethodName()); - WriteToFile.addToQueue("[TEST IGNORED] Ignored: " + description.getMethodName()); + WriteToFile.addToQueue("[TEST IGNORED] Ignored: " + description.getMethodName(),"",-100); } } diff --git a/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/MapValue.java b/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/MapValue.java new file mode 100644 index 0000000..efa64b9 --- /dev/null +++ b/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/MapValue.java @@ -0,0 +1,25 @@ +package com.mahesh.myJavaAgent.MyTestJavaAgent; + +import java.util.HashSet; + +public class MapValue { + String PackageName; + public String getPackageName() { + return PackageName; + } + public HashSet lineHashSet; + + public HashSet getLineHashSet() { + return lineHashSet; + } + public void setLineHashSet(HashSet lineHashSet) { + this.lineHashSet = lineHashSet; + } + public MapValue() { + this.lineHashSet = new HashSet(); + } + public MapValue(String packName) { + this.lineHashSet = new HashSet(); + this.PackageName = packName; + } +} diff --git a/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/MethodTransformVisitor.java b/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/MethodTransformVisitor.java index 3a478aa..ed44f9f 100644 Binary files a/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/MethodTransformVisitor.java and b/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/MethodTransformVisitor.java differ diff --git a/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/WriteToFile.java b/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/WriteToFile.java index 539bb24..62b0c8c 100644 --- a/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/WriteToFile.java +++ b/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/WriteToFile.java @@ -6,18 +6,22 @@ import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; public class WriteToFile implements Runnable { private boolean init = false; - public static BlockingQueue bqOutput = new ArrayBlockingQueue(100000); + public static BlockingQueue> bqOutput = new ArrayBlockingQueue>(10000); + public static BlockingQueue> testDetails = new ArrayBlockingQueue>(10000); private static Path outputFile; private static boolean createdFile; private static final String fileName = "LineCovFile.txt"; private static Runnable writeThread; private static Runnable writeToQ; - private static HashMap> currTestHash = new HashMap>(); + private static HashMap currTestHash = new HashMap(); + private static String testStart = "TestStart"; + private static String endRun = "EndRun"; // private static File outFile; public WriteToFile() { @@ -87,101 +91,84 @@ public void run() { BufferedWriter writer; try { writer = new BufferedWriter( new FileWriter( fileName)); - for (String line=bqOutput.take(); !line.startsWith("XXX"); line=bqOutput.take()) { + for (HashMap testHash=bqOutput.take(); !(testHash.containsKey(WriteToFile.endRun)); testHash=bqOutput.take()) { +// System.out.println("%%%%%%%%%%%% Writing new hashset to a file"); try { //Files.write(outputFile, Arrays.asList(line), Charset.forName("UTF-8"),StandardOpenOption.APPEND); - writer.write(line+"\n"); + //first print the testname and other details in the testStart hash key + if ( WriteToFile.testDetails.peek()!= null){ + HashMap thisTestDetails = WriteToFile.testDetails.take(); + writer.write(thisTestDetails.get(WriteToFile.testStart)); + } + //now write every hash + + for (String className: testHash.keySet()) { + String packageName = testHash.get(className).getPackageName(); + HashSet itrHash = testHash.get(className).getLineHashSet(); + Iterator hashItr = itrHash.iterator(); + while(hashItr.hasNext()) { + writer.write(packageName +" : " + hashItr.next()+"\n"); + } + } } catch (IOException e) { e.printStackTrace(); } } +// System.out.println("%%%%%%%%%%%% came out of the for loop"); writer.close(); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } + } catch ( InterruptedException e) { Thread.currentThread().interrupt(); System.out.println("Interrupted via InterruptedIOException"); } } -// public static void addToQueue(String string) { -// if (currTestHash.contains(string)) { -// return; -// } -// if (string.startsWith("[")||string.startsWith("xxx")) { -// currTestHash.add(string); -// if (!currTestHash.isEmpty()) { -// for (String out: currTestHash) { -// try { -// bqOutput.put(out); -// } catch (InterruptedException e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// } -// } -// return; -// } -// currTestHash.add(string); -// } - public static int getNumber(String text){ - if (text.matches(".*\\d+.*")) { - return Integer.parseInt(text.replaceAll("\\D", "")); - } else { - return -100; + public static void addToQueue(String className, String packName, int num) { + //start of the class line so skipping it + if (num == 0) { + return; } - } - - public static String getChars(String text){ - String test = text.replaceAll("\\d", ""); - - return test.substring(test.lastIndexOf("/")+1); - } - //OLD addToQueue uncomment for commonUtils in 7 sec - public static void addToQueue(String string) { - String text = getChars(string); - int num = getNumber(string); if (num==-100) { // System.out.println("^^^^^^^^^^^^got [TEST"); - currTestHash = new HashMap>(); try { - bqOutput.put(string); + bqOutput.put(currTestHash); +// System.out.println("^^^^^^^^^^added hash to the queue"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } + if (className.startsWith("XXX")) { +// System.out.println("^^^^^^^^^^End of the test run"); + HashMap endRunHash = new HashMap(); + endRunHash.put(WriteToFile.endRun,new MapValue()); + bqOutput.add(endRunHash); + return; + } + currTestHash = new HashMap(); + HashMap testStart = new HashMap(); + testStart.put(WriteToFile.testStart, className); + WriteToFile.testDetails.add(testStart); return; } + // TODO: seeing negative numbers to adding this + num = num<0? -1*num : num; // System.out.println("^^^^^^^^^^^^got text as "+text); // System.out.println("^^^^^^^^^^^^got num as "+num); - if (currTestHash.containsKey(text)) { + //HashSet existingList = currTestHash.get(className); + MapValue existingMap = currTestHash.get(className); + if (existingMap != null && existingMap.PackageName.equals(packName)) { + HashSet existingList = existingMap.getLineHashSet(); // System.out.println("^^^^^^^^^^^^EXISITING TEXT HASH CHECK"); - ArrayList existingList = currTestHash.get(text); - if (existingList.contains(num)) { -// System.out.println("^^^^^^^^^^^^EXISITING TEXT AND NUMBER AND HASH CHECK^^^^^"); - return; - } else { - try { - bqOutput.put(string); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } existingList.add(num); - } } else { - ArrayList newList = new ArrayList(); - newList.add(num); - currTestHash.put(text, newList); - try { - bqOutput.put(string); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + MapValue newMap = new MapValue(packName); + newMap.getLineHashSet().add(num); + currTestHash.put(className,newMap); } } } diff --git a/target/DemoReadyAgent-1.0-jar-with-dependencies.jar b/target/DemoReadyAgent-1.0-jar-with-dependencies.jar index 09f1b8c..33f6e8f 100644 Binary files a/target/DemoReadyAgent-1.0-jar-with-dependencies.jar and b/target/DemoReadyAgent-1.0-jar-with-dependencies.jar differ diff --git a/target/DemoReadyAgent-1.0.jar b/target/DemoReadyAgent-1.0.jar index 1122d48..f2182c4 100644 Binary files a/target/DemoReadyAgent-1.0.jar and b/target/DemoReadyAgent-1.0.jar differ diff --git a/target/classes/META-INF/maven/com.mahesh.myJavaAgent/DemoReadyAgent/pom.properties b/target/classes/META-INF/maven/com.mahesh.myJavaAgent/DemoReadyAgent/pom.properties index 2ddd80b..d7d11a2 100644 --- a/target/classes/META-INF/maven/com.mahesh.myJavaAgent/DemoReadyAgent/pom.properties +++ b/target/classes/META-INF/maven/com.mahesh.myJavaAgent/DemoReadyAgent/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven Integration for Eclipse -#Thu Mar 30 00:52:37 CDT 2017 +#Sat Apr 15 14:26:05 CDT 2017 version=1.0 groupId=com.mahesh.myJavaAgent m2e.projectName=MyTestJavaAgent3 diff --git a/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/JUnitTestExecutionListener.class b/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/JUnitTestExecutionListener.class index 63151f9..40e97be 100644 Binary files a/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/JUnitTestExecutionListener.class and b/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/JUnitTestExecutionListener.class differ diff --git a/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/MapValue.class b/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/MapValue.class new file mode 100644 index 0000000..0ad9ae7 Binary files /dev/null and b/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/MapValue.class differ diff --git a/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/MethodTransformVisitor.class b/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/MethodTransformVisitor.class index bea6806..0e45440 100644 Binary files a/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/MethodTransformVisitor.class and b/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/MethodTransformVisitor.class differ diff --git a/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/WriteToFile$1.class b/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/WriteToFile$1.class index d9a7b97..ba75527 100644 Binary files a/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/WriteToFile$1.class and b/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/WriteToFile$1.class differ diff --git a/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/WriteToFile.class b/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/WriteToFile.class index 596ae4b..c663dd4 100644 Binary files a/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/WriteToFile.class and b/target/classes/com/mahesh/myJavaAgent/MyTestJavaAgent/WriteToFile.class differ diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index 44b259b..c1224c9 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -2,6 +2,7 @@ com/mahesh/myJavaAgent/MyTestJavaAgent/JUnitTestExecutionListener.class com/mahesh/myJavaAgent/MyTestJavaAgent/ClassTransformVisitor.class com/mahesh/myJavaAgent/MyTestJavaAgent/MyClassFileTransformer.class com/mahesh/myJavaAgent/MyTestJavaAgent/MyJavaAgent.class +com/mahesh/myJavaAgent/MyTestJavaAgent/MapValue.class com/mahesh/myJavaAgent/MyTestJavaAgent/WriteToFile$1.class com/mahesh/myJavaAgent/MyTestJavaAgent/MyRunner.class com/mahesh/myJavaAgent/MyTestJavaAgent/MethodTransformVisitor.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index ad4f268..974a0bb 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -2,6 +2,7 @@ /Users/HA/Documents/workspace/MyTestJavaAgent3/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/MethodTransformVisitor.java /Users/HA/Documents/workspace/MyTestJavaAgent3/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/MyClassFileTransformer.java /Users/HA/Documents/workspace/MyTestJavaAgent3/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/MyJavaAgent.java +/Users/HA/Documents/workspace/MyTestJavaAgent3/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/MapValue.java /Users/HA/Documents/workspace/MyTestJavaAgent3/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/WriteToFile.java /Users/HA/Documents/workspace/MyTestJavaAgent3/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/ClassTransformVisitor.java /Users/HA/Documents/workspace/MyTestJavaAgent3/src/main/java/com/mahesh/myJavaAgent/MyTestJavaAgent/MyRunner.java