http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/96fb0e77/webapp/src/test/java/org/apache/atlas/web/resources/EntityJerseyResourceIT.java ---------------------------------------------------------------------- diff --git a/webapp/src/test/java/org/apache/atlas/web/resources/EntityJerseyResourceIT.java b/webapp/src/test/java/org/apache/atlas/web/resources/EntityJerseyResourceIT.java deleted file mode 100755 index f2af208..0000000 --- a/webapp/src/test/java/org/apache/atlas/web/resources/EntityJerseyResourceIT.java +++ /dev/null @@ -1,953 +0,0 @@ -/** - * 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.web.resources; - -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.fail; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; - -import org.apache.atlas.AtlasClient; -import org.apache.atlas.AtlasServiceException; -import org.apache.atlas.EntityAuditEvent; -import org.apache.atlas.model.instance.GuidMapping; -import org.apache.atlas.notification.NotificationConsumer; -import org.apache.atlas.notification.NotificationInterface; -import org.apache.atlas.notification.NotificationModule; -import org.apache.atlas.notification.entity.EntityNotification; -import org.apache.atlas.type.AtlasType; -import org.apache.atlas.typesystem.IStruct; -import org.apache.atlas.typesystem.Referenceable; -import org.apache.atlas.typesystem.Struct; -import org.apache.atlas.typesystem.TypesDef; -import org.apache.atlas.typesystem.json.InstanceSerialization; -import org.apache.atlas.typesystem.json.InstanceSerialization$; -import org.apache.atlas.typesystem.json.TypesSerialization; -import org.apache.atlas.typesystem.json.TypesSerialization$; -import org.apache.atlas.typesystem.persistence.Id; -import org.apache.atlas.typesystem.types.ClassType; -import org.apache.atlas.typesystem.types.DataTypes; -import org.apache.atlas.typesystem.types.EnumTypeDefinition; -import org.apache.atlas.typesystem.types.HierarchicalTypeDefinition; -import org.apache.atlas.typesystem.types.StructTypeDefinition; -import org.apache.atlas.typesystem.types.TraitType; -import org.apache.atlas.typesystem.types.utils.TypesUtil; -import org.apache.atlas.utils.AuthenticationUtil; -import org.apache.commons.lang.RandomStringUtils; -import org.codehaus.jettison.json.JSONArray; -import org.codehaus.jettison.json.JSONObject; -import org.joda.time.DateTime; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.testng.Assert; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.DataProvider; -import org.testng.annotations.Guice; -import org.testng.annotations.Test; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.gson.Gson; -import com.google.gson.JsonSyntaxException; -import com.google.inject.Inject; -import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.core.util.MultivaluedMapImpl; - - -/** - * Integration tests for Entity Jersey Resource. - */ -@Guice(modules = NotificationModule.class) -public class EntityJerseyResourceIT extends BaseResourceIT { - - private static final Logger LOG = LoggerFactory.getLogger(EntityJerseyResourceIT.class); - - private final String DATABASE_NAME = "db" + randomString(); - private final String TABLE_NAME = "table" + randomString(); - private static final String TRAITS = "traits"; - private Referenceable tableInstance; - private Id tableId; - private Id dbId; - private String traitName; - - @Inject - private NotificationInterface notificationInterface; - private NotificationConsumer<EntityNotification> notificationConsumer; - - @BeforeClass - public void setUp() throws Exception { - super.setUp(); - - createTypeDefinitionsV1(); - Referenceable HiveDBInstance = createHiveDBInstanceBuiltIn(DATABASE_NAME); - dbId = createInstance(HiveDBInstance); - - List<NotificationConsumer<EntityNotification>> consumers = - notificationInterface.createConsumers(NotificationInterface.NotificationType.ENTITIES, 1); - - notificationConsumer = consumers.iterator().next(); - } - - @Test - public void testCreateNestedEntities() throws Exception { - - Referenceable databaseInstance = new Referenceable(DATABASE_TYPE); - databaseInstance.set("name", "db1"); - databaseInstance.set("description", "foo database"); - - int nTables = 5; - int colsPerTable=3; - List<Referenceable> tables = new ArrayList<>(); - List<Referenceable> allColumns = new ArrayList<>(); - - for(int i = 0; i < nTables; i++) { - String tableName = "db1-table-" + i; - - Referenceable tableInstance = - new Referenceable(HIVE_TABLE_TYPE); - tableInstance.set("name", tableName); - tableInstance.set(AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, tableName); - tableInstance.set("db", databaseInstance); - tableInstance.set("description", tableName + " table"); - tables.add(tableInstance); - - List<Referenceable> columns = new ArrayList<>(); - for(int j = 0; j < colsPerTable; j++) { - Referenceable columnInstance = new Referenceable(COLUMN_TYPE); - columnInstance.set("name", tableName + "-col-" + j); - columnInstance.set("dataType", "String"); - columnInstance.set("comment", "column " + j + " for table " + i); - allColumns.add(columnInstance); - columns.add(columnInstance); - } - tableInstance.set("columns", columns); - } - - //Create the tables. The database and columns should be created automatically, since - //the tables reference them. - JSONArray entityArray = new JSONArray(tables.size()); - for(int i = 0; i < tables.size(); i++) { - Referenceable table = tables.get(i); - entityArray.put(InstanceSerialization.toJson(table, true)); - } - String json = entityArray.toString(); - - JSONObject response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.CREATE_ENTITY, json); - - GuidMapping guidMapping = AtlasType.fromJson(response.toString(), GuidMapping.class); - - Map<String,String> guidsCreated = guidMapping.getGuidAssignments(); - assertEquals(guidsCreated.size(), nTables * colsPerTable + nTables + 1); - assertNotNull(guidsCreated.get(databaseInstance.getId()._getId())); - for(Referenceable r : allColumns) { - assertNotNull(guidsCreated.get(r.getId()._getId())); - } - for(Referenceable r : tables) { - assertNotNull(guidsCreated.get(r.getId()._getId())); - } - } - - - @Test - public void testSubmitEntity() throws Exception { - tableInstance = createHiveTableInstanceBuiltIn(DATABASE_NAME, TABLE_NAME, dbId); - tableId = createInstance(tableInstance); - - final String guid = tableId._getId(); - try { - Assert.assertNotNull(UUID.fromString(guid)); - } catch (IllegalArgumentException e) { - Assert.fail("Response is not a guid, " + guid); - } - } - - @Test - public void testRequestUser() throws Exception { - Referenceable entity = new Referenceable(DATABASE_TYPE_BUILTIN); - String dbName = randomString(); - entity.set("name", dbName); - entity.set(QUALIFIED_NAME, dbName); - entity.set("clusterName", randomString()); - entity.set("description", randomString()); - entity.set(AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, dbName); - entity.set("owner", "user1"); - entity.set("clusterName", "cl1"); - entity.set("parameters", Collections.EMPTY_MAP); - entity.set("location", "/tmp"); - - - String user = "admin"; - AtlasClient localClient = null; - if (!AuthenticationUtil.isKerberosAuthenticationEnabled()) { - localClient = new AtlasClient(atlasUrls, new String[]{"admin", "admin"}); - } else { - localClient = new AtlasClient(atlasUrls); - } - String entityId = localClient.createEntity(entity).get(0); - - List<EntityAuditEvent> events = atlasClientV1.getEntityAuditEvents(entityId, (short) 10); - assertEquals(events.size(), 1); - assertEquals(events.get(0).getUser(), user); - } - - @Test - //API should accept single entity (or jsonarray of entities) - public void testSubmitSingleEntity() throws Exception { - Referenceable databaseInstance = new Referenceable(DATABASE_TYPE_BUILTIN); - String dbName = randomString(); - databaseInstance.set("name", dbName); - databaseInstance.set(QUALIFIED_NAME, dbName); - databaseInstance.set("clusterName", randomString()); - databaseInstance.set("description", randomString()); - databaseInstance.set(AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, dbName); - databaseInstance.set("owner", "user1"); - databaseInstance.set("clusterName", "cl1"); - databaseInstance.set("parameters", Collections.EMPTY_MAP); - databaseInstance.set("location", "/tmp"); - - JSONObject response = atlasClientV1 - .callAPIWithBody(AtlasClient.API.CREATE_ENTITY, InstanceSerialization.toJson(databaseInstance, true)); - assertNotNull(response); - Assert.assertNotNull(response.get(AtlasClient.REQUEST_ID)); - - AtlasClient.EntityResult entityResult = AtlasClient.EntityResult.fromString(response.toString()); - assertEquals(entityResult.getCreatedEntities().size(), 1); - assertNotNull(entityResult.getCreatedEntities().get(0)); - } - - @Test - public void testEntityDeduping() throws Exception { - final Referenceable db = new Referenceable(DATABASE_TYPE_BUILTIN); - final String dbName = "db" + randomString(); - Referenceable HiveDBInstance = createHiveDBInstanceBuiltIn(dbName); - Id dbIdReference = createInstance(HiveDBInstance); - final String dbId = dbIdReference._getId(); - - assertEntityAudit(dbId, EntityAuditEvent.EntityAuditAction.ENTITY_CREATE); - - waitForNotification(notificationConsumer, MAX_WAIT_TIME, new NotificationPredicate() { - @Override - public boolean evaluate(EntityNotification notification) throws Exception { - return notification != null && notification.getEntity().getId()._getId().equals(dbId); - } - }); - - JSONArray results = searchByDSL(String.format("%s where qualifiedName='%s'", DATABASE_TYPE_BUILTIN, dbName)); - assertEquals(results.length(), 1); - - //create entity again shouldn't create another instance with same unique attribute value - List<String> entityResults = atlasClientV1.createEntity(HiveDBInstance); - assertEquals(entityResults.size(), 0); - try { - waitForNotification(notificationConsumer, MAX_WAIT_TIME, new NotificationPredicate() { - @Override - public boolean evaluate(EntityNotification notification) throws Exception { - return notification != null && notification.getEntity().getId()._getId().equals(dbId); - } - }); - } catch (Exception e) { - //expected timeout - } - - results = searchByDSL(String.format("%s where qualifiedName='%s'", DATABASE_TYPE_BUILTIN, dbName)); - assertEquals(results.length(), 1); - - //Test the same across references - Referenceable table = new Referenceable(HIVE_TABLE_TYPE_BUILTIN); - final String tableName = randomString(); - Referenceable tableInstance = createHiveTableInstanceBuiltIn(DATABASE_NAME, tableName, dbIdReference); - atlasClientV1.createEntity(tableInstance); - results = searchByDSL(String.format("%s where qualifiedName='%s'", DATABASE_TYPE_BUILTIN, dbName)); - assertEquals(results.length(), 1); - } - - private void assertEntityAudit(String dbid, EntityAuditEvent.EntityAuditAction auditAction) - throws Exception { - List<EntityAuditEvent> events = atlasClientV1.getEntityAuditEvents(dbid, (short) 100); - for (EntityAuditEvent event : events) { - if (event.getAction() == auditAction) { - return; - } - } - fail("Expected audit event with action = " + auditAction); - } - - @Test - public void testEntityDefinitionAcrossTypeUpdate() throws Exception { - //create type - HierarchicalTypeDefinition<ClassType> typeDefinition = TypesUtil - .createClassTypeDef(randomString(), ImmutableSet.<String>of(), - TypesUtil.createUniqueRequiredAttrDef("name", DataTypes.STRING_TYPE)); - atlasClientV1.createType(TypesSerialization.toJson(typeDefinition, false)); - - //create entity for the type - Referenceable instance = new Referenceable(typeDefinition.typeName); - instance.set("name", randomString()); - String guid = atlasClientV1.createEntity(instance).get(0); - - //update type - add attribute - typeDefinition = TypesUtil.createClassTypeDef(typeDefinition.typeName, ImmutableSet.<String>of(), - TypesUtil.createUniqueRequiredAttrDef("name", DataTypes.STRING_TYPE), - TypesUtil.createOptionalAttrDef("description", DataTypes.STRING_TYPE)); - TypesDef typeDef = TypesUtil.getTypesDef(ImmutableList.<EnumTypeDefinition>of(), - ImmutableList.<StructTypeDefinition>of(), ImmutableList.<HierarchicalTypeDefinition<TraitType>>of(), - ImmutableList.of(typeDefinition)); - atlasClientV1.updateType(typeDef); - - //Get definition after type update - new attributes should be null - Referenceable entity = atlasClientV1.getEntity(guid); - Assert.assertNull(entity.get("description")); - Assert.assertEquals(entity.get("name"), instance.get("name")); - } - - @DataProvider - public Object[][] invalidAttrValues() { - return new Object[][]{{null}, {""}}; - } - - @Test(dataProvider = "invalidAttrValues") - public void testEntityInvalidValue(String value) throws Exception { - Referenceable databaseInstance = new Referenceable(DATABASE_TYPE_BUILTIN); - databaseInstance.set("name", randomString()); - databaseInstance.set("description", value); - - try { - createInstance(databaseInstance); - Assert.fail("Expected AtlasServiceException"); - } catch (AtlasServiceException e) { - Assert.assertEquals(e.getStatus(), ClientResponse.Status.BAD_REQUEST); - } - } - - @Test - public void testGetEntityByAttribute() throws Exception { - Referenceable db1 = new Referenceable(DATABASE_TYPE_BUILTIN); - String dbName = randomString(); - db1.set(NAME, dbName); - db1.set(DESCRIPTION, randomString()); - db1.set(AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, dbName); - db1.set("owner", "user1"); - db1.set(CLUSTER_NAME, "cl1"); - db1.set("parameters", Collections.EMPTY_MAP); - db1.set("location", "/tmp"); - createInstance(db1); - - //get entity by attribute - Referenceable referenceable = atlasClientV1.getEntity(DATABASE_TYPE_BUILTIN, QUALIFIED_NAME, dbName); - Assert.assertEquals(referenceable.getTypeName(), DATABASE_TYPE_BUILTIN); - Assert.assertEquals(referenceable.get(QUALIFIED_NAME), dbName); - } - - @Test - public void testSubmitEntityWithBadDateFormat() throws Exception { - try { - Referenceable tableInstance = createHiveTableInstanceBuiltIn("db" + randomString(), "table" + randomString(), dbId); - tableInstance.set("lastAccessTime", "2014-07-11"); - tableId = createInstance(tableInstance); - Assert.fail("Was expecting an exception here "); - } catch (AtlasServiceException e) { - Assert.assertTrue( - e.getMessage().contains("\"error\":\"Cannot convert value '2014-07-11' to datatype date\"")); - } - } - - @Test(dependsOnMethods = "testSubmitEntity") - public void testAddProperty() throws Exception { - final String guid = tableId._getId(); - //add property - String description = "bar table - new desc"; - addProperty(guid, "description", description); - - JSONObject response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.GET_ENTITY, null, guid); - Assert.assertNotNull(response); - - tableInstance.set("description", description); - - //invalid property for the type - try { - addProperty(guid, "invalid_property", "bar table"); - Assert.fail("Expected AtlasServiceException"); - } catch (AtlasServiceException e) { - Assert.assertEquals(e.getStatus().getStatusCode(), Response.Status.BAD_REQUEST.getStatusCode()); - } - - String currentTime = String.valueOf(new DateTime()); - - // updating date attribute as string not supported in v2 - // addProperty(guid, "createTime", currentTime); - - response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.GET_ENTITY, null, guid); - Assert.assertNotNull(response); - - tableInstance.set("createTime", currentTime); - } - - @Test(dependsOnMethods = "testSubmitEntity", expectedExceptions = IllegalArgumentException.class) - public void testAddNullProperty() throws Exception { - final String guid = tableId._getId(); - //add property - addProperty(guid, null, "foo bar"); - Assert.fail(); - } - - @Test(enabled = false) - public void testAddNullPropertyValue() throws Exception { - final String guid = tableId._getId(); - //add property - try { - addProperty(guid, "description", null); - Assert.fail("Expected AtlasServiceException"); - } catch(AtlasServiceException e) { - Assert.assertEquals(e.getStatus().getStatusCode(), Response.Status.BAD_REQUEST.getStatusCode()); - } - } - - @Test(dependsOnMethods = "testSubmitEntity") - public void testAddReferenceProperty() throws Exception { - //Create new db instance - Referenceable databaseInstance = new Referenceable(DATABASE_TYPE_BUILTIN); - String dbName = randomString(); - databaseInstance.set(NAME, dbName); - databaseInstance.set(QUALIFIED_NAME, dbName); - databaseInstance.set(CLUSTER_NAME, randomString()); - databaseInstance.set("description", "new database"); - databaseInstance.set(AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, dbName); - databaseInstance.set("owner", "user1"); - databaseInstance.set(CLUSTER_NAME, "cl1"); - databaseInstance.set("parameters", Collections.EMPTY_MAP); - databaseInstance.set("location", "/tmp"); - - Id dbInstance = createInstance(databaseInstance); - String dbId = dbInstance._getId(); - - //Add reference property - final String guid = tableId._getId(); - addProperty(guid, "db", dbId); - } - - @Test(dependsOnMethods = "testSubmitEntity") - public void testGetEntityDefinition() throws Exception { - final String guid = tableId._getId(); - JSONObject response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.GET_ENTITY, null, guid); - - Assert.assertNotNull(response); - Assert.assertNotNull(response.get(AtlasClient.REQUEST_ID)); - - final String definition = response.getString(AtlasClient.DEFINITION); - Assert.assertNotNull(definition); - LOG.debug("tableInstanceAfterGet = {}", definition); - InstanceSerialization.fromJsonReferenceable(definition, true); - } - - private void addProperty(String guid, String property, String value) throws AtlasServiceException { - AtlasClient.EntityResult entityResult = atlasClientV1.updateEntityAttribute(guid, property, value); - assertEquals(entityResult.getUpdateEntities().size(), 1); - assertEquals(entityResult.getUpdateEntities().get(0), guid); - } - - @Test(expectedExceptions = AtlasServiceException.class) - public void testGetInvalidEntityDefinition() throws Exception { - - JSONObject response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.GET_ENTITY, null, "blah"); - - Assert.assertNotNull(response); - - Assert.assertNotNull(response.get(AtlasClient.ERROR)); - } - - @Test(dependsOnMethods = "testSubmitEntity") - public void testGetEntityList() throws Exception { - List<String> entities = atlasClientV1.listEntities(HIVE_TABLE_TYPE_BUILTIN); - Assert.assertNotNull(entities); - Assert.assertTrue(entities.contains(tableId._getId())); - } - - @Test(expectedExceptions = AtlasServiceException.class) - public void testGetEntityListForBadEntityType() throws Exception { - MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl(); - queryParams.add("type", "blah"); - - JSONObject response = atlasClientV1.callAPIWithQueryParams(AtlasClient.API.GET_ENTITY, queryParams); - assertNotNull(response); - Assert.assertNotNull(response.get(AtlasClient.ERROR)); - } - - - @Test - public void testGetEntityListForNoInstances() throws Exception { - String typeName = addNewType(); - - MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl(); - queryParams.add("type", typeName); - - JSONObject response = atlasClientV1.callAPIWithQueryParams(AtlasClient.API.GET_ENTITY, queryParams); - assertNotNull(response); - Assert.assertNotNull(response.get(AtlasClient.REQUEST_ID)); - - final JSONArray list = response.getJSONArray(AtlasClient.RESULTS); - Assert.assertEquals(list.length(), 0); - } - - private String addNewType() throws Exception { - String typeName = "test" + randomString(); - HierarchicalTypeDefinition<ClassType> testTypeDefinition = TypesUtil - .createClassTypeDef(typeName, ImmutableSet.<String>of(), - TypesUtil.createRequiredAttrDef("name", DataTypes.STRING_TYPE), - TypesUtil.createRequiredAttrDef("description", DataTypes.STRING_TYPE)); - - String typesAsJSON = TypesSerialization.toJson(testTypeDefinition, false); - createType(typesAsJSON); - return typeName; - } - - @Test(dependsOnMethods = "testSubmitEntity") - public void testGetTraitNames() throws Exception { - final String guid = tableId._getId(); - - JSONObject response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.LIST_TRAITS, null, guid, TRAITS); - assertNotNull(response); - Assert.assertNotNull(response.get(AtlasClient.REQUEST_ID)); - - final JSONArray list = response.getJSONArray(AtlasClient.RESULTS); - Assert.assertEquals(list.length(), 7); - } - - @Test(dependsOnMethods = "testGetTraitNames") - public void testAddTrait() throws Exception { - traitName = "PII_Trait" + randomString(); - HierarchicalTypeDefinition<TraitType> piiTrait = - TypesUtil.createTraitTypeDef(traitName, ImmutableSet.<String>of()); - String traitDefinitionAsJSON = TypesSerialization$.MODULE$.toJson(piiTrait, true); - LOG.debug("traitDefinitionAsJSON = {}", traitDefinitionAsJSON); - createType(traitDefinitionAsJSON); - - Struct traitInstance = new Struct(traitName); - String traitInstanceAsJSON = InstanceSerialization.toJson(traitInstance, true); - LOG.debug("traitInstanceAsJSON = {}", traitInstanceAsJSON); - - final String guid = tableId._getId(); - JSONObject response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.ADD_TRAITS, traitInstanceAsJSON, guid, TRAITS); - assertNotNull(response); - Assert.assertNotNull(response.get(AtlasClient.REQUEST_ID)); - - assertEntityAudit(guid, EntityAuditEvent.EntityAuditAction.TAG_ADD); - } - - @Test(dependsOnMethods = "testSubmitEntity") - public void testgetTraitDefinitionForEntity() throws Exception{ - traitName = "PII_Trait" + randomString(); - HierarchicalTypeDefinition<TraitType> piiTrait = - TypesUtil.createTraitTypeDef(traitName, ImmutableSet.<String>of()); - String traitDefinitionAsJSON = TypesSerialization$.MODULE$.toJson(piiTrait, true); - LOG.debug("traitDefinitionAsJSON = {}", traitDefinitionAsJSON); - createType(traitDefinitionAsJSON); - - Struct traitInstance = new Struct(traitName); - String traitInstanceAsJSON = InstanceSerialization.toJson(traitInstance, true); - LOG.debug("traitInstanceAsJSON = {}", traitInstanceAsJSON); - - final String guid = tableId._getId(); - JSONObject response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.ADD_TRAITS, traitInstanceAsJSON, guid, TRAITS); - assertNotNull(response); - Struct traitDef = atlasClientV1.getTraitDefinition(guid, traitName); - System.out.println(traitDef.toString()); - JSONObject responseAsJSON = new JSONObject(InstanceSerialization.toJson(traitDef, true)); - Assert.assertEquals(responseAsJSON.get("typeName"), traitName); - - - List<Struct> allTraitDefs = atlasClientV1.listTraitDefinitions(guid); - System.out.println(allTraitDefs.toString()); - Assert.assertEquals(allTraitDefs.size(), 9); - } - - @Test(dependsOnMethods = "testAddTrait", expectedExceptions = AtlasServiceException.class) - public void testAddExistingTrait() throws Exception { - final String traitName = "PII_Trait" + randomString(); - - Struct traitInstance = new Struct(traitName); - String traitInstanceAsJSON = InstanceSerialization.toJson(traitInstance, true); - LOG.debug("traitInstanceAsJSON = {}", traitInstanceAsJSON); - - final String guid = tableId._getId(); - JSONObject response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.ADD_TRAITS, traitInstanceAsJSON, guid, TRAITS); - assertNotNull(response); - } - - @Test(dependsOnMethods = "testGetTraitNames") - public void testAddTraitWithAttribute() throws Exception { - final String traitName = "PII_Trait" + randomString(); - HierarchicalTypeDefinition<TraitType> piiTrait = TypesUtil - .createTraitTypeDef(traitName, ImmutableSet.<String>of(), - TypesUtil.createRequiredAttrDef("type", DataTypes.STRING_TYPE)); - String traitDefinitionAsJSON = TypesSerialization$.MODULE$.toJson(piiTrait, true); - LOG.debug("traitDefinitionAsJSON = {}", traitDefinitionAsJSON); - createType(traitDefinitionAsJSON); - - Struct traitInstance = new Struct(traitName); - traitInstance.set("type", "SSN"); - String traitInstanceAsJSON = InstanceSerialization.toJson(traitInstance, true); - LOG.debug("traitInstanceAsJSON = {}", traitInstanceAsJSON); - - final String guid = tableId._getId(); - JSONObject response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.ADD_TRAITS, traitInstanceAsJSON, guid, TRAITS); - assertNotNull(response); - Assert.assertNotNull(response.get(AtlasClient.REQUEST_ID)); - - // verify the response - response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.GET_ENTITY, null, guid); - Assert.assertNotNull(response.get(AtlasClient.REQUEST_ID)); - - final String definition = response.getString(AtlasClient.DEFINITION); - Assert.assertNotNull(definition); - Referenceable entityRef = InstanceSerialization.fromJsonReferenceable(definition, true); - IStruct traitRef = entityRef.getTrait(traitName); - String type = (String) traitRef.get("type"); - Assert.assertEquals(type, "SSN"); - } - - @Test(expectedExceptions = AtlasServiceException.class) - public void testAddTraitWithNoRegistration() throws Exception { - final String traitName = "PII_Trait" + randomString(); - HierarchicalTypeDefinition<TraitType> piiTrait = - TypesUtil.createTraitTypeDef(traitName, ImmutableSet.<String>of()); - String traitDefinitionAsJSON = TypesSerialization$.MODULE$.toJson(piiTrait, true); - LOG.debug("traitDefinitionAsJSON = {}", traitDefinitionAsJSON); - - Struct traitInstance = new Struct(traitName); - String traitInstanceAsJSON = InstanceSerialization$.MODULE$.toJson(traitInstance, true); - LOG.debug("traitInstanceAsJSON = {}", traitInstanceAsJSON); - - JSONObject response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.CREATE_ENTITY, traitInstanceAsJSON, "random", TRAITS); - } - - @Test(dependsOnMethods = "testAddTrait") - public void testDeleteTrait() throws Exception { - final String guid = tableId._getId(); - - JSONObject response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.DELETE_TRAITS, null, guid, TRAITS, traitName); - Assert.assertNotNull(response.get(AtlasClient.REQUEST_ID)); - Assert.assertNotNull(response.get("traitName")); - assertEntityAudit(guid, EntityAuditEvent.EntityAuditAction.TAG_DELETE); - } - - @Test(expectedExceptions = AtlasServiceException.class) - public void testDeleteTraitNonExistent() throws Exception { - final String traitName = "blah_trait"; - JSONObject response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.DELETE_TRAITS, null, "random", TRAITS); - - Assert.assertNotNull(response.get(AtlasClient.ERROR)); - Assert.assertEquals(response.getString(AtlasClient.ERROR), - "trait=" + traitName + " should be defined in type system before it can be deleted"); - } - - @Test(dependsOnMethods = "testSubmitEntity") - public void testDeleteExistentTraitNonExistentForEntity() throws Exception { - - final String guid = tableId._getId(); - final String traitName = "PII_Trait" + randomString(); - HierarchicalTypeDefinition<TraitType> piiTrait = TypesUtil - .createTraitTypeDef(traitName, ImmutableSet.<String>of(), - TypesUtil.createRequiredAttrDef("type", DataTypes.STRING_TYPE)); - String traitDefinitionAsJSON = TypesSerialization$.MODULE$.toJson(piiTrait, true); - createType(traitDefinitionAsJSON); - - try { - JSONObject response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.DELETE_TRAITS, null, guid, TRAITS, traitName); - fail("Call should've failed for deletion of invalid trait"); - } catch (AtlasServiceException e) { - assertNotNull(e); - assertNotNull(e.getStatus()); - assertEquals(e.getStatus(), ClientResponse.Status.NOT_FOUND); - } - } - - private String random() { - return RandomStringUtils.random(10); - } - - @Test - public void testUTF8() throws Exception { - //Type names cannot be arbitrary UTF8 characters. See org.apache.atlas.type.AtlasTypeUtil#validateType() - String classType = randomString(); - String attrName = random(); - String attrValue = random(); - - HierarchicalTypeDefinition<ClassType> classTypeDefinition = TypesUtil - .createClassTypeDef(classType, ImmutableSet.<String>of(), - TypesUtil.createUniqueRequiredAttrDef(attrName, DataTypes.STRING_TYPE)); - TypesDef typesDef = TypesUtil.getTypesDef(ImmutableList.<EnumTypeDefinition>of(), ImmutableList.<StructTypeDefinition>of(), - ImmutableList.<HierarchicalTypeDefinition<TraitType>>of(), - ImmutableList.of(classTypeDefinition)); - createType(typesDef); - - Referenceable instance = new Referenceable(classType); - instance.set(attrName, attrValue); - Id guid = createInstance(instance); - - JSONObject response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.GET_ENTITY, null, guid._getId()); - Referenceable getReferenceable = InstanceSerialization.fromJsonReferenceable(response.getString(AtlasClient.DEFINITION), true); - Assert.assertEquals(getReferenceable.get(attrName), attrValue); - } - - - @Test(dependsOnMethods = "testSubmitEntity") - public void testPartialUpdate() throws Exception { - String colName = "col1"+randomString(); - final List<Referenceable> columns = new ArrayList<>(); - Map<String, Object> values = new HashMap<>(); - values.put(NAME, colName); - values.put("comment", "col1 comment"); - values.put(QUALIFIED_NAME, "default.table.col1@"+colName); - values.put("comment", "col1 comment"); - values.put("type", "string"); - values.put("owner", "user1"); - values.put("position", 0); - values.put("description", "col1"); - values.put("table", tableId ); //table is a required reference, can't be null - - Referenceable ref = new Referenceable(BaseResourceIT.COLUMN_TYPE_BUILTIN, values); - columns.add(ref); - Referenceable tableUpdated = new Referenceable(BaseResourceIT.HIVE_TABLE_TYPE_BUILTIN, new HashMap<String, Object>() {{ - put("columns", columns); - }}); - - LOG.debug("Updating entity= {}", tableUpdated); - AtlasClient.EntityResult entityResult = atlasClientV1.updateEntity(tableId._getId(), tableUpdated); - assertEquals(entityResult.getUpdateEntities().size(), 1); - assertEquals(entityResult.getUpdateEntities().get(0), tableId._getId()); - - JSONObject response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.GET_ENTITY, null, tableId._getId()); - Referenceable getReferenceable = InstanceSerialization.fromJsonReferenceable(response.getString(AtlasClient.DEFINITION), true); - List<Referenceable> refs = (List<Referenceable>) getReferenceable.get("columns"); - - Assert.assertTrue(refs.get(0).equalsContents(columns.get(0))); - - //Update by unique attribute - values.put("type", "int"); - ref = new Referenceable(BaseResourceIT.COLUMN_TYPE_BUILTIN, values); - columns.set(0, ref); - tableUpdated = new Referenceable(BaseResourceIT.HIVE_TABLE_TYPE_BUILTIN, new HashMap<String, Object>() {{ - put("columns", columns); - }}); - - LOG.debug("Updating entity= {}", tableUpdated); - entityResult = atlasClientV1.updateEntity(BaseResourceIT.HIVE_TABLE_TYPE_BUILTIN, AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, - (String) tableInstance.get(QUALIFIED_NAME), tableUpdated); - assertEquals(entityResult.getUpdateEntities().size(), 2); - assertEquals(entityResult.getUpdateEntities().get(1), tableId._getId()); - - response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.GET_ENTITY, null, tableId._getId()); - getReferenceable = InstanceSerialization.fromJsonReferenceable(response.getString(AtlasClient.DEFINITION), true); - refs = (List<Referenceable>) getReferenceable.get("columns"); - - Assert.assertTrue(refs.get(0).getValuesMap().equals(values)); - Assert.assertEquals(refs.get(0).get("type"), "int"); - } - - @Test(dependsOnMethods = "testSubmitEntity") - public void testCompleteUpdate() throws Exception { - final List<Referenceable> columns = new ArrayList<>(); - Map<String, Object> values1 = new HashMap<>(); - values1.put(NAME, "col3"); - values1.put(QUALIFIED_NAME, "default.table.col3@cl1"); - values1.put("comment", "col3 comment"); - values1.put("type", "string"); - values1.put("owner", "user1"); - values1.put("position", 0); - values1.put("description", "col3"); - values1.put("table", tableId); - - - Map<String, Object> values2 = new HashMap<>(); - values2.put(NAME, "col4"); - values2.put(QUALIFIED_NAME, "default.table.col4@cl1"); - values2.put("comment", "col4 comment"); - values2.put("type", "string"); - values2.put("owner", "user2"); - values2.put("position", 1); - values2.put("description", "col4"); - values2.put("table", tableId); - - Referenceable ref1 = new Referenceable(BaseResourceIT.COLUMN_TYPE_BUILTIN, values1); - Referenceable ref2 = new Referenceable(BaseResourceIT.COLUMN_TYPE_BUILTIN, values2); - columns.add(ref1); - columns.add(ref2); - tableInstance.set("columns", columns); - String entityJson = InstanceSerialization.toJson(tableInstance, true); - JSONArray entityArray = new JSONArray(1); - entityArray.put(entityJson); - LOG.debug("Replacing entity= {}", tableInstance); - - JSONObject response = atlasClientV1.callAPIWithBody(AtlasClient.API.UPDATE_ENTITY, entityArray); - - // ATLAS-586: verify response entity can be parsed by GSON. - Gson gson = new Gson(); - try { - UpdateEntitiesResponse updateEntitiesResponse = gson.fromJson(response.toString(), UpdateEntitiesResponse.class); - } - catch (JsonSyntaxException e) { - Assert.fail("Response entity from not parse-able by GSON", e); - } - - response = atlasClientV1.callAPIWithBodyAndParams(AtlasClient.API.GET_ENTITY, null, tableId._getId()); - LOG.info("Response = {}", response.toString()); - Referenceable getReferenceable = InstanceSerialization.fromJsonReferenceable(response.getString(AtlasClient.DEFINITION), true); - List<Referenceable> refs = (List<Referenceable>) getReferenceable.get("columns"); - Assert.assertEquals(refs.size(), 2); - - Assert.assertTrue(refs.get(0).getValuesMap().equals(values1)); - Assert.assertTrue(refs.get(1).getValuesMap().equals(values2)); - } - - private static class UpdateEntitiesResponse { - String requestId; - AtlasClient.EntityResult entities; - AtlasEntity definition; - } - - private static class AtlasEntity { - String typeName; - final Map<String, Object> values = new HashMap<>(); - } - - @Test - public void testDeleteEntitiesViaRestApi() throws Exception { - // Create 2 database entities - Referenceable db1 = new Referenceable(DATABASE_TYPE_BUILTIN); - String dbName = randomString(); - db1.set(NAME, dbName); - db1.set(DESCRIPTION, randomString()); - db1.set(AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, dbName); - db1.set("owner", "user1"); - db1.set(CLUSTER_NAME, "cl1"); - db1.set("parameters", Collections.EMPTY_MAP); - db1.set("location", "/tmp"); - Id db1Id = createInstance(db1); - - Referenceable db2 = new Referenceable(DATABASE_TYPE_BUILTIN); - String dbName2 = randomString(); - db2.set(NAME, dbName2); - db2.set(QUALIFIED_NAME, dbName2); - db2.set(CLUSTER_NAME, randomString()); - db2.set(DESCRIPTION, randomString()); - db2.set(AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, dbName2); - db2.set("owner", "user2"); - db2.set(CLUSTER_NAME, "cl1"); - db2.set("parameters", Collections.EMPTY_MAP); - db2.set("location", "/tmp"); - Id db2Id = createInstance(db2); - - // Delete the database entities - MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl(); - queryParams.add(AtlasClient.GUID.toLowerCase(), db1Id._getId()); - queryParams.add(AtlasClient.GUID.toLowerCase(), db2Id._getId()); - - JSONObject response = atlasClientV1.callAPIWithQueryParams(AtlasClient.API.DELETE_ENTITIES, queryParams); - List<String> deletedGuidsList = AtlasClient.EntityResult.fromString(response.toString()).getDeletedEntities(); - Assert.assertTrue(deletedGuidsList.contains(db1Id._getId())); - Assert.assertTrue(deletedGuidsList.contains(db2Id._getId())); - - // Verify entities were deleted from the repository. - for (String guid : deletedGuidsList) { - Referenceable entity = atlasClientV1.getEntity(guid); - assertEquals(entity.getId().getState(), Id.EntityState.DELETED); - } - } - - @Test - public void testDeleteEntitiesViaClientApi() throws Exception { - // Create 2 database entities - Referenceable db1 = new Referenceable(DATABASE_TYPE_BUILTIN); - String dbName = randomString(); - db1.set("name", dbName); - db1.set("description", randomString()); - db1.set(AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, dbName); - db1.set("owner", "user1"); - db1.set(CLUSTER_NAME, "cl1"); - db1.set("parameters", Collections.EMPTY_MAP); - db1.set("location", "/tmp"); - Id db1Id = createInstance(db1); - Referenceable db2 = new Referenceable(DATABASE_TYPE_BUILTIN); - String dbName2 = randomString(); - db2.set("name", dbName2); - db2.set(QUALIFIED_NAME, dbName2); - db2.set(CLUSTER_NAME, randomString()); - db2.set("description", randomString()); - db2.set(AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, dbName2); - db2.set("owner", "user2"); - db2.set("clusterName", "cl1"); - db2.set("parameters", Collections.EMPTY_MAP); - db2.set("location", "/tmp"); - Id db2Id = createInstance(db2); - - // Delete the database entities - List<String> deletedGuidsList = - atlasClientV1.deleteEntities(db1Id._getId(), db2Id._getId()).getDeletedEntities(); - // Verify that deleteEntities() response has database entity guids - Assert.assertEquals(deletedGuidsList.size(), 2); - Assert.assertTrue(deletedGuidsList.contains(db1Id._getId())); - Assert.assertTrue(deletedGuidsList.contains(db2Id._getId())); - - // Verify entities were deleted from the repository. - for (String guid : deletedGuidsList) { - Referenceable entity = atlasClientV1.getEntity(guid); - assertEquals(entity.getId().getState(), Id.EntityState.DELETED); - } - } - - @Test - public void testDeleteEntityByUniqAttribute() throws Exception { - // Create database entity - Referenceable db1 = new Referenceable(DATABASE_TYPE_BUILTIN); - String dbName = randomString(); - db1.set(NAME, dbName); - db1.set(QUALIFIED_NAME, dbName); - db1.set(CLUSTER_NAME, randomString()); - db1.set(DESCRIPTION, randomString()); - db1.set(AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, dbName); - db1.set("owner", "user1"); - db1.set(CLUSTER_NAME, "cl1"); - db1.set("parameters", Collections.EMPTY_MAP); - db1.set("location", "/tmp"); - Id db1Id = createInstance(db1); - - // Delete the database entity - List<String> deletedGuidsList = atlasClientV1.deleteEntity(DATABASE_TYPE_BUILTIN, QUALIFIED_NAME, dbName).getDeletedEntities(); - - // Verify that deleteEntities() response has database entity guids - Assert.assertEquals(deletedGuidsList.size(), 1); - Assert.assertTrue(deletedGuidsList.contains(db1Id._getId())); - - // Verify entities were deleted from the repository. - for (String guid : deletedGuidsList) { - Referenceable entity = atlasClientV1.getEntity(guid); - assertEquals(entity.getId().getState(), Id.EntityState.DELETED); - } - } - -}
http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/96fb0e77/webapp/src/test/java/org/apache/atlas/web/resources/EntityLineageJerseyResourceIT.java ---------------------------------------------------------------------- diff --git a/webapp/src/test/java/org/apache/atlas/web/resources/EntityLineageJerseyResourceIT.java b/webapp/src/test/java/org/apache/atlas/web/resources/EntityLineageJerseyResourceIT.java deleted file mode 100644 index 4f8badf..0000000 --- a/webapp/src/test/java/org/apache/atlas/web/resources/EntityLineageJerseyResourceIT.java +++ /dev/null @@ -1,190 +0,0 @@ -/** - * 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. - */ - -package org.apache.atlas.web.resources; - -import com.google.common.collect.ImmutableList; -import com.google.gson.Gson; -import com.sun.jersey.core.util.MultivaluedMapImpl; -import org.apache.atlas.AtlasClient; -import org.apache.atlas.model.instance.AtlasEntityHeader; -import org.apache.atlas.model.lineage.AtlasLineageInfo; -import org.apache.atlas.typesystem.Referenceable; -import org.apache.atlas.typesystem.persistence.Id; -import org.codehaus.jettison.json.JSONObject; -import org.testng.Assert; -import org.testng.annotations.BeforeClass; -import org.testng.annotations.Test; - -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static org.apache.atlas.AtlasBaseClient.APIInfo; - -/** - * Entity Lineage v2 Integration Tests. - */ -public class EntityLineageJerseyResourceIT extends DataSetLineageJerseyResourceIT { - private static final String BASE_URI = "api/atlas/v2/lineage"; - private static final APIInfo LINEAGE_V2_API = new APIInfo(BASE_URI, "GET", Response.Status.OK); - private static final String INPUT_DIRECTION = "INPUT"; - private static final String OUTPUT_DIRECTION = "OUTPUT"; - private static final String BOTH_DIRECTION = "BOTH"; - private static final String DIRECTION_PARAM = "direction"; - private static final String DEPTH_PARAM = "depth"; - - private String salesFactTable; - private String salesMonthlyTable; - private String salesDBName; - Gson gson = new Gson(); - - @BeforeClass - public void setUp() throws Exception { - super.setUp(); - - createTypeDefinitionsV1(); - setupInstances(); - } - - @Test - public void testInputLineageInfo() throws Exception { - String tableId = atlasClientV1.getEntity(HIVE_TABLE_TYPE, - AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, salesMonthlyTable).getId()._getId(); - - MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl(); - queryParams.add(DIRECTION_PARAM, INPUT_DIRECTION); - queryParams.add(DEPTH_PARAM, "5"); - JSONObject response = atlasClientV1.callAPI(LINEAGE_V2_API, JSONObject.class, queryParams, tableId); - Assert.assertNotNull(response); - System.out.println("input lineage info = " + response - ); - - AtlasLineageInfo inputLineageInfo = gson.fromJson(response.toString(), AtlasLineageInfo.class); - - Map<String, AtlasEntityHeader> entities = inputLineageInfo.getGuidEntityMap(); - Assert.assertNotNull(entities); - - Set<AtlasLineageInfo.LineageRelation> relations = inputLineageInfo.getRelations(); - Assert.assertNotNull(relations); - - Assert.assertEquals(entities.size(), 6); - Assert.assertEquals(relations.size(), 5); - Assert.assertEquals(inputLineageInfo.getLineageDirection(), AtlasLineageInfo.LineageDirection.INPUT); - Assert.assertEquals(inputLineageInfo.getLineageDepth(), 5); - Assert.assertEquals(inputLineageInfo.getBaseEntityGuid(), tableId); - } - - @Test - public void testOutputLineageInfo() throws Exception { - String tableId = atlasClientV1.getEntity(HIVE_TABLE_TYPE, - AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, salesFactTable).getId()._getId(); - - MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl(); - queryParams.add(DIRECTION_PARAM, OUTPUT_DIRECTION); - queryParams.add(DEPTH_PARAM, "5"); - JSONObject response = atlasClientV1.callAPI(LINEAGE_V2_API, JSONObject.class, queryParams, tableId); - - Assert.assertNotNull(response); - System.out.println("output lineage info = " + response); - - AtlasLineageInfo outputLineageInfo = gson.fromJson(response.toString(), AtlasLineageInfo.class); - - Map<String, AtlasEntityHeader> entities = outputLineageInfo.getGuidEntityMap(); - Assert.assertNotNull(entities); - - Set<AtlasLineageInfo.LineageRelation> relations = outputLineageInfo.getRelations(); - Assert.assertNotNull(relations); - - Assert.assertEquals(entities.size(), 5); - Assert.assertEquals(relations.size(), 4); - Assert.assertEquals(outputLineageInfo.getLineageDirection(), AtlasLineageInfo.LineageDirection.OUTPUT); - Assert.assertEquals(outputLineageInfo.getLineageDepth(), 5); - Assert.assertEquals(outputLineageInfo.getBaseEntityGuid(), tableId); - } - - @Test - public void testLineageInfo() throws Exception { - String tableId = atlasClientV1.getEntity(HIVE_TABLE_TYPE, - AtlasClient.REFERENCEABLE_ATTRIBUTE_NAME, salesMonthlyTable).getId()._getId(); - - MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl(); - queryParams.add(DIRECTION_PARAM, BOTH_DIRECTION); - queryParams.add(DEPTH_PARAM, "5"); - JSONObject response = atlasClientV1.callAPI(LINEAGE_V2_API, JSONObject.class, queryParams, tableId); - - Assert.assertNotNull(response); - System.out.println("both lineage info = " + response); - - AtlasLineageInfo bothLineageInfo = gson.fromJson(response.toString(), AtlasLineageInfo.class); - - Map<String, AtlasEntityHeader> entities = bothLineageInfo.getGuidEntityMap(); - Assert.assertNotNull(entities); - - Set<AtlasLineageInfo.LineageRelation> relations = bothLineageInfo.getRelations(); - Assert.assertNotNull(relations); - - Assert.assertEquals(entities.size(), 6); - Assert.assertEquals(relations.size(), 5); - Assert.assertEquals(bothLineageInfo.getLineageDirection(), AtlasLineageInfo.LineageDirection.BOTH); - Assert.assertEquals(bothLineageInfo.getLineageDepth(), 5); - Assert.assertEquals(bothLineageInfo.getBaseEntityGuid(), tableId); - } - - private void setupInstances() throws Exception { - salesDBName = "Sales" + randomString(); - Id salesDB = database(salesDBName, "Sales Database", "John ETL", "hdfs://host:8000/apps/warehouse/sales"); - - List<Referenceable> salesFactColumns = ImmutableList - .of(column("time_id", "int", "time id"), column("product_id", "int", "product id"), - column("customer_id", "int", "customer id"), - column("sales", "double", "product id")); - - salesFactTable = "sales_fact" + randomString(); - Id salesFact = table(salesFactTable, "sales fact table", salesDB, "Joe", "MANAGED", salesFactColumns); - - List<Referenceable> timeDimColumns = ImmutableList - .of(column("time_id", "int", "time id"), column("dayOfYear", "int", "day Of Year"), - column("weekDay", "int", "week Day")); - - Id timeDim = - table("time_dim" + randomString(), "time dimension table", salesDB, "John Doe", "EXTERNAL", - timeDimColumns); - - Id reportingDB = - database("Reporting" + randomString(), "reporting database", "Jane BI", - "hdfs://host:8000/apps/warehouse/reporting"); - - Id salesFactDaily = - table("sales_fact_daily_mv" + randomString(), "sales fact daily materialized view", reportingDB, - "Joe BI", "MANAGED", salesFactColumns); - - loadProcess("loadSalesDaily" + randomString(), "John ETL", ImmutableList.of(salesFact, timeDim), - ImmutableList.of(salesFactDaily), "create table as select ", "plan", "id", "graph"); - - salesMonthlyTable = "sales_fact_monthly_mv" + randomString(); - Id salesFactMonthly = - table(salesMonthlyTable, "sales fact monthly materialized view", reportingDB, "Jane BI", - "MANAGED", salesFactColumns); - - loadProcess("loadSalesMonthly" + randomString(), "John ETL", ImmutableList.of(salesFactDaily), - ImmutableList.of(salesFactMonthly), "create table as select ", "plan", "id", "graph"); - } -} http://git-wip-us.apache.org/repos/asf/incubator-atlas/blob/96fb0e77/webapp/src/test/java/org/apache/atlas/web/resources/EntityResourceTest.java ---------------------------------------------------------------------- diff --git a/webapp/src/test/java/org/apache/atlas/web/resources/EntityResourceTest.java b/webapp/src/test/java/org/apache/atlas/web/resources/EntityResourceTest.java index 21060d1..ff8cb59 100644 --- a/webapp/src/test/java/org/apache/atlas/web/resources/EntityResourceTest.java +++ b/webapp/src/test/java/org/apache/atlas/web/resources/EntityResourceTest.java @@ -17,33 +17,23 @@ */ package org.apache.atlas.web.resources; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import javax.ws.rs.core.Response; - -import com.vividsolutions.jts.util.CollectionUtil; -import org.apache.atlas.AtlasClient.EntityResult; import org.apache.atlas.model.instance.AtlasEntityHeader; import org.apache.atlas.model.instance.EntityMutationResponse; import org.apache.atlas.model.instance.EntityMutations; -import org.apache.atlas.repository.converters.AtlasInstanceConverter; import org.apache.atlas.repository.store.graph.AtlasEntityStore; -import org.apache.atlas.services.MetadataService; -import org.apache.atlas.type.AtlasTypeRegistry; import org.apache.commons.collections.CollectionUtils; -import org.mockito.Matchers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import static org.mockito.Mockito.when; + /** * Unit test of {@link EntityResource} */
