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
