diff --git a/CHANGES.txt b/CHANGES.txt
index 56600ee..3dc0de5 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -8,6 +8,7 @@
 
   BUG FIXES
 
+    HAMA-989: Added condition to ignore Async based test cases for non-linux systems (Behroz Sikander via edwardyoon)
     HAMA-986: There is a missing value when calculating hashcode of AsyncClient (JongYoon Lim via edwardyoon)
 
   IMPROVEMENTS
diff --git a/core/src/test/java/org/apache/hama/bsp/message/TestHamaAsyncMessageManager.java b/core/src/test/java/org/apache/hama/bsp/message/TestHamaAsyncMessageManager.java
index f4f89b9..3e6d794 100644
--- a/core/src/test/java/org/apache/hama/bsp/message/TestHamaAsyncMessageManager.java
+++ b/core/src/test/java/org/apache/hama/bsp/message/TestHamaAsyncMessageManager.java
@@ -23,6 +23,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.commons.lang.SystemUtils;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.io.IntWritable;
 import org.apache.hadoop.io.NullWritable;
@@ -45,6 +46,11 @@
   public static volatile int increment = 1;
 
   public void testMemoryMessaging() throws Exception {
+    if(!SystemUtils.IS_OS_LINUX) {
+      System.out.println("Skipping testcase because Async is only supported for LINUX!");
+      return;
+    }
+      
     HamaConfiguration conf = new HamaConfiguration();
     conf.setClass(MessageManager.RECEIVE_QUEUE_TYPE_CLASS, MemoryQueue.class,
         MessageQueue.class);
diff --git a/core/src/test/java/org/apache/hama/ipc/TestAsyncIPC.java b/core/src/test/java/org/apache/hama/ipc/TestAsyncIPC.java
index 84cee94..1e21d2a 100644
--- a/core/src/test/java/org/apache/hama/ipc/TestAsyncIPC.java
+++ b/core/src/test/java/org/apache/hama/ipc/TestAsyncIPC.java
@@ -23,6 +23,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.commons.lang.SystemUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
@@ -143,6 +144,11 @@
   }
 
   public void testSerial() throws Exception {
+    if(!SystemUtils.IS_OS_LINUX) {
+      System.out.println("Skipping testcase because Async is only supported for LINUX!");
+      return;
+    }
+    
     testSerial(3, false, 2, 5, 100);
   }
 
@@ -173,6 +179,11 @@
   }
 
   public void testParallel() throws Exception {
+    if(!SystemUtils.IS_OS_LINUX) {
+      System.out.println("Skipping testcase because Async is only supported for LINUX!");
+      return;
+    }
+    
     testParallel(10, false, 2, 4, 2, 4, 100);
   }
 
diff --git a/core/src/test/java/org/apache/hama/ipc/TestAsyncRPC.java b/core/src/test/java/org/apache/hama/ipc/TestAsyncRPC.java
index 25be717..522d961 100644
--- a/core/src/test/java/org/apache/hama/ipc/TestAsyncRPC.java
+++ b/core/src/test/java/org/apache/hama/ipc/TestAsyncRPC.java
@@ -24,6 +24,7 @@
 
 import junit.framework.TestCase;
 
+import org.apache.commons.lang.SystemUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.conf.Configuration;
@@ -117,6 +118,11 @@
   }
 
   public void testCalls() throws Exception {
+    if(!SystemUtils.IS_OS_LINUX) {
+      System.out.println("Skipping testcase because Async is only supported for LINUX!");
+      return;
+    }
+    
     AsyncServer server = AsyncRPC
         .getServer(new TestImpl(), ADDRESS, PORT, conf);
     server.start();
