Repository: incubator-ariatosca
Updated Branches:
  refs/heads/ARIA-52-Support-order-management-in-relationships 58455922f -> 
96b5e1662


code review fixups


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

Branch: refs/heads/ARIA-52-Support-order-management-in-relationships
Commit: 96b5e16626f7fc021af5f6a9fa4a0b6d0cebc1a5
Parents: 5845592
Author: mxmrlv <mxm...@gmail.com>
Authored: Sun Jan 8 15:29:34 2017 +0200
Committer: mxmrlv <mxm...@gmail.com>
Committed: Sun Jan 8 15:29:34 2017 +0200

----------------------------------------------------------------------
 aria/storage/base_model.py          |  25 ++++----
 tests/storage/test_model_storage.py | 102 +++++++++++++++++++++----------
 2 files changed, 85 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/96b5e166/aria/storage/base_model.py
----------------------------------------------------------------------
diff --git a/aria/storage/base_model.py b/aria/storage/base_model.py
index a534db4..73be771 100644
--- a/aria/storage/base_model.py
+++ b/aria/storage/base_model.py
@@ -418,7 +418,8 @@ class RelationshipBase(ModelMixin):
 
     _private_fields = ['source_node_fk', 'target_node_fk', 'position']
 
-    position = Column(Integer)
+    source_position = Column(Integer)
+    target_position = Column(Integer)
 
     @declared_attr
     def deployment_id(self):
@@ -434,8 +435,8 @@ class RelationshipBase(ModelMixin):
             'source_node_fk',
             backreference='outbound_relationships',
             backref_kwargs=dict(
-                order_by=cls.position,
-                collection_class=ordering_list('position', count_from=0)
+                order_by=cls.source_position,
+                collection_class=ordering_list('source_position', count_from=0)
             )
         )
 
@@ -453,8 +454,8 @@ class RelationshipBase(ModelMixin):
             'target_node_fk',
             backreference='inbound_relationships',
             backref_kwargs=dict(
-                order_by=cls.position,
-                collection_class=ordering_list('position', count_from=0)
+                order_by=cls.target_position,
+                collection_class=ordering_list('target_position', count_from=0)
             )
         )
 
@@ -536,9 +537,11 @@ class RelationshipInstanceBase(ModelMixin):
     _private_fields = ['relationship_storage_fk',
                        'source_node_instance_fk',
                        'target_node_instance_fk',
-                       'position']
+                       'source_position',
+                       'target_position']
 
-    position = Column(Integer)
+    source_position = Column(Integer)
+    target_position = Column(Integer)
 
     @declared_attr
     def source_node_instance_fk(cls):
@@ -550,8 +553,8 @@ class RelationshipInstanceBase(ModelMixin):
             'source_node_instance_fk',
             backreference='outbound_relationship_instances',
             backref_kwargs=dict(
-                order_by=cls.position,
-                collection_class=ordering_list('position', count_from=0)
+                order_by=cls.source_position,
+                collection_class=ordering_list('source_position', count_from=0)
             )
         )
 
@@ -573,8 +576,8 @@ class RelationshipInstanceBase(ModelMixin):
             'target_node_instance_fk',
             backreference='inbound_relationship_instances',
             backref_kwargs=dict(
-                order_by=cls.position,
-                collection_class=ordering_list('position', count_from=0)
+                order_by=cls.target_position,
+                collection_class=ordering_list('target_position', count_from=0)
             )
         )
 

http://git-wip-us.apache.org/repos/asf/incubator-ariatosca/blob/96b5e166/tests/storage/test_model_storage.py
----------------------------------------------------------------------
diff --git a/tests/storage/test_model_storage.py 
b/tests/storage/test_model_storage.py
index 7ed2c34..0e8d1a0 100644
--- a/tests/storage/test_model_storage.py
+++ b/tests/storage/test_model_storage.py
@@ -159,6 +159,9 @@ def test_relationship_model_ordering(context):
     source_node = context.model.node.get_by_name(models.DEPENDENT_NODE_NAME)
     source_node_instance = context.model.node_instance.get_by_name(
         models.DEPENDENT_NODE_INSTANCE_NAME)
+    target_node = context.model.node.get_by_name(models.DEPENDENCY_NODE_NAME)
+    target_node_instance = context.model.node_instance.get_by_name(
+        models.DEPENDENCY_NODE_INSTANCE_NAME)
     new_node = model.Node(
         name='new_node',
         type='test_node_type',
@@ -172,7 +175,7 @@ def test_relationship_model_ordering(context):
         max_number_of_instances=1,
         deployment=deployment
     )
-    new_relationship = model.Relationship(
+    source_to_new_relationship = model.Relationship(
         source_node=source_node,
         target_node=new_node,
         source_interfaces={},
@@ -191,38 +194,75 @@ def test_relationship_model_ordering(context):
         state='',
         scaling_groups=[]
     )
-    new_relationship_instance = model.RelationshipInstance(
-        relationship=new_relationship,
-        target_node_instance=new_node_instance,
+    source_to_new_relationship_instance = model.RelationshipInstance(
+        relationship=source_to_new_relationship,
         source_node_instance=source_node_instance,
+        target_node_instance=new_node_instance,
     )
 
-    context.model.node.put(new_node)
-    context.model.node_instance.put(new_node_instance)
-    context.model.relationship.put(new_relationship)
-    context.model.relationship_instance.put(new_relationship_instance)
-
-    assert len(source_node.outbound_relationships) == 2
-    assert len(source_node_instance.outbound_relationship_instances) == 2
-    first_rel, second_rel = source_node.outbound_relationships
-    first_rel_instance, second_rel_instance = 
source_node_instance.outbound_relationship_instances
-
-    assert first_rel.position == first_rel_instance.position == 0
-    assert second_rel.position == second_rel_instance.position == 0
-
-    reversed_relationships = list(reversed(source_node.outbound_relationships))
-    reversed_relationship_instances = list(
-        reversed(source_node_instance.outbound_relationship_instances))
-
-    assert source_node.outbound_relationships != reversed_relationships
-    assert source_node_instance.outbound_relationship_instances != 
reversed_relationship_instances
+    new_to_target_relationship = model.Relationship(
+        source_node=new_node,
+        target_node=target_node,
+        source_interfaces={},
+        source_operations=dict((key, {}) for key in 
operations.RELATIONSHIP_OPERATIONS),
+        target_interfaces={},
+        target_operations=dict((key, {}) for key in 
operations.RELATIONSHIP_OPERATIONS),
+        type='rel_type',
+        type_hierarchy=[],
+        properties={},
+    )
+    new_to_target_relationship_instance = model.RelationshipInstance(
+        relationship=new_to_target_relationship,
+        source_node_instance=new_node_instance,
+        target_node_instance=target_node_instance,
+    )
 
-    source_node.outbound_relationships[:] = reversed_relationships
-    source_node_instance.outbound_relationship_instances[:] = 
reversed_relationship_instances
-    context.model.node.update(source_node)
-    context.model.node_instance.update(source_node_instance)
 
-    assert first_rel.position == first_rel_instance.position == 1
-    assert second_rel.position == second_rel_instance.position == 0
-    assert source_node.outbound_relationships == reversed_relationships
-    assert source_node_instance.outbound_relationship_instances == 
reversed_relationship_instances
+    context.model.node.put(new_node)
+    context.model.node_instance.put(new_node_instance)
+    context.model.relationship.put(source_to_new_relationship)
+    context.model.relationship.put(new_to_target_relationship)
+    
context.model.relationship_instance.put(source_to_new_relationship_instance)
+    
context.model.relationship_instance.put(new_to_target_relationship_instance)
+
+    def flip_and_assert(node_instance, direction):
+        """
+        Reversed the order of relationships and assert effects took place.
+        :param node_instance: the node instance to operatate on
+        :param direction: the type of relationships to flip (inbound/outbount)
+        :return:
+        """
+        assert direction in ('inbound', 'outbound')
+
+        relationships = getattr(node_instance.node, direction + 
'_relationships')
+        relationship_instances = getattr(node_instance, direction + 
'_relationship_instances')
+        assert len(relationships) == 2
+        assert len(relationship_instances) == 2
+
+        first_rel, second_rel = relationships
+        first_rel_instance, second_rel_instance = relationship_instances
+        assert getattr(first_rel, relationships.ordering_attr) == 0
+        assert getattr(second_rel, relationships.ordering_attr) == 1
+        assert getattr(first_rel_instance, 
relationship_instances.ordering_attr) == 0
+        assert getattr(second_rel_instance, 
relationship_instances.ordering_attr) == 1
+
+        reversed_relationships = list(reversed(relationships))
+        reversed_relationship_instances = 
list(reversed(relationship_instances))
+
+        assert relationships != reversed_relationships
+        assert relationship_instances != reversed_relationship_instances
+
+        relationships[:] = reversed_relationships
+        relationship_instances[:] = reversed_relationship_instances
+        context.model.node_instance.update(node_instance)
+
+        assert relationships == reversed_relationships
+        assert relationship_instances == reversed_relationship_instances
+
+        assert getattr(first_rel, relationships.ordering_attr) == 1
+        assert getattr(second_rel, relationships.ordering_attr) == 0
+        assert getattr(first_rel_instance, 
relationship_instances.ordering_attr) == 1
+        assert getattr(second_rel_instance, 
relationship_instances.ordering_attr) == 0
+
+    flip_and_assert(source_node_instance, 'outbound')
+    flip_and_assert(target_node_instance, 'inbound')

Reply via email to