You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by ge...@apache.org on 2020/11/30 21:16:05 UTC

[brooklyn-server] branch master updated: Fix race in testUnsubmittedTaskWithExecutionContextTimesOutWhenImmediate

This is an automated email from the ASF dual-hosted git repository.

geomacy pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-server.git


The following commit(s) were added to refs/heads/master by this push:
     new c33bb2f  Fix race in testUnsubmittedTaskWithExecutionContextTimesOutWhenImmediate
     new b26173f  Merge pull request #1129 from grkvlt/value-resolver-test-race-fix
c33bb2f is described below

commit c33bb2fc0fde84322c5afbcaee7024c58076029b
Author: Andrew Donald Kennedy <an...@gmail.com>
AuthorDate: Mon Nov 30 15:10:52 2020 +0000

    Fix race in testUnsubmittedTaskWithExecutionContextTimesOutWhenImmediate
    
    Wait until the result is present before continuing with test.
    
    Signed-off-by: Andrew Donald Kennedy <an...@gmail.com>
---
 .../apache/brooklyn/util/core/task/ValueResolverTest.java   | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/core/src/test/java/org/apache/brooklyn/util/core/task/ValueResolverTest.java b/core/src/test/java/org/apache/brooklyn/util/core/task/ValueResolverTest.java
index 108c6d4..4703e88 100644
--- a/core/src/test/java/org/apache/brooklyn/util/core/task/ValueResolverTest.java
+++ b/core/src/test/java/org/apache/brooklyn/util/core/task/ValueResolverTest.java
@@ -154,10 +154,12 @@ public class ValueResolverTest extends BrooklynAppUnitTestSupport {
         
         // Below, we call ValueResolver.getMaybe() in app's execution context. Therefore it will execute the task
         Maybe<Maybe<String>> result = app.getExecutionContext()
-                .getImmediately(new BasicTask<>( () -> Tasks.resolving(t).as(String.class).timeout(Asserts.DEFAULT_LONG_TIMEOUT).getMaybe() ));
+                .getImmediately(new BasicTask<>(() -> Tasks.resolving(t).as(String.class).timeout(Asserts.DEFAULT_LONG_TIMEOUT).getMaybe()));
         
+        // Stupid race condition on slow machines; wait until result is present first
+        Asserts.eventually(() -> result, r -> r.isPresent());
+
         // However, the resubmission will not be waited upon
-        Assert.assertTrue(result.isPresent(), "result="+result);
         Assert.assertTrue(result.get().isAbsent(), "result="+result);
         Exception exception = Maybe.getException(result.get());
         
@@ -169,9 +171,9 @@ public class ValueResolverTest extends BrooklynAppUnitTestSupport {
         Asserts.assertThat(t, (tt) -> Objects.equals(tt.getUnchecked(), "foo"));
         
         // And subsequent get _is_ immediate
-        result = app.getExecutionContext()
-            .getImmediately(new BasicTask<>( () -> Tasks.resolving(t).as(String.class).timeout(Asserts.DEFAULT_LONG_TIMEOUT).getMaybe() ));
-        Assert.assertEquals(result.get().get(), "foo");
+        Maybe<Maybe<String>> subsequent = app.getExecutionContext()
+            .getImmediately(new BasicTask<>(() -> Tasks.resolving(t).as(String.class).timeout(Asserts.DEFAULT_LONG_TIMEOUT).getMaybe()));
+        Assert.assertEquals(subsequent.get().get(), "foo");
     }
 
     public void testUnsubmittedTaskWithExecutionContextExecutesAndTimesOutImmediate() {
@@ -594,3 +596,4 @@ public class ValueResolverTest extends BrooklynAppUnitTestSupport {
     }
 
 }
+