brooklyn-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From henev...@apache.org
Subject [1/2] brooklyn-server git commit: expand test of future value
Date Tue, 02 May 2017 10:43:41 GMT
Repository: brooklyn-server
Updated Branches:
  refs/heads/master 547357d26 -> 140631bcd


expand test of future value

fix logic where future no longer guaranteed to be available when non-blocking


Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/2809d8a9
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/2809d8a9
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/2809d8a9

Branch: refs/heads/master
Commit: 2809d8a929c6d276509b9304b7dc0732af7f1bac
Parents: 259d88e
Author: Alex Heneveld <alex.heneveld@cloudsoftcorp.com>
Authored: Tue May 2 11:03:55 2017 +0100
Committer: Alex Heneveld <alex.heneveld@cloudsoftcorp.com>
Committed: Tue May 2 11:13:32 2017 +0100

----------------------------------------------------------------------
 .../core/config/ConfigTypeCoercionTest.java     | 61 ---------------
 .../core/config/DeferredConfigTest.java         | 79 ++++++++++++++++++++
 2 files changed, 79 insertions(+), 61 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2809d8a9/core/src/test/java/org/apache/brooklyn/core/config/ConfigTypeCoercionTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/config/ConfigTypeCoercionTest.java
b/core/src/test/java/org/apache/brooklyn/core/config/ConfigTypeCoercionTest.java
deleted file mode 100644
index 3c3a9a0..0000000
--- a/core/src/test/java/org/apache/brooklyn/core/config/ConfigTypeCoercionTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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 at
- *
- *     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 org.apache.brooklyn.core.config;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertTrue;
-
-import java.util.List;
-import java.util.concurrent.Callable;
-
-import org.apache.brooklyn.api.mgmt.Task;
-import org.apache.brooklyn.api.sensor.Sensor;
-import org.apache.brooklyn.config.ConfigKey;
-import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
-import org.apache.brooklyn.core.test.entity.TestApplication;
-import org.apache.brooklyn.util.guava.Maybe;
-import org.testng.annotations.Test;
-
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-import com.google.common.reflect.TypeToken;
-
-public class ConfigTypeCoercionTest extends BrooklynAppUnitTestSupport {
-    private static ConfigKey<Object> SENSORS_UNTYPED = ConfigKeys.newConfigKey(Object.class,
"sensors");
-    @SuppressWarnings("serial")
-    private static ConfigKey<List<? extends Sensor<?>>> SENSORS = ConfigKeys.newConfigKey(new
TypeToken<List<? extends Sensor<?>>>() {}, "sensors");
-    
-    @Test
-    public void testSshConfigFromDefault() throws Exception {
-        // Simulate a deferred value
-        Task<Sensor<?>> sensorFuture = app.getExecutionContext().submit(new Callable<Sensor<?>>()
{
-            @Override
-            public Sensor<?> call() throws Exception {
-                return TestApplication.MY_ATTRIBUTE;
-            }
-        });
-        app.config().set(SENSORS_UNTYPED, (Object)ImmutableList.of(sensorFuture));
-
-        Maybe<List<? extends Sensor<?>>> sensors = app.config().getNonBlocking(SENSORS);
-        assertTrue(sensors.isPresent(), "value expected");
-        Sensor<?> sensor = Iterables.getOnlyElement(sensors.get());
-        assertEquals(sensor, TestApplication.MY_ATTRIBUTE);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/2809d8a9/core/src/test/java/org/apache/brooklyn/core/config/DeferredConfigTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/brooklyn/core/config/DeferredConfigTest.java b/core/src/test/java/org/apache/brooklyn/core/config/DeferredConfigTest.java
new file mode 100644
index 0000000..9decca8
--- /dev/null
+++ b/core/src/test/java/org/apache/brooklyn/core/config/DeferredConfigTest.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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 at
+ *
+ *     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 org.apache.brooklyn.core.config;
+
+import static org.testng.Assert.assertEquals;
+
+import java.util.List;
+import java.util.concurrent.Callable;
+
+import org.apache.brooklyn.api.mgmt.Task;
+import org.apache.brooklyn.api.sensor.Sensor;
+import org.apache.brooklyn.config.ConfigKey;
+import org.apache.brooklyn.core.test.BrooklynAppUnitTestSupport;
+import org.apache.brooklyn.core.test.entity.TestApplication;
+import org.apache.brooklyn.util.guava.Maybe;
+import org.apache.brooklyn.util.time.Duration;
+import org.apache.brooklyn.util.time.Time;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
+import com.google.common.reflect.TypeToken;
+
+public class DeferredConfigTest extends BrooklynAppUnitTestSupport {
+    private static ConfigKey<Object> SENSORS_UNTYPED = ConfigKeys.newConfigKey(Object.class,
"sensors");
+    @SuppressWarnings("serial")
+    private static ConfigKey<List<? extends Sensor<?>>> SENSORS = ConfigKeys.newConfigKey(new
TypeToken<List<? extends Sensor<?>>>() {}, "sensors");
+    
+    @Test
+    public void testDeferredConfigInListWhenAvailable() throws Exception {
+        doTestDeferredConfigInList(false);
+    }
+    
+    @Test
+    public void testDeferredConfigInListNotAvailable() throws Exception {
+        doTestDeferredConfigInList(true);
+    }
+    
+    void doTestDeferredConfigInList(final boolean delay) throws Exception {
+        // Simulate a deferred value
+        Task<Sensor<?>> sensorFuture = app.getExecutionContext().submit(new Callable<Sensor<?>>()
{
+            @Override
+            public Sensor<?> call() throws Exception {
+                if (delay) Time.sleep(Duration.FIVE_SECONDS);
+                return TestApplication.MY_ATTRIBUTE;
+            }
+        });
+        app.config().set(SENSORS_UNTYPED, (Object)ImmutableList.of(sensorFuture));
+
+        if (!delay) sensorFuture.get(Duration.ONE_SECOND);
+        // should resolve if future completed
+        Maybe<List<? extends Sensor<?>>> sensors = app.config().getNonBlocking(SENSORS);
+        if (delay) {
+            Assert.assertFalse(sensors.isPresent(), "value shouldn't be available");
+        } else {
+            Assert.assertTrue(sensors.isPresent(), "value should be available");
+            Sensor<?> sensor = Iterables.getOnlyElement(sensors.get());
+            assertEquals(sensor, TestApplication.MY_ATTRIBUTE);
+        }
+    }
+
+}


Mime
View raw message