gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r20891 - in monkey/branches/MonkeyBacktracking/monkey/Monke


From: gnunet
Subject: [GNUnet-SVN] r20891 - in monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator: . src/org/monkey/comparator src/org/monkey/comparator/bo src/org/monkey/comparator/testing src/org/monkey/comparator/testing/refs
Date: Tue, 3 Apr 2012 23:18:55 +0200

Author: safey
Date: 2012-04-03 23:18:55 +0200 (Tue, 03 Apr 2012)
New Revision: 20891

Added:
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/BugComparator.java
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Constants.java
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Feature.java
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/GeneralPropertiesFeature.java
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/MonkeyComparator.java
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/StackTraceFeature.java
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Util.java
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/ComparatorTest.java
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey.xml
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_common_and_different_exp.xml
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_fname.xml
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_trace.xml
Removed:
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Comparator.java
Modified:
   monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/.classpath
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/Bug.java
   
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/XMLParser.java
Log:
Monkey Bug Comparator: Parsing, comparing bugs general properties feature, 
comparing bugs stack trace feature, JUnit test case for gp feature and stack 
trace feature

Modified: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/.classpath
===================================================================
--- monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/.classpath    
2012-04-03 15:41:27 UTC (rev 20890)
+++ monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/.classpath    
2012-04-03 21:18:55 UTC (rev 20891)
@@ -2,5 +2,6 @@
 <classpath>
        <classpathentry kind="src" path="src"/>
        <classpathentry kind="con" 
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+       <classpathentry kind="con" 
path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
        <classpathentry kind="output" path="bin"/>
 </classpath>

Added: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/BugComparator.java
===================================================================
--- 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/BugComparator.java
                          (rev 0)
+++ 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/BugComparator.java
  2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,30 @@
+package org.monkey.comparator;
+
+import java.util.ArrayList;
+
+public class BugComparator {
+       private static ArrayList<Feature> featureList = new 
ArrayList<Feature>();
+       
+       public static boolean register(Feature feature) {
+               featureList.add(feature);
+               return true;
+       }
+       
+       public static boolean unregister(Feature feature) {
+               featureList.remove(feature);
+               return true;
+       }
+       
+       public static double calculateScore() {
+               double totalScore = 0;
+               double featureScore;
+               Feature feature;
+               for (int i = 0; i < featureList.size(); i++) {
+                       feature = featureList.get(i);
+                       featureScore = feature.score();
+                       System.out.println(feature.getFeatureName() + " score = 
" + featureScore);
+                       totalScore += featureScore;
+               }
+               return totalScore;
+       }
+}


Property changes on: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/BugComparator.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Deleted: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Comparator.java
===================================================================
--- 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Comparator.java
     2012-04-03 15:41:27 UTC (rev 20890)
+++ 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Comparator.java
     2012-04-03 21:18:55 UTC (rev 20891)
@@ -1,17 +0,0 @@
-package org.monkey.comparator;
-
-import org.monkey.comparator.bo.Bug;
-import org.monkey.comparator.bo.XMLParser;
-
-public class Comparator {
-       public static float compareBugs(Bug bugA, Bug bugB) {
-               float similarityPercentage = 0;
-               return similarityPercentage;
-       }
-       public static void main(String[] args) {
-               if (null == args[0])
-                       System.err.println("Error: Missing XML file path!");
-               Bug bug = XMLParser.parse(args[0]);
-               XMLParser.printBug(bug);
-       }
-}

Added: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Constants.java
===================================================================
--- 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Constants.java
                              (rev 0)
+++ 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Constants.java
      2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,26 @@
+package org.monkey.comparator;
+
+public abstract class Constants {
+       public static final int LINE_NUMBER_DIFFERENCE_THRESHOLD = 10;
+       
+       /* Features' scores */
+       public static final double GENERAL_PROPERTIES_FEATURE_SCORE = 100;
+       public static final double STACK_TRACE_FEATURE_SCORE = 50;
+       
+       /* Weights for feature: Bug General Properties */
+       public static final double LINE_NUMBER_WEIGHT = 0.25;
+       public static final double BUG_FUNCTION_NAME_WEIGHT = 0.25;
+       public static final double FILE_NAME_WEIGHT = 0.5;
+       
+       /* Weights for feature: Stack-Trace */
+       public static final double FUNCTION_SEMANTICS_WEIGHT = 0.1; // Weight 
of all function semantics in the stack-trace (function name, file name, line 
number)
+       public static final double EXPRESSIONS_WEIGHT = 0.9; // Weight of all 
expressions in the stack-trace 
+       
+       public static final double FUNCTION_NAME_WEIGHT = 0.25; // Within the 
function semantics
+       public static final double FUNCTION_LINE_WEIGHT = 0.25;
+       public static final double FUNCTION_FILE_NAME = 0.5;
+       
+       public static final double EXPRESSION_SYTNAX_WEIGHT = 0.7; // Within 
the expressions of the function
+       public static final double EXPRESSION_VALUE_WEIGHT = 0.3;
+       
+}


Property changes on: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Constants.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Feature.java
===================================================================
--- 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Feature.java
                                (rev 0)
+++ 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Feature.java
        2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,21 @@
+package org.monkey.comparator;
+
+import org.monkey.comparator.bo.Bug;
+
+public abstract class Feature {
+       protected Bug bugA;
+       protected Bug bugB;
+       protected String featureName = "Feature";
+       protected double featureTotalScore = 0;
+       
+       public Feature (Bug bugA, Bug bugB, double featureTotalScore) {
+               this.bugA = bugA;
+               this.bugB = bugB;
+               this.featureTotalScore = featureTotalScore;
+       }
+       
+       protected abstract String getFeatureName();
+       protected abstract void assignScorePoints();
+       public abstract double score();
+}
+


Property changes on: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Feature.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/GeneralPropertiesFeature.java
===================================================================
--- 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/GeneralPropertiesFeature.java
                               (rev 0)
+++ 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/GeneralPropertiesFeature.java
       2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,48 @@
+package org.monkey.comparator;
+
+import org.monkey.comparator.bo.Bug;
+
+public class GeneralPropertiesFeature extends Feature {
+       private static double lineNumberScore;
+       private static double functionNameScore;
+       private static double fileNameScore;
+       
+       public GeneralPropertiesFeature(Bug bugA, Bug bugB, double 
featureTotalScore) {
+               super(bugA, bugB, featureTotalScore);
+               featureName = "Feature: Bug General Properties";
+       }
+
+       private double compareGeneralProperties() {
+               double score = 0;
+               if (bugA.getFileName().equals(bugB.getFileName()))
+                       score += fileNameScore;
+               if (bugA.getFunctionName().equals(bugB.getFunctionName()))
+                       score += functionNameScore;
+               if (bugA.getLineNo() == bugB.getLineNo()) {
+                       score += lineNumberScore;
+               } else {
+                       score += 
Util.weightLineNumberDifference(bugA.getLineNo(), bugB.getLineNo()) * 
lineNumberScore;
+               }
+               
+               return score;
+       }
+               
+       @Override
+       public double score() {
+               assignScorePoints();
+               return compareGeneralProperties();
+       }
+
+       @Override
+       protected void assignScorePoints() {
+               lineNumberScore = Constants.LINE_NUMBER_WEIGHT * 
featureTotalScore;
+               functionNameScore = Constants.BUG_FUNCTION_NAME_WEIGHT * 
featureTotalScore;
+               fileNameScore = Constants.FILE_NAME_WEIGHT * featureTotalScore;
+       }
+
+       @Override
+       protected String getFeatureName() {
+               return featureName;
+       }
+
+}


Property changes on: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/GeneralPropertiesFeature.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Copied: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/MonkeyComparator.java
 (from rev 19728, 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Comparator.java)
===================================================================
--- 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/MonkeyComparator.java
                               (rev 0)
+++ 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/MonkeyComparator.java
       2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,42 @@
+package org.monkey.comparator;
+
+import org.monkey.comparator.bo.Bug;
+import org.monkey.comparator.bo.XMLParser;
+
+public class MonkeyComparator {
+       public static double compareBugs(Bug bugA, Bug bugB) {
+               double similarityPercentage = 0;
+               double totalScore = Constants.GENERAL_PROPERTIES_FEATURE_SCORE 
+ Constants.STACK_TRACE_FEATURE_SCORE;
+               
+               /* Register comparison features and start comparison */
+               Feature generalPropertiesFeature = new 
GeneralPropertiesFeature(bugA, bugB, 
Constants.GENERAL_PROPERTIES_FEATURE_SCORE);
+               Feature stackTraceFeature = new StackTraceFeature(bugA, bugB, 
Constants.STACK_TRACE_FEATURE_SCORE);
+               
+               BugComparator.register(generalPropertiesFeature);
+               BugComparator.register(stackTraceFeature);
+               similarityPercentage = (BugComparator.calculateScore() / 
totalScore) * 100;
+               
+               /* Cleanup */
+               BugComparator.unregister(generalPropertiesFeature);
+               BugComparator.unregister(stackTraceFeature);
+               
+               return similarityPercentage;
+       }
+       public static void main(String[] args) {
+               
+               if (null == args[0]) {
+                       System.err.println("Error: Missing paths to input 
files!");
+                       return;
+               }
+               if (null == args[1]) {
+                       System.err.println("Error: Missing path to the second 
input file!");
+               }
+                       
+               Bug bugA = XMLParser.parse(args[0]);
+               Bug bugB = XMLParser.parse(args[1]);
+               //XMLParser.printBug(bugA);
+               //XMLParser.printBug(bugB);
+               
+               System.out.println("Similarity Percentage = " + 
compareBugs(bugA, bugB));
+       }
+}

Added: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/StackTraceFeature.java
===================================================================
--- 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/StackTraceFeature.java
                              (rev 0)
+++ 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/StackTraceFeature.java
      2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,157 @@
+package org.monkey.comparator;
+
+
+import org.monkey.comparator.bo.Bug;
+import org.monkey.comparator.bo.Epoch;
+import org.monkey.comparator.bo.Expression;
+import org.monkey.comparator.bo.Function;
+
+public class StackTraceFeature extends Feature {
+       private double functionNameScore;
+       private double functionLineNumberScore;
+       private double functionFileNameScore;
+       private double expressionSyntaxScore;
+       private double expressionValueScore;
+       private int functionNum;
+       private int expressionNum;
+       
+       public StackTraceFeature(Bug bugA, Bug bugB, double featureTotalScore) {
+               super(bugA, bugB, featureTotalScore);
+               featureName = "Feature: Stack-Trace";
+       }
+       
+       private double compareFunctions() {
+               int numFunctionA = bugA.getEpoch(0).getFunctionNum();
+               int numFunctionB = bugB.getEpoch(0).getFunctionNum();
+               
+               if (numFunctionA >= numFunctionB)
+                       return doCompareFunctions(bugB.getEpoch(0), 
bugA.getEpoch(0));
+               return doCompareFunctions(bugA.getEpoch(0), bugB.getEpoch(0));
+       }
+       
+       private double doCompareFunctions(Epoch shorterEpoch, Epoch 
longerEpoch) {
+               double functionsScore = 0;
+               double expressionsScore = 0;
+               double tmpExpressionScore = 0;
+               
+               int numFunctionShorter = shorterEpoch.getFunctionNum();
+               int numFunctionLonger = longerEpoch.getFunctionNum();
+               Function functionShorterEpoch;
+               Function functionLongerEpoch;
+               for (int i = 0; i < numFunctionShorter; i++) {
+                       functionShorterEpoch = shorterEpoch.getFunction(i);
+                       for (int j = 0; j < numFunctionLonger; j++) {
+                               functionLongerEpoch = 
longerEpoch.getFunction(j);
+                               
+                               tmpExpressionScore = 
compareExpressions(functionShorterEpoch, functionLongerEpoch);
+                               expressionsScore += tmpExpressionScore;
+                               if (tmpExpressionScore > 0) {
+                                       if (functionShorterEpoch.getLineNo() == 
functionLongerEpoch.getLineNo()) {
+                                               functionsScore += 
functionLineNumberScore;
+                                       } else {
+                                               /* If there is some similarity 
in expressions, 
+                                                * but function line numbers 
are not the same, 
+                                                * score for function line 
numbers should NOT be zero */
+                                               functionsScore += 
Util.weightLineNumberDifference(functionShorterEpoch.getLineNo(), 
functionLongerEpoch.getLineNo()) 
+                                                               * 
functionLineNumberScore;
+                                       }
+                                       
if(functionShorterEpoch.getFileName().equals(functionLongerEpoch.getFileName()))
+                                               functionsScore += 
functionFileNameScore;
+                                       
if(functionShorterEpoch.getFunctionName().equals(functionLongerEpoch.getFunctionName()))
+                                               functionsScore += 
functionNameScore;
+                                       break;
+                               }
+                       }
+               }
+               return functionsScore + expressionsScore;
+       }
+       
+       private double compareExpressions(Function functionA, Function 
functionB) {
+               int numExpressionA = functionA.getExpressionNum();
+               int numExpressionB = functionB.getExpressionNum();
+               
+               if (numExpressionA >= numExpressionB)
+                       return doCompareExpressions(functionB, functionA);
+               return doCompareExpressions(functionA, functionB);
+       }
+       
+       private double doCompareExpressions(Function shorterFunction, Function 
longerFunction) {
+               double expressionsScore = 0;
+               int numExpressionShorter = shorterFunction.getExpressionNum();
+               int numExpressionLonger = longerFunction.getExpressionNum();
+               
+               Expression expressionShorterFunction;
+               Expression expressionLongerFunction;
+               for (int i = 0; i < numExpressionShorter; i++) {
+                       expressionShorterFunction = 
shorterFunction.getExpression(i);
+                       for (int j = 0; j < numExpressionLonger; j++) {
+                               expressionLongerFunction = 
longerFunction.getExpression(j);
+                               if 
(expressionShorterFunction.getName().equals(expressionLongerFunction.getName()))
 {
+                                       expressionsScore += 
expressionSyntaxScore;
+                                       if 
(expressionShorterFunction.getValue().equals(expressionLongerFunction.getValue()))
+                                               expressionsScore += 
expressionValueScore;
+                                       break; // break inner loop
+                               }
+                       }
+               }
+               
+               return expressionsScore;
+       }
+       
+       @Override
+       public double score() {
+               assignScorePoints();
+               return compareFunctions();
+       }
+
+       @Override
+       protected void assignScorePoints() {
+               
+               int functionNumA = bugA.getEpoch(0).getFunctionNum();
+               int functionNumB = bugB.getEpoch(0).getFunctionNum();
+               functionNum = functionNumA >= functionNumB ? functionNumA : 
functionNumB; // taking the larger number of functions of the two stack traces
+               
+               Function function;
+               int expressionNumA = 0;
+               for (int i = 0; i < functionNumA; i++) {
+                       function = bugA.getEpoch(0).getFunction(i);
+                       expressionNumA += function.getExpressionNum();
+               }
+               
+               int expressionNumB = 0;
+               for (int i = 0; i < functionNumB; i++) {
+                       function = bugB.getEpoch(0).getFunction(i);
+                       expressionNumB += function.getExpressionNum();
+               }
+               
+               expressionNum = expressionNumA >= expressionNumB ? 
expressionNumA : expressionNumB; // taking the larger number of expressions of 
the two stack traces
+               
+       
+               double allFunctionSemanticsScore = 
Constants.FUNCTION_SEMANTICS_WEIGHT * featureTotalScore;
+               double singleFunctionSemanticsScore = 
(double)allFunctionSemanticsScore / (double)functionNum;
+               double allExpressionsScore = Constants.EXPRESSIONS_WEIGHT * 
featureTotalScore;
+               double singleExpressionScore = (double)allExpressionsScore / 
(double)expressionNum;
+               
+               /* Scoring for function semantics details */
+               functionNameScore = Constants.FUNCTION_NAME_WEIGHT 
*singleFunctionSemanticsScore;
+               functionFileNameScore = Constants.FUNCTION_FILE_NAME * 
singleFunctionSemanticsScore;
+               functionLineNumberScore = Constants.FUNCTION_LINE_WEIGHT * 
singleFunctionSemanticsScore;
+               
+               /* Scoring for expression semantics details */
+               expressionSyntaxScore = Constants.EXPRESSION_SYTNAX_WEIGHT * 
singleExpressionScore;
+               expressionValueScore = Constants.EXPRESSION_VALUE_WEIGHT * 
singleExpressionScore;
+       }
+       
+       
+       @Override
+       protected String getFeatureName() {
+               return featureName;
+       }
+       
+       /*
+       private double testTotalScore() {
+               return ((functionNameScore + functionFileNameScore + 
functionLineNumberScore) * functionNum) + ((expressionSyntaxScore + 
expressionValueScore) * expressionNum);
+       }
+       */
+
+}


Property changes on: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/StackTraceFeature.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Util.java
===================================================================
--- 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Util.java
                           (rev 0)
+++ 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Util.java
   2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,9 @@
+package org.monkey.comparator;
+
+public abstract class Util {
+       public static double weightLineNumberDifference(int lineNumberA, int 
lineNumberB) {
+               double weight = Math.abs(1 - ((double)(lineNumberA - 
lineNumberB)/
+                                                                               
(double)Constants.LINE_NUMBER_DIFFERENCE_THRESHOLD));
+               return weight;
+       }
+}


Property changes on: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/Util.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Modified: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/Bug.java
===================================================================
--- 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/Bug.java
 2012-04-03 15:41:27 UTC (rev 20890)
+++ 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/Bug.java
 2012-04-03 21:18:55 UTC (rev 20891)
@@ -5,7 +5,7 @@
 public class Bug {
        private String category;
        private String fileName;
-       private String lineNo;
+       private int lineNo;
        private String functionName;
        private ArrayList<Epoch> epochList = new ArrayList<Epoch>();
        public void setFileName(String fileName) {
@@ -14,10 +14,10 @@
        public String getFileName() {
                return fileName;
        }
-       public void setLineNo(String lineNo) {
+       public void setLineNo(int lineNo) {
                this.lineNo = lineNo;
        }
-       public String getLineNo() {
+       public int getLineNo() {
                return lineNo;
        }
        public void setFunctionName(String functionName) {

Modified: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/XMLParser.java
===================================================================
--- 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/XMLParser.java
   2012-04-03 15:41:27 UTC (rev 20890)
+++ 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/bo/XMLParser.java
   2012-04-03 21:18:55 UTC (rev 20891)
@@ -64,11 +64,11 @@
                        bug.setCategory(element.getAttribute("category"));
                        bug.setFileName(element.getAttribute("file"));
                        bug.setFunctionName(element.getAttribute("function"));
-                       bug.setLineNo(element.getAttribute("line"));
+                       
bug.setLineNo(Integer.parseInt(element.getAttribute("line")));
 
                        /* History is consisting of a list of epoch nodes */
                        epochNodeList = document.getElementsByTagName("epoch");
-                       printAllNodes(epochNodeList);
+                       //printAllNodes(epochNodeList);
                        for (int i = 0; i < epochNodeList.getLength(); i++) {
                                epochNode = epochNodeList.item(i);
                                if (epochNode.getNodeType() == 
Node.ELEMENT_NODE) {
@@ -178,6 +178,7 @@
        
        
        // This method is used for debugging
+       /*
        private static void printAllNodes(NodeList nodeList) {
                NodeList childNodes;
                for (int i = 0; i < nodeList.getLength(); i++) {
@@ -189,5 +190,5 @@
                        }
                }
        }
-       
+       */
 }

Added: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/ComparatorTest.java
===================================================================
--- 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/ComparatorTest.java
                         (rev 0)
+++ 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/ComparatorTest.java
 2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,45 @@
+package org.monkey.comparator.testing;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+import org.monkey.comparator.MonkeyComparator;
+import org.monkey.comparator.bo.Bug;
+import org.monkey.comparator.bo.XMLParser;
+
+public class ComparatorTest {
+
+       @Test
+       public void testTotalSimilarity() {
+               Bug bugA = 
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey.xml");
+               Bug bugB = 
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey.xml");
+               assertEquals(100.0, MonkeyComparator.compareBugs(bugA, bugB), 
0);
+       }
+       
+       @Test
+       public void testSameStackDifferentFunctionNames() {
+               Bug bugA = 
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey.xml");
+               Bug bugB = 
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey_different_fname.xml");
+               
+               double similarityPercentage = 
MonkeyComparator.compareBugs(bugA, bugB);
+               assertEquals(99.58333333333333, similarityPercentage, 0);
+       }
+
+       @Test
+       public void testCommonAndDifferentExpressions() {
+               Bug bugA = 
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey.xml");
+               Bug bugB = 
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey_common_and_different_exp.xml");
+               
+               double similarityPercentage = 
MonkeyComparator.compareBugs(bugA, bugB);
+               assertEquals(93.33333333333333, similarityPercentage, 0);
+       }
+       
+       @Test
+       public void testSlightlyDifferentStackTraces() {
+               Bug bugA = 
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey.xml");
+               Bug bugB = 
XMLParser.parse("src/org/monkey/comparator/testing/refs/monkey_different_trace.xml");
+               
+               double similarityPercentage = 
MonkeyComparator.compareBugs(bugA, bugB);
+               assertEquals(88.8888888888889, similarityPercentage, 0);
+       }
+}


Property changes on: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/ComparatorTest.java
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey.xml
===================================================================
--- 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey.xml
                             (rev 0)
+++ 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey.xml
     2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<crash category="npe" function="crashFunction" line="14" 
file="bug_null_pointer_exception.c" >
+<history>
+<epoch step="0" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c" 
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="y" >6</expression>
+<expression name="s" >Hello</expression>
+</expressions>
+</function>
+<function name="anotherCrashFunction" line="3" 
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+<epoch step="1" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c" 
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="y" >6</expression>
+<expression name="s" >Hello</expression>
+</expressions>
+</function>
+<function name="anotherCrashFunction" line="3" 
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+</history>
+</crash>


Property changes on: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey.xml
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_common_and_different_exp.xml
===================================================================
--- 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_common_and_different_exp.xml
                            (rev 0)
+++ 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_common_and_different_exp.xml
    2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<crash category="npe" function="crashFunction" line="14" 
file="bug_null_pointer_exception.c" >
+<history>
+<epoch step="0" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c" 
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="p" >10</expression>
+<expression name="y" >6</expression>
+<expression name="ssss" >Hello</expression>
+</expressions>
+</function>
+<function name="anotherCrashFunction" line="3" 
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+<epoch step="1" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c" 
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="p" >10</expression>
+<expression name="y" >6</expression>
+<expression name="ssss" >Hello</expression>
+</expressions>
+</function>
+<function name="anotherCrashFunction" line="3" 
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+</history>
+</crash>


Property changes on: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_common_and_different_exp.xml
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_fname.xml
===================================================================
--- 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_fname.xml
                             (rev 0)
+++ 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_fname.xml
     2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<crash category="npe" function="crashFunction" line="14" 
file="bug_null_pointer_exception.c" >
+<history>
+<epoch step="0" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c" 
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="y" >6</expression>
+<expression name="s" >Hello</expression>
+</expressions>
+</function>
+<function name="theOtherCrashFunction" line="3" 
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+<epoch step="1" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c" 
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="y" >6</expression>
+<expression name="s" >Hello</expression>
+</expressions>
+</function>
+<function name="theOtherCrashFunction" line="3" 
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+</history>
+</crash>


Property changes on: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_fname.xml
___________________________________________________________________
Added: svn:mime-type
   + text/plain

Added: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_trace.xml
===================================================================
--- 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_trace.xml
                             (rev 0)
+++ 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_trace.xml
     2012-04-03 21:18:55 UTC (rev 20891)
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<crash category="npe" function="crashFunction" line="14" 
file="bug_null_pointer_exception.c" >
+<history>
+<epoch step="0" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c" 
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="y" >6</expression>
+<expression name="s" >Hello</expression>
+</expressions>
+</function>
+<function name="intermediateFunction" line="20" 
file="bug_null_pointer_exception.c" depth="0" >
+<expressions>
+<expression name="alpha" >1</expression>
+<expression name="beta" >2</expression>
+<expression name="gamma" >7</expression>
+<expression name="delta" >hurray</expression>
+</expressions>
+</function>
+<function name="anotherCrashFunction" line="3" 
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+<epoch step="1" >
+<trace>
+<function name="crashFunction" line="14" file="bug_null_pointer_exception.c" 
depth="0" >
+<expressions>
+<expression name="crashStruct" >NULL</expression>
+<expression name="x" >5</expression>
+<expression name="y" >6</expression>
+<expression name="s" >Hello</expression>
+</expressions>
+</function>
+<function name="intermediateFunction" line="20" 
file="bug_null_pointer_exception.c" depth="0" >
+<expressions>
+<expression name="alpha" >1</expression>
+<expression name="beta" >2</expression>
+<expression name="gamma" >7</expression>
+<expression name="delta" >hurray</expression>
+</expressions>
+</function>
+<function name="anotherCrashFunction" line="3" 
file="bug_null_pointer_exception.c" depth="1" >
+<expressions>
+<expression name="a" >3</expression>
+<expression name="b" >7</expression>
+<expression name="c" >9</expression>
+<expression name="d" >112</expression>
+</expressions>
+</function>
+</trace>
+</epoch>
+</history>
+</crash>


Property changes on: 
monkey/branches/MonkeyBacktracking/monkey/MonkeyBugComparator/src/org/monkey/comparator/testing/refs/monkey_different_trace.xml
___________________________________________________________________
Added: svn:mime-type
   + text/plain




reply via email to

[Prev in Thread] Current Thread [Next in Thread]