[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);
}