You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ariatosca.apache.org by em...@apache.org on 2017/08/28 21:15:04 UTC

incubator-ariatosca git commit: Fix examples, more tests for interfaces and parameters

Repository: incubator-ariatosca
Updated Branches:
  refs/heads/ARIA-1-parser-test-suite f96d5e426 -> 05d23b63a


Fix examples, more tests for interfaces and parameters


Project: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/commit/05d23b63
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/tree/05d23b63
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/diff/05d23b63

Branch: refs/heads/ARIA-1-parser-test-suite
Commit: 05d23b63a339a52da5eca052653b40b1be142291
Parents: f96d5e4
Author: Tal Liron <ta...@gmail.com>
Authored: Mon Aug 28 16:14:37 2017 -0500
Committer: Tal Liron <ta...@gmail.com>
Committed: Mon Aug 28 16:14:37 2017 -0500

----------------------------------------------------------------------
 .travis.yml                                     |   2 +
 .../use-cases/non-normative-types.yaml          |   1 +
 .../types/test_node_type_interfaces.py          |  72 ----
 .../simple_v1_0/types/test_type_interfaces.py   | 410 +++++++++++++++++++
 .../simple_v1_0/types/test_type_parameters.py   |  18 +-
 5 files changed, 430 insertions(+), 73 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/05d23b63/.travis.yml
----------------------------------------------------------------------
diff --git a/.travis.yml b/.travis.yml
index 5a4d7b7..37f63a8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -12,6 +12,8 @@
 
 sudo: false
 
+# TODO: The default dist is "trusty", but it is broken for us because it doesn't have Python 2.6,
+# and does not allow SSH access (for py2?ssh tests)
 dist: precise
 
 language: python

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/05d23b63/examples/tosca-simple-1.0/use-cases/non-normative-types.yaml
----------------------------------------------------------------------
diff --git a/examples/tosca-simple-1.0/use-cases/non-normative-types.yaml b/examples/tosca-simple-1.0/use-cases/non-normative-types.yaml
index 24f22a3..6e63ca1 100644
--- a/examples/tosca-simple-1.0/use-cases/non-normative-types.yaml
+++ b/examples/tosca-simple-1.0/use-cases/non-normative-types.yaml
@@ -161,6 +161,7 @@ node_types:
         default: https://github.com/mmm/testnode.git
     interfaces:
       Standard:
+        type: tosca.interfaces.node.lifecycle.Standard # ARIA NOTE: missing in spec
         inputs:
           github_url:
             type: string

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/05d23b63/tests/extensions/aria_extension_tosca/simple_v1_0/types/test_node_type_interfaces.py
----------------------------------------------------------------------
diff --git a/tests/extensions/aria_extension_tosca/simple_v1_0/types/test_node_type_interfaces.py b/tests/extensions/aria_extension_tosca/simple_v1_0/types/test_node_type_interfaces.py
deleted file mode 100644
index 0228c02..0000000
--- a/tests/extensions/aria_extension_tosca/simple_v1_0/types/test_node_type_interfaces.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# -*- coding: utf-8 -*-
-# 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.
-
-import pytest
-
-
-# Overriding
-
-@pytest.mark.skip(reason='fixed in ARIA-351')
-def test_node_type_interface_override_change_type_good(parser):
-    parser.parse_literal("""
-tosca_definitions_version: tosca_simple_yaml_1_0
-interface_types:
-  MyType1:
-    inputs:
-      input1:
-        type: string
-  MyType2:
-    derived_from: MyType1
-    inputs:
-      input2:
-        type: integer
-node_types:
-  MyType1:
-    interfaces:
-      my_interface:
-        type: MyType1
-  MyType2:
-    derived_from: MyType1
-    interfaces:
-      my_interface:
-        type: MyType2
-""").assert_success()
-
-
-def test_node_type_interface_override_change_type_bad(parser):
-    parser.parse_literal("""
-tosca_definitions_version: tosca_simple_yaml_1_0
-interface_types:
-  MyType1:
-    inputs:
-      input1:
-        type: string
-  MyType2:
-    derived_from: MyType1
-    inputs:
-      input2:
-        type: integer
-node_types:
-  MyType1:
-    interfaces:
-      my_interface:
-        type: MyType2
-  MyType2:
-    derived_from: MyType1
-    interfaces:
-      my_interface:
-        type: MyType1
-""").assert_failure()

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/05d23b63/tests/extensions/aria_extension_tosca/simple_v1_0/types/test_type_interfaces.py
----------------------------------------------------------------------
diff --git a/tests/extensions/aria_extension_tosca/simple_v1_0/types/test_type_interfaces.py b/tests/extensions/aria_extension_tosca/simple_v1_0/types/test_type_interfaces.py
new file mode 100644
index 0000000..4b47a0b
--- /dev/null
+++ b/tests/extensions/aria_extension_tosca/simple_v1_0/types/test_type_interfaces.py
@@ -0,0 +1,410 @@
+# -*- coding: utf-8 -*-
+# 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.
+
+import itertools
+
+import pytest
+
+from .. import data
+
+
+TYPE_NAMES = ('node', 'relationship', 'group')
+
+
+# Syntax
+
+@pytest.mark.parametrize('name,value', itertools.product(
+    TYPE_NAMES,
+    data.NOT_A_DICT
+))
+def test_type_interface_wrong_yaml_type(parser, name, value):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+interface_types:
+  MyType: {}
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface: {{ value }}
+""", dict(name=name, value=value)).assert_failure()
+
+
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_empty(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface: {} # "type" is required
+""", dict(name=name)).assert_failure()
+
+
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_fields(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+interface_types:
+  MyType: {}
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface:
+        type: MyType
+        inputs: {}
+        operation1: {}
+        operation2: {}
+""", dict(name=name)).assert_success()
+
+
+# Type
+
+@pytest.mark.skip(reason='fixed in ARIA-351')
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_override_type_good(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+interface_types:
+  MyType1: {}
+  MyType2: {}
+{{ name }}_types:
+  MyType1:
+    interfaces:
+      my_interface:
+        type: MyType1
+  MyType2:
+    derived_from: MyType1
+    interfaces:
+      my_interface:
+        type: MyType2
+""", dict(name=name)).assert_success()
+
+
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_override_type_bad(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+interface_types:
+  MyType1: {}
+  MyType2: {}
+{{ name }}_types:
+  MyType1:
+    interfaces:
+      my_interface:
+        type: MyType2
+  MyType2:
+    derived_from: MyType1
+    interfaces:
+      my_interface:
+        type: MyType1
+""", dict(name=name)).assert_failure()
+
+
+# Interface inputs
+
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_inputs_add(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+interface_types:
+  MyType:
+    inputs:
+      my_input1:
+        type: string
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface:
+        type: MyType
+        inputs:
+          my_input2:
+            type: string
+""", dict(name=name)).assert_success()
+
+
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_inputs_override_same_type(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+interface_types:
+  MyType:
+    inputs:
+      my_input1:
+        type: string
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface:
+        type: MyType
+        inputs:
+          my_input1:
+            type: string
+""", dict(name=name)).assert_success()
+
+
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_inputs_override_derived_type(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+data_types:
+  MyType1: {}
+  MyType2: {}
+interface_types:
+  MyType:
+    inputs:
+      my_input1:
+        type: MyType1
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface:
+        type: MyType
+        inputs:
+          my_input1:
+            type: MyType2
+""", dict(name=name)).assert_success()
+
+
+@pytest.mark.skip(reason='fix')
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_inputs_override_bad(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+data_types:
+  MyType1: {}
+  MyType2: {}
+interface_types:
+  MyType:
+    inputs:
+      my_input1:
+        type: MyType2
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface:
+        type: MyType
+        inputs:
+          my_input1:
+            type: MyType1
+""", dict(name=name)).assert_failure()
+
+
+# Operations
+
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_operation_empty(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+interface_types:
+  MyType: {}
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface:
+        type: MyType
+        operation1: {}
+""", dict(name=name)).assert_success()
+
+
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_operation_fields(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+interface_types:
+  MyType: {}
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface:
+        type: MyType
+        operation1:
+          description: a description
+          implementation: {}
+          inputs: {}
+""", dict(name=name)).assert_success()
+
+
+# Operation implementation
+
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_operation_implementation_short_form(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+interface_types:
+  MyType: {}
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface:
+        type: MyType
+        operation1:
+          implementation: an implementation
+""", dict(name=name)).assert_success()
+
+
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_operation_implementation_long_form(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+interface_types:
+  MyType: {}
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface:
+        type: MyType
+        operation1:
+          implementation:
+            primary: an implementation
+            dependencies:
+              - a dependency
+              - another dependency
+""", dict(name=name)).assert_success()
+
+
+@pytest.mark.parametrize('name,value', itertools.product(
+    TYPE_NAMES,
+    data.NOT_A_STRING
+))
+def test_type_interface_operation_implementation_wrong_yaml_type(parser, name, value):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+interface_types:
+  MyType: {}
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface:
+        type: MyType
+        operation1:
+          implementation:
+            primary: {{ value }}
+""", dict(name=name, value=value)).assert_failure()
+
+
+@pytest.mark.parametrize('name,value', itertools.product(
+    TYPE_NAMES,
+    data.NOT_A_STRING
+))
+def test_type_interface_operation_dependencies_wrong_yaml_type(parser, name, value):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+interface_types:
+  MyType: {}
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface:
+        type: MyType
+        operation1:
+          implementation:
+            primary: an implementation
+            dependencies:
+              - {{ value }}
+""", dict(name=name, value=value)).assert_failure()
+
+
+# Operation inputs
+
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_operation_inputs_add(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+interface_types:
+  MyType:
+    inputs:
+      my_input1:
+        type: string
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface:
+        type: MyType
+        operation1:
+          inputs:
+            my_input2:
+              type: string
+""", dict(name=name)).assert_success()
+
+
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_operation_inputs_override_same_type(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+interface_types:
+  MyType:
+    inputs:
+      my_input1:
+        type: string
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface:
+        type: MyType
+        operation1:
+          inputs:
+            my_input1:
+              type: string
+""", dict(name=name)).assert_success()
+
+
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_operation_inputs_override_derived_type(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+data_types:
+  MyType1: {}
+  MyType2: {}
+interface_types:
+  MyType:
+    inputs:
+      my_input1:
+        type: MyType1
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface:
+        type: MyType
+        operation1:
+          inputs:
+            my_input1:
+              type: MyType2
+""", dict(name=name)).assert_success()
+
+
+@pytest.mark.skip(reason='fix')
+@pytest.mark.parametrize('name', TYPE_NAMES)
+def test_type_interface_operation_inputs_override_bad(parser, name):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+data_types:
+  MyType1: {}
+  MyType2: {}
+interface_types:
+  MyType:
+    inputs:
+      my_input1:
+        type: MyType2
+{{ name }}_types:
+  MyType:
+    interfaces:
+      my_interface:
+        type: MyType
+        operation1:
+          inputs:
+            my_input1:
+              type: MyType1
+""", dict(name=name)).assert_failure()

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/05d23b63/tests/extensions/aria_extension_tosca/simple_v1_0/types/test_type_parameters.py
----------------------------------------------------------------------
diff --git a/tests/extensions/aria_extension_tosca/simple_v1_0/types/test_type_parameters.py b/tests/extensions/aria_extension_tosca/simple_v1_0/types/test_type_parameters.py
index be5ad43..5f285ea 100644
--- a/tests/extensions/aria_extension_tosca/simple_v1_0/types/test_type_parameters.py
+++ b/tests/extensions/aria_extension_tosca/simple_v1_0/types/test_type_parameters.py
@@ -26,6 +26,7 @@ SECTIONS = (
     ('data', 'properties'),
     ('capability', 'properties'),
     ('capability', 'attributes'),
+    ('interface', 'inputs'),
     ('relationship', 'properties'),
     ('relationship', 'attributes'),
     ('node', 'properties'),
@@ -63,6 +64,21 @@ tosca_definitions_version: tosca_simple_yaml_1_0
 """, dict(name=name, parameter_section=parameter_section)).assert_success()
 
 
+@pytest.mark.parametrize('name,parameter_section', SECTIONS)
+def test_node_type_parameter_fields_unicode(parser, name, parameter_section):
+    parser.parse_literal("""
+tosca_definitions_version: tosca_simple_yaml_1_0
+{{ name }}_types:
+  MyType:
+    {{ parameter_section }}:
+      參數:
+        type: string
+        description: 描述
+        default: 值
+        status: supported
+""", dict(name=name, parameter_section=parameter_section)).assert_success()
+
+
 # Status
 
 @pytest.mark.parametrize(
@@ -91,7 +107,7 @@ tosca_definitions_version: tosca_simple_yaml_1_0
     {{ parameter_section }}:
       my_param:
         type: string
-        status: bad
+        status: not a status
 """, dict(name=name, parameter_section=parameter_section)).assert_failure()