Repository: incubator-atlas
Updated Branches:
  refs/heads/master 68a324e39 -> 69db4a828


ATLAS-1547 Added tests for Hard delete(sumasai)


Project: http://git-wip-us.apache.org/repos/asf/incubator-atlas/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-atlas/commit/69db4a82
Tree: http://git-wip-us.apache.org/repos/asf/incubator-atlas/tree/69db4a82
Diff: http://git-wip-us.apache.org/repos/asf/incubator-atlas/diff/69db4a82

Branch: refs/heads/master
Commit: 69db4a8283c55c83fd36439af9601a70b88e177c
Parents: 68a324e
Author: Suma Shivaprasad <[email protected]>
Authored: Thu Feb 16 12:16:34 2017 -0800
Committer: Suma Shivaprasad <[email protected]>
Committed: Thu Feb 16 12:19:42 2017 -0800

----------------------------------------------------------------------
 .../store/graph/v1/HardDeleteHandlerV1Test.java | 162 +++++++++++++++++++
 1 file changed, 162 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/69db4a82/repository/src/test/java/org/apache/atlas/repository/store/graph/v1/HardDeleteHandlerV1Test.java
----------------------------------------------------------------------
diff --git 
a/repository/src/test/java/org/apache/atlas/repository/store/graph/v1/HardDeleteHandlerV1Test.java
 
b/repository/src/test/java/org/apache/atlas/repository/store/graph/v1/HardDeleteHandlerV1Test.java
new file mode 100644
index 0000000..fd685c6
--- /dev/null
+++ 
b/repository/src/test/java/org/apache/atlas/repository/store/graph/v1/HardDeleteHandlerV1Test.java
@@ -0,0 +1,162 @@
+/**
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.atlas.repository.store.graph.v1;
+
+
+import org.apache.atlas.AtlasClient;
+import org.apache.atlas.AtlasException;
+import org.apache.atlas.TestUtils;
+import org.apache.atlas.exception.AtlasBaseException;
+import org.apache.atlas.model.instance.AtlasEntity;
+import org.apache.atlas.model.instance.AtlasEntityHeader;
+import org.apache.atlas.model.instance.AtlasObjectId;
+import org.apache.atlas.repository.Constants;
+import org.apache.atlas.repository.graphdb.AtlasVertex;
+import org.apache.atlas.type.AtlasTypeRegistry;
+import org.apache.atlas.typesystem.IStruct;
+import org.apache.atlas.typesystem.ITypedReferenceableInstance;
+import org.apache.atlas.typesystem.ITypedStruct;
+import org.testng.Assert;
+
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.atlas.TestUtils.COLUMNS_ATTR_NAME;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.fail;
+import static org.testng.AssertJUnit.assertNotNull;
+
+public class HardDeleteHandlerV1Test extends AtlasDeleteHandlerV1Test {
+
+    @Override
+    DeleteHandlerV1 getDeleteHandler(AtlasTypeRegistry typeRegistry) {
+        return new HardDeleteHandlerV1(typeRegistry);
+    }
+
+
+    @Override
+    protected void assertTableForTestDeleteReference(String tableId) {
+        //entity is deleted. So, no assertions
+    }
+
+    @Override
+    protected void assertColumnForTestDeleteReference(final 
AtlasEntity.AtlasEntityWithExtInfo tableInstance) throws AtlasBaseException {
+        List<AtlasObjectId> columns = (List<AtlasObjectId>) 
tableInstance.getEntity().getAttribute(COLUMNS_ATTR_NAME);
+        assertNull(columns);
+    }
+
+    @Override
+    protected void assertProcessForTestDeleteReference(final AtlasEntityHeader 
processInstance) throws Exception {
+        //assert that outputs is empty
+        ITypedReferenceableInstance newProcess =
+            metadataService.getEntityDefinition(processInstance.getGuid());
+        assertNull(newProcess.get(AtlasClient.PROCESS_ATTRIBUTE_OUTPUTS));
+    }
+
+    @Override
+    protected void assertEntityDeleted(String id) throws Exception {
+        try {
+            entityStore.getById(id);
+            fail("Expected EntityNotFoundException");
+        } catch (AtlasBaseException e) {
+            // expected
+        }
+    }
+
+    @Override
+    protected void assertDeletedColumn(final 
AtlasEntity.AtlasEntityWithExtInfo tableInstance) throws AtlasException {
+        final List<AtlasObjectId> columns = (List<AtlasObjectId>) 
tableInstance.getEntity().getAttribute(COLUMNS_ATTR_NAME);
+        Assert.assertEquals(columns.size(), 2);
+    }
+
+    @Override
+    protected void assertTestDeleteEntities(AtlasEntity.AtlasEntityWithExtInfo 
tableInstance) {
+        int vertexCount = getVertices(Constants.ENTITY_TYPE_PROPERTY_KEY, 
TestUtils.TABLE_TYPE).size();
+        assertEquals(vertexCount, 0);
+
+        vertexCount = getVertices(Constants.ENTITY_TYPE_PROPERTY_KEY, 
TestUtils.COLUMN_TYPE).size();
+        assertEquals(vertexCount, 0);
+    }
+
+    @Override
+    protected void assertVerticesDeleted(List<AtlasVertex> vertices) {
+        assertEquals(vertices.size(), 0);
+    }
+
+    @Override
+    protected void 
assertTestUpdateEntity_MultiplicityOneNonCompositeReference(String janeGuid) 
throws Exception {
+        // Verify that max is no longer a subordinate of jane.
+        ITypedReferenceableInstance jane = 
metadataService.getEntityDefinition(janeGuid);
+        List<ITypedReferenceableInstance> subordinates = 
(List<ITypedReferenceableInstance>) jane.get("subordinates");
+        Assert.assertEquals(subordinates.size(), 1);
+    }
+
+    @Override
+    protected void assertJohnForTestDisconnectBidirectionalReferences(final 
AtlasEntity.AtlasEntityWithExtInfo john, final String janeGuid) throws 
Exception {
+        assertNull(john.getEntity().getAttribute("manager"));
+    }
+
+    @Override
+    protected void 
assertMaxForTestDisconnectBidirectionalReferences(Map<String, String> 
nameGuidMap)
+        throws Exception {
+        // Verify that the Department.employees reference to the deleted 
employee
+        // was disconnected.
+        ITypedReferenceableInstance hrDept = 
metadataService.getEntityDefinition(nameGuidMap.get("hr"));
+        List<ITypedReferenceableInstance> employees = 
(List<ITypedReferenceableInstance>) hrDept.get("employees");
+        Assert.assertEquals(employees.size(), 3);
+        String maxGuid = nameGuidMap.get("Max");
+        for (ITypedReferenceableInstance employee : employees) {
+            Assert.assertNotEquals(employee.getId()._getId(), maxGuid);
+        }
+
+        // Verify that the Manager.subordinates reference to the deleted 
employee
+        // Max was disconnected.
+        ITypedReferenceableInstance jane = 
metadataService.getEntityDefinition(nameGuidMap.get("Jane"));
+        List<ITypedReferenceableInstance> subordinates = 
(List<ITypedReferenceableInstance>) jane.get("subordinates");
+        assertEquals(subordinates.size(), 1);
+
+        // Verify that max's Person.mentor unidirectional reference to john 
was disconnected.
+        ITypedReferenceableInstance john = 
metadataService.getEntityDefinition(nameGuidMap.get("John"));
+        assertNull(john.get("mentor"));
+    }
+
+    @Override
+    protected void 
assertTestDisconnectUnidirectionalArrayReferenceFromClassType(
+        List<AtlasObjectId> columns, String columnGuid) {
+        assertEquals(columns.size(), 2);
+        for (AtlasObjectId column : columns) {
+            assertFalse(column.getGuid().equals(columnGuid));
+        }
+    }
+
+    @Override
+    protected void 
assertTestDisconnectUnidirectionalArrayReferenceFromStructAndTraitTypes(String 
structContainerGuid)
+        throws Exception {
+        // Verify that the unidirectional references from the struct and trait 
instances
+        // to the deleted entities were disconnected.
+        ITypedReferenceableInstance structContainerConvertedEntity =
+            metadataService.getEntityDefinition(structContainerGuid);
+        ITypedStruct struct = (ITypedStruct) 
structContainerConvertedEntity.get("struct");
+        assertNull(struct.get("target"));
+        IStruct trait = structContainerConvertedEntity.getTrait("TestTrait");
+        assertNotNull(trait);
+        assertNull(trait.get("target"));
+    }
+}

Reply via email to