removeTip pass all the tests
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-0
new file mode 100755
index 0000000..36ad133
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-0
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-1
new file mode 100755
index 0000000..6c0654f
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-1
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-2
new file mode 100755
index 0000000..88537a5
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-2
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-3
new file mode 100755
index 0000000..764a418
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/2/part-3
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-0
new file mode 100755
index 0000000..11b0961
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-0
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-1
new file mode 100755
index 0000000..4559127
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-1
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-2
new file mode 100755
index 0000000..16d1cca
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-2
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-3
new file mode 100755
index 0000000..113a00c
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/3/part-3
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-0
new file mode 100755
index 0000000..8f9f87b
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-0
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-1
new file mode 100755
index 0000000..fbe9073
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-1
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-2
new file mode 100755
index 0000000..4f2da5a
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-2
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-3
new file mode 100755
index 0000000..d91a22d
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/4/part-3
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-0
new file mode 100755
index 0000000..789a4be
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-0
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-1
new file mode 100755
index 0000000..f2c8f05
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-1
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-2
new file mode 100755
index 0000000..adac13d
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-2
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-3
new file mode 100755
index 0000000..048288c
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/5/part-3
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-0
new file mode 100755
index 0000000..370d2f2
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-0
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-1
new file mode 100755
index 0000000..7dab747
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-1
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-2
new file mode 100755
index 0000000..edc69bc
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-2
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-3
new file mode 100755
index 0000000..8eefd1e
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/6/part-3
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-0
new file mode 100755
index 0000000..e2a4c17
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-0
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-1
new file mode 100755
index 0000000..91e02e5
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-1
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-2
new file mode 100755
index 0000000..91af60db
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-2
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-3
new file mode 100755
index 0000000..3e751be
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/7/part-3
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-0
new file mode 100755
index 0000000..491112d
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-0
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-1
new file mode 100755
index 0000000..390b4c2
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-1
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-2
new file mode 100755
index 0000000..dc97793
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-2
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-3
new file mode 100755
index 0000000..e5979a7
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/8/part-3
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-0 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-0
new file mode 100755
index 0000000..f02ff98
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-0
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-1 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-1
new file mode 100755
index 0000000..db12a15
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-1
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-2 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-2
new file mode 100755
index 0000000..4c0e89c
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-2
Binary files differ
diff --git a/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-3 b/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-3
new file mode 100755
index 0000000..5b39e54
--- /dev/null
+++ b/genomix/genomix-pregelix/data/PathTestSet_bidirection/9/part-3
Binary files differ
diff --git a/genomix/genomix-pregelix/data/input/tworeads/part-0 b/genomix/genomix-pregelix/data/input/tworeads/part-0
index 271cd2b..b9cd4fb 100755
--- a/genomix/genomix-pregelix/data/input/tworeads/part-0
+++ b/genomix/genomix-pregelix/data/input/tworeads/part-0
Binary files differ
diff --git a/genomix/genomix-pregelix/data/input/tworeads/part-1 b/genomix/genomix-pregelix/data/input/tworeads/part-1
index 30c05e6..69638f9 100755
--- a/genomix/genomix-pregelix/data/input/tworeads/part-1
+++ b/genomix/genomix-pregelix/data/input/tworeads/part-1
Binary files differ
diff --git a/genomix/genomix-pregelix/data/input/tworeads/part-2 b/genomix/genomix-pregelix/data/input/tworeads/part-2
index 4b8e2c4..e69ce75 100755
--- a/genomix/genomix-pregelix/data/input/tworeads/part-2
+++ b/genomix/genomix-pregelix/data/input/tworeads/part-2
Binary files differ
diff --git a/genomix/genomix-pregelix/data/input/tworeads/part-3 b/genomix/genomix-pregelix/data/input/tworeads/part-3
index 9fa10d6..77f352b 100755
--- a/genomix/genomix-pregelix/data/input/tworeads/part-3
+++ b/genomix/genomix-pregelix/data/input/tworeads/part-3
Binary files differ
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeAddVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeAddVertex.java
index ca42f4e..d556aee 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeAddVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/bridgeremove/BridgeAddVertex.java
@@ -86,7 +86,7 @@
                 /**
                  * set the vertex value
                  */
-                byte[] array = { 'T', 'A', 'G', 'C', 'C', 'T'};
+                byte[] array = { 'T', 'A', 'G', 'C', 'C'};
                 KmerBytesWritable kmer = new KmerBytesWritable(array.length);
                 kmer.setByRead(array, 0);
                 vertexValue.setKmer(kmer);
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java
index 3eb1023..07f1ff5 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/BasicPathMergeVertex.java
@@ -39,13 +39,13 @@
      * initiate kmerSize, maxIteration
      */
     public void initVertex() {
-        if (kmerSize == -1)
-            kmerSize = getContext().getConfiguration().getInt(KMER_SIZE, 5);
-        if (maxIteration < 0)
-            maxIteration = getContext().getConfiguration().getInt(ITERATIONS, 1000000);
-        outFlag = (byte)0;
-        outgoingMsg.reset();
-        headFlag = (byte)(getVertexValue().getState() & State.IS_HEAD);
+//        if (kmerSize == -1)
+//            kmerSize = getContext().getConfiguration().getInt(KMER_SIZE, 5);
+//        if (maxIteration < 0)
+//            maxIteration = getContext().getConfiguration().getInt(ITERATIONS, 1000000);
+//        outFlag = (byte)0;
+//        outgoingMsg.reset();
+//        headFlag = (byte)(getVertexValue().getState() & State.IS_HEAD);
     }
     
     /**
@@ -65,6 +65,34 @@
     public PositionWritable getNextDestVertexId(VertexValueWritable value) {
         if (value.getFFList().getCountOfPosition() > 0){ // #FFList() > 0
             posIterator = value.getFFList().iterator();
+            return posIterator.next();
+        } else if (value.getFRList().getCountOfPosition() > 0){ // #FRList() > 0
+            posIterator = value.getFRList().iterator();
+            return posIterator.next();
+        } else {
+          return null;  
+        }
+        
+    }
+
+    public PositionWritable getPreDestVertexId(VertexValueWritable value) {
+        if (value.getRFList().getCountOfPosition() > 0){ // #RFList() > 0
+            posIterator = value.getRFList().iterator();
+            return posIterator.next();
+        } else if (value.getRRList().getCountOfPosition() > 0){ // #RRList() > 0
+            posIterator = value.getRRList().iterator();
+            return posIterator.next();
+        } else {
+            return null;
+        }
+    }
+    
+    /**
+     * get destination vertex
+     */
+    public PositionWritable getNextDestVertexIdAndSetFlag(VertexValueWritable value) {
+        if (value.getFFList().getCountOfPosition() > 0){ // #FFList() > 0
+            posIterator = value.getFFList().iterator();
             outFlag |= MessageFlag.DIR_FF;
             return posIterator.next();
         } else if (value.getFRList().getCountOfPosition() > 0){ // #FRList() > 0
@@ -77,7 +105,7 @@
         
     }
 
-    public PositionWritable getPreDestVertexId(VertexValueWritable value) {
+    public PositionWritable getPreDestVertexIdAndSetFlag(VertexValueWritable value) {
         if (value.getRFList().getCountOfPosition() > 0){ // #RFList() > 0
             posIterator = value.getRFList().iterator();
             outFlag |= MessageFlag.DIR_RF;
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/LogAlgorithmForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/LogAlgorithmForPathMergeVertex.java
index 500a903..d1d9739 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/LogAlgorithmForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/LogAlgorithmForPathMergeVertex.java
@@ -65,7 +65,7 @@
      */
     public void sendOutMsg() {
         //send wantToMerge to next
-        tempPostition = getNextDestVertexId(getVertexValue());
+        tempPostition = getNextDestVertexIdAndSetFlag(getVertexValue());
         if(tempPostition != null){
             destVertexId.set(tempPostition);
             outgoingMsg.setFlag(outFlag);
@@ -74,7 +74,7 @@
         }
         
         ////send wantToMerge to prev
-        tempPostition = getPreDestVertexId(getVertexValue());
+        tempPostition = getPreDestVertexIdAndSetFlag(getVertexValue());
         if(tempPostition != null){
             destVertexId.set(tempPostition);
             outgoingMsg.setFlag(outFlag);
diff --git a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java
index d0a6da2..02916ec 100644
--- a/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java
+++ b/genomix/genomix-pregelix/src/main/java/edu/uci/ics/genomix/pregelix/operator/pathmerge/P4ForPathMergeVertex.java
@@ -150,6 +150,7 @@
             //tailFlag = (byte) (MessageFlag.IS_TAIL & getVertexValue().getState());
             //outFlag = (byte) (headFlag | tailFlag);
             outFlag |= headFlag;
+            
             outFlag |= MessageFlag.NO_MERGE;
             
             // only PATH vertices are present. Find the ID's for my neighbors
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BridgeAddSmallTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BridgeAddSmallTestSuite.java
new file mode 100644
index 0000000..221a76a
--- /dev/null
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BridgeAddSmallTestSuite.java
@@ -0,0 +1,210 @@
+/*
+ * Copyright 2009-2010 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package edu.uci.ics.genomix.pregelix.JobRun;
+
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.logging.Logger;
+
+import junit.framework.Test;
+import junit.framework.TestResult;
+import junit.framework.TestSuite;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hdfs.MiniDFSCluster;
+import org.apache.hadoop.mapred.JobConf;
+
+import edu.uci.ics.pregelix.core.jobgen.clusterconfig.ClusterConfig;
+import edu.uci.ics.pregelix.core.util.PregelixHyracksIntegrationUtil;
+
+@SuppressWarnings("deprecation")
+public class BridgeAddSmallTestSuite extends TestSuite {
+    private static final Logger LOGGER = Logger.getLogger(BridgeAddSmallTestSuite.class.getName());
+
+    public static final String PreFix = "data/input"; //"graphbuildresult";
+    public static final String[] TestDir = { PreFix + File.separator
+    + "tworeads"};/*, PreFix + File.separator
+            /*+ "CyclePath"};, PreFix + File.separator
+            + "SimplePath", PreFix + File.separator
+            + "SinglePath", PreFix + File.separator
+            + "TreePath"};*/
+           /* + "2", PreFix + File.separator + "3", PreFix + File.separator + "4", PreFix + File.separator + "5",
+            PreFix + File.separator + "6", PreFix + File.separator + "7", PreFix + File.separator + "8",
+            PreFix + File.separator + "9", PreFix + File.separator + "TwoKmer", PreFix + File.separator + "ThreeKmer",
+            PreFix + File.separator + "SinglePath", PreFix + File.separator + "SimplePath",
+            PreFix + File.separator + "Path", PreFix + File.separator + "BridgePath",
+            PreFix + File.separator + "CyclePath", PreFix + File.separator + "RingPath",
+            PreFix + File.separator + "LongPath", PreFix + File.separator + "TreePath" };*/
+    private static final String ACTUAL_RESULT_DIR = "data/actual/bridgeadd";
+    private static final String PATH_TO_HADOOP_CONF = "src/test/resources/hadoop/conf";
+    private static final String PATH_TO_CLUSTER_STORE = "src/test/resources/cluster/stores.properties";
+    private static final String PATH_TO_CLUSTER_PROPERTIES = "src/test/resources/cluster/cluster.properties";
+    private static final String PATH_TO_JOBS = "src/test/resources/jobs/";
+    private static final String PATH_TO_ONLY = "src/test/resources/only_bridgeadd.txt";
+
+    public static final String HDFS_INPUTPATH = "/PathTestSet";
+
+    private static final String HADOOP_CONF_PATH = ACTUAL_RESULT_DIR + File.separator + "conf.xml";
+    private MiniDFSCluster dfsCluster;
+
+    private JobConf conf = new JobConf();
+    private int numberOfNC = 2;
+
+    public void setUp() throws Exception {
+        ClusterConfig.setStorePath(PATH_TO_CLUSTER_STORE);
+        ClusterConfig.setClusterPropertiesPath(PATH_TO_CLUSTER_PROPERTIES);
+        cleanupStores();
+        PregelixHyracksIntegrationUtil.init("src/test/resources/topology.xml");
+        LOGGER.info("Hyracks mini-cluster started");
+        FileUtils.forceMkdir(new File(ACTUAL_RESULT_DIR));
+        FileUtils.cleanDirectory(new File(ACTUAL_RESULT_DIR));
+        startHDFS();
+    }
+
+    private void startHDFS() throws IOException {
+        conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/core-site.xml"));
+        conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/mapred-site.xml"));
+        conf.addResource(new Path(PATH_TO_HADOOP_CONF + "/hdfs-site.xml"));
+        FileSystem lfs = FileSystem.getLocal(new Configuration());
+        lfs.delete(new Path("build"), true);
+        System.setProperty("hadoop.log.dir", "logs");
+        dfsCluster = new MiniDFSCluster(conf, numberOfNC, true, null);
+        FileSystem dfs = FileSystem.get(conf);
+
+        for (String testDir : TestDir) {
+            File src = new File(testDir);
+            Path dest = new Path(HDFS_INPUTPATH + File.separator + src.getName());
+            dfs.mkdirs(dest);
+            //src.listFiles()
+            //src.listFiles((FilenameFilter)(new WildcardFileFilter("part*")))
+            for (File f : src.listFiles()) {
+                dfs.copyFromLocalFile(new Path(f.getAbsolutePath()), dest);
+            }
+        }
+
+        DataOutputStream confOutput = new DataOutputStream(new FileOutputStream(new File(HADOOP_CONF_PATH)));
+        conf.writeXml(confOutput);
+        confOutput.flush();
+        confOutput.close();
+    }
+
+    private void cleanupStores() throws IOException {
+        FileUtils.forceMkdir(new File("teststore"));
+        FileUtils.forceMkdir(new File("build"));
+        FileUtils.cleanDirectory(new File("teststore"));
+        FileUtils.cleanDirectory(new File("build"));
+    }
+
+    /**
+     * cleanup hdfs cluster
+     */
+    private void cleanupHDFS() throws Exception {
+        dfsCluster.shutdown();
+    }
+
+    public void tearDown() throws Exception {
+        PregelixHyracksIntegrationUtil.deinit();
+        LOGGER.info("Hyracks mini-cluster shut down");
+        cleanupHDFS();
+    }
+
+    public static Test suite() throws Exception {
+        List<String> onlys = getFileList(PATH_TO_ONLY);
+        File testData = new File(PATH_TO_JOBS);
+        File[] queries = testData.listFiles();
+        BridgeAddSmallTestSuite testSuite = new BridgeAddSmallTestSuite();
+        testSuite.setUp();
+        boolean onlyEnabled = false;
+        FileSystem dfs = FileSystem.get(testSuite.conf);
+
+        if (onlys.size() > 0) {
+            onlyEnabled = true;
+        }
+
+        for (File qFile : queries) {
+            if (qFile.isFile()) {
+                if (onlyEnabled && !isInList(onlys, qFile.getName())) {
+                    continue;
+                } else {
+                    for (String testPathStr : TestDir) {
+                        File testDir = new File(testPathStr);
+                        String resultFileName = ACTUAL_RESULT_DIR + File.separator + jobExtToResExt(qFile.getName())
+                                + File.separator + "bin" + File.separator + testDir.getName();
+                        String textFileName = ACTUAL_RESULT_DIR + File.separator + jobExtToResExt(qFile.getName())
+                                + File.separator + "txt" + File.separator + testDir.getName();
+                        testSuite.addTest(new BasicSmallTestCase(HADOOP_CONF_PATH, qFile.getName(), qFile
+                                .getAbsolutePath().toString(), dfs,
+                                HDFS_INPUTPATH + File.separator + testDir.getName(), resultFileName, textFileName));
+                    }
+                }
+            }
+        }
+        return testSuite;
+    }
+
+    /**
+     * Runs the tests and collects their result in a TestResult.
+     */
+    @Override
+    public void run(TestResult result) {
+        try {
+            int testCount = countTestCases();
+            for (int i = 0; i < testCount; i++) {
+                // cleanupStores();
+                Test each = this.testAt(i);
+                if (result.shouldStop())
+                    break;
+                runTest(each, result);
+            }
+            tearDown();
+        } catch (Exception e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+    protected static List<String> getFileList(String ignorePath) throws FileNotFoundException, IOException {
+        BufferedReader reader = new BufferedReader(new FileReader(ignorePath));
+        String s = null;
+        List<String> ignores = new ArrayList<String>();
+        while ((s = reader.readLine()) != null) {
+            ignores.add(s);
+        }
+        reader.close();
+        return ignores;
+    }
+
+    private static String jobExtToResExt(String fname) {
+        int dot = fname.lastIndexOf('.');
+        return fname.substring(0, dot);
+    }
+
+    private static boolean isInList(List<String> onlys, String name) {
+        for (String only : onlys)
+            if (name.indexOf(only) >= 0)
+                return true;
+        return false;
+    }
+
+}
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BridgeRemoveSmallTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BridgeRemoveSmallTestSuite.java
index eee495c..5b641ff 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BridgeRemoveSmallTestSuite.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/BridgeRemoveSmallTestSuite.java
@@ -45,7 +45,7 @@
 
     public static final String PreFix = "data/input"; //"graphbuildresult";
     public static final String[] TestDir = { PreFix + File.separator
-    + "pathmerge"};/*, PreFix + File.separator
+    + "pathmerge_tip"};/*, PreFix + File.separator
             /*+ "CyclePath"};, PreFix + File.separator
             + "SimplePath", PreFix + File.separator
             + "SinglePath", PreFix + File.separator
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java
index 857e4c3..fd12bbd 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/PathMergeSmallTestSuite.java
@@ -43,9 +43,19 @@
 public class PathMergeSmallTestSuite extends TestSuite {
     private static final Logger LOGGER = Logger.getLogger(PathMergeSmallTestSuite.class.getName());
 
-    public static final String PreFix = "data/actual/tipadd"; //"graphbuildresult";
+    public static final String PreFix = "data/PathTestSet_bidirection"; //"graphbuildresult";
     public static final String[] TestDir = { PreFix + File.separator
-    + "TipAddGraph/bin/read"};/*, PreFix + File.separator
+    + "2", PreFix + File.separator
+    + "3", PreFix + File.separator
+    + "4", PreFix + File.separator
+    + "5", PreFix + File.separator
+    + "6", PreFix + File.separator
+    + "7", PreFix + File.separator
+    + "8", PreFix + File.separator
+    + "9", PreFix + File.separator};
+    /*+ "tipremove/TipRemoveGraph/bin/tworeads"};
+    + "bridgeadd/BridgeAddGraph/bin/tworeads"};, PreFix + File.separator
+    + "tipadd/TipAddGraph/bin/read"}, PreFix + File.separator
             /*+ "CyclePath"};, PreFix + File.separator
             + "SimplePath", PreFix + File.separator
             + "SinglePath", PreFix + File.separator
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/TipRemoveSmallTestSuite.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/TipRemoveSmallTestSuite.java
index 5ccfca5..e174bd9 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/TipRemoveSmallTestSuite.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/JobRun/TipRemoveSmallTestSuite.java
@@ -42,10 +42,10 @@
 @SuppressWarnings("deprecation")
 public class TipRemoveSmallTestSuite extends TestSuite {
     private static final Logger LOGGER = Logger.getLogger(TipRemoveSmallTestSuite.class.getName());
-
-    public static final String PreFix = "data/actual/tipadd"; //"graphbuildresult";
+    //P4ForMergeGraph/bin/read
+    public static final String PreFix = "data/actual"; //"graphbuildresult";
     public static final String[] TestDir = { PreFix + File.separator
-    + "TipAddGraph/bin/read"};/*, PreFix + File.separator
+    + "bridgeadd/BridgeAddGraph/bin/tworeads"};/*, PreFix + File.separator
             /*+ "CyclePath"};, PreFix + File.separator
             + "SimplePath", PreFix + File.separator
             + "SinglePath", PreFix + File.separator
diff --git a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/graphbuilding/JobRunStepByStepTest.java b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/graphbuilding/JobRunStepByStepTest.java
index 7bf5aa3..efaab3f 100644
--- a/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/graphbuilding/JobRunStepByStepTest.java
+++ b/genomix/genomix-pregelix/src/test/java/edu/uci/ics/genomix/pregelix/graphbuilding/JobRunStepByStepTest.java
@@ -46,11 +46,11 @@
 @SuppressWarnings("deprecation")
 public class JobRunStepByStepTest {
     private static final int KmerSize = 3;
-    private static final int ReadLength = 8;
+    private static final int ReadLength = 11;
     private static final String ACTUAL_RESULT_DIR = "actual";
     private static final String PATH_TO_HADOOP_CONF = "src/test/resources/hadoop/conf";
 
-    private static final String DATA_INPUT_PATH = "data/graphbuild.test/read2.txt";
+    private static final String DATA_INPUT_PATH = "data/graphbuild.test/pathmerge_TestSet/9";
     private static final String HDFS_INPUT_PATH = "/webmap";
     private static final String HDFS_OUTPUT_PATH = "/webmap_result";
 
diff --git a/genomix/genomix-pregelix/src/test/resources/only_bridgeadd.txt b/genomix/genomix-pregelix/src/test/resources/only_bridgeadd.txt
new file mode 100644
index 0000000..f172e3c
--- /dev/null
+++ b/genomix/genomix-pregelix/src/test/resources/only_bridgeadd.txt
@@ -0,0 +1 @@
+BridgeAddGraph.xml