[REEF-1804] Make TestFailMapperEvaluatorsWithFailedResultHandlerOnDispose more lenient

JIRA:
  [REEF-1804](https://issues.apache.org/jira/browse/REEF-1804)

Pull Request:
  This closes #1311
diff --git a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailMapperEvaluatorsWithFailedResultHandlerOnDispose.cs b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailMapperEvaluatorsWithFailedResultHandlerOnDispose.cs
index 10deef6..c7a0c4b 100644
--- a/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailMapperEvaluatorsWithFailedResultHandlerOnDispose.cs
+++ b/lang/cs/Org.Apache.REEF.Tests/Functional/IMRU/TestFailMapperEvaluatorsWithFailedResultHandlerOnDispose.cs
@@ -67,13 +67,25 @@
             Assert.Equal(numTasks, runningTaskCount);
 
             // Tasks should fail or complete or disappear with failed evaluator
-            Assert.Equal(numTasks, completedTaskCount + failedEvaluatorCount + failedTaskCount);
-
+            // However, if the updateTask is completed before receiving Close event from the driver, 
+            // TaskRuntime informs the driver about the result before throwing exception caused by the dispose in 
+            // the result handler, that may end up two events from the update task/evaluator, one is CompletedTask, 
+            // the other is FailedEvaluator
+            var total = completedTaskCount + failedEvaluatorCount + failedTaskCount;
+            var faildMsg = string.Format(
+                "Expected total events: {0}, actual number of events {1}, completedTaskCount: {2}, failedEvaluatorCount: {3}, failedTaskCount: {4}.",
+                numTasks,
+                total,
+                completedTaskCount,
+                failedEvaluatorCount,
+                failedTaskCount);
+            Assert.True(numTasks == total || numTasks == total - 1, faildMsg);
+                
             // We have failed two mappers and one update evaluator in the test code. As the update evaluator failure 
             // happens in Dispose(), driver may/may not receive FailedEvaluator before shut down.
-            Assert.True(failedEvaluatorCount <= 3 && failedEvaluatorCount >= 2);
+            Assert.True(failedEvaluatorCount <= 3 && failedEvaluatorCount >= 2, "failedEvaluatorCount is " + failedEvaluatorCount);
 
-            // eventually job fail because master evaluator fail before the iteration is completed
+            // eventually job fails because master evaluator fails before the iteration is completed
             Assert.Equal(0, jobSuccess);
             CleanUp(testFolder);
         }