You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2022/07/14 10:12:36 UTC

[brooklyn-server] branch master updated: add a few spec param constraint tests

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

heneveld 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 e714eca10c add a few spec param constraint tests
e714eca10c is described below

commit e714eca10ceedd34d01f3d507f066de617c3bcba
Author: Alex Heneveld <al...@cloudsoft.io>
AuthorDate: Thu Jul 14 11:12:23 2022 +0100

    add a few spec param constraint tests
---
 .../brooklyn/catalog/SpecParameterParsingTest.java | 65 ++++++++++++++++++++++
 1 file changed, 65 insertions(+)

diff --git a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/SpecParameterParsingTest.java b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/SpecParameterParsingTest.java
index af5ce016c2..a0428b4212 100644
--- a/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/SpecParameterParsingTest.java
+++ b/camp/camp-brooklyn/src/test/java/org/apache/brooklyn/camp/brooklyn/catalog/SpecParameterParsingTest.java
@@ -22,10 +22,15 @@ import static org.testng.Assert.assertEquals;
 
 import java.util.List;
 
+import com.google.common.base.Predicate;
 import org.apache.brooklyn.api.entity.EntitySpec;
 import org.apache.brooklyn.api.objs.SpecParameter;
 import org.apache.brooklyn.camp.brooklyn.AbstractYamlTest;
+import org.apache.brooklyn.core.objs.ConstraintSerialization;
 import org.apache.brooklyn.entity.stock.BasicApplication;
+import org.apache.brooklyn.test.Asserts;
+import org.apache.brooklyn.util.collections.MutableList;
+import org.apache.brooklyn.util.collections.MutableMap;
 import org.testng.annotations.Test;
 
 import com.google.common.reflect.TypeToken;
@@ -71,4 +76,64 @@ public class SpecParameterParsingTest  extends AbstractYamlTest {
         assertEquals(thirdInput.getConfigKey().getName(), "third_input");
         assertEquals(thirdInput.getConfigKey().getTypeToken(), TypeToken.of(Integer.class));
     }
+
+    @Test
+    public void testYamlInputConstraintRegexParse() {
+        String itemId = ver("test.inputs", "0.0.1");
+        addCatalogItems(
+                "brooklyn.catalog:",
+                "  id: test.inputs",
+                "  version: 0.0.1",
+                "  itemType: entity",
+                "  item: ",
+                "    type: "+ BasicApplication.class.getName(),
+                "    brooklyn.parameters:",
+                "    - name: p",
+                "      constraints:",
+                "      - required",
+                "      - regex: \\d\\d?-\\d\\d(\\d\\d)?");
+        EntitySpec<?> item = mgmt().getTypeRegistry().createSpec(mgmt().getTypeRegistry().get(itemId), null, EntitySpec.class);
+        List<SpecParameter<?>> inputs = item.getParameters();
+        assertEquals(inputs.size(), NUM_APP_DEFAULT_CONFIG_KEYS + 1, "inputs="+inputs);
+        SpecParameter<?> firstInput = inputs.get(0);
+        assertEquals(firstInput.getLabel(), "p");
+        Predicate c = firstInput.getConfigKey().getConstraint();
+        Asserts.assertTrue(c.apply("12-2000"));
+        Asserts.assertFalse(c.apply("DEC-2000"));
+
+        Object serialized = ConstraintSerialization.INSTANCE.toJsonList(c);
+        Asserts.assertInstanceOf(serialized, List.class);
+        Asserts.assertSize( (List)serialized, 2);
+        Asserts.assertEquals( ((List)serialized).get(0), "required");
+        Asserts.assertEquals( ((List)serialized).get(1), MutableMap.of("regex", "\\d\\d?-\\d\\d(\\d\\d)?"));
+    }
+
+    @Test
+    public void testYamlInputConstraintRequiredUnlessParse() {
+        String itemId = ver("test.inputs", "0.0.1");
+        addCatalogItems(
+                "brooklyn.catalog:",
+                "  id: test.inputs",
+                "  version: 0.0.1",
+                "  itemType: entity",
+                "  item: ",
+                "    type: "+ BasicApplication.class.getName(),
+                "    brooklyn.parameters:",
+                "    - name: p",
+                "      constraints:",
+                "      - requiredUnlessAnyOf: [ q, r ]",
+                "    - q");
+        EntitySpec<?> item = mgmt().getTypeRegistry().createSpec(mgmt().getTypeRegistry().get(itemId), null, EntitySpec.class);
+        List<SpecParameter<?>> inputs = item.getParameters();
+        assertEquals(inputs.size(), NUM_APP_DEFAULT_CONFIG_KEYS + 2, "inputs="+inputs);
+        SpecParameter<?> firstInput = inputs.get(0);
+        assertEquals(firstInput.getLabel(), "p");
+        Predicate c = firstInput.getConfigKey().getConstraint();
+
+        Object serialized = ConstraintSerialization.INSTANCE.toJsonList(c);
+        Asserts.assertInstanceOf(serialized, List.class);
+        Asserts.assertSize( (List)serialized, 1);
+        Asserts.assertEquals( ((List)serialized).get(0), MutableMap.of("requiredUnlessAnyOf", MutableList.of("q", "r")));
+    }
+
 }