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 <[email protected]>
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")));
+    }
+
 }

Reply via email to