Fixing test failures due to code merge

This commit is contained in:
sureshms 2021-11-10 13:25:25 -08:00
parent 589067265f
commit aa83f7b1ad
2 changed files with 35 additions and 12 deletions

View File

@ -68,9 +68,11 @@ import java.io.UnsupportedEncodingException;
import java.security.GeneralSecurityException; import java.security.GeneralSecurityException;
import java.text.ParseException; import java.text.ParseException;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
import java.util.UUID; import java.util.UUID;
@Path("operations/v1/ingestion") @Path("operations/v1/ingestion")
@ -79,18 +81,22 @@ import java.util.UUID;
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
@Collection(name = "ingestion") @Collection(name = "ingestion")
public class IngestionResource { public class IngestionResource {
public static final String INGESTION_COLLECTION_PATH = "operations/v1/ingestion/"; public static final String COLLECTION_PATH = "operations/v1/ingestion/";
private final IngestionRepository dao; private final IngestionRepository dao;
private final CatalogAuthorizer authorizer; private final CatalogAuthorizer authorizer;
private AirflowRESTClient airflowRESTClient; private AirflowRESTClient airflowRESTClient;
private CatalogApplicationConfig config; private CatalogApplicationConfig config;
public static void addHref(UriInfo uriInfo, EntityReference ref) { public static void addHref(UriInfo uriInfo, EntityReference ref) {
ref.withHref(RestUtil.getHref(uriInfo, INGESTION_COLLECTION_PATH, ref.getId())); ref.withHref(RestUtil.getHref(uriInfo, COLLECTION_PATH, ref.getId()));
}
public static List<Ingestion> addHref(UriInfo uriInfo, List<Ingestion> ingestions) {
Optional.ofNullable(ingestions).orElse(Collections.emptyList()).forEach(i -> addHref(uriInfo, i));
return ingestions;
} }
public static Ingestion addHref(UriInfo uriInfo, Ingestion ingestion) { public static Ingestion addHref(UriInfo uriInfo, Ingestion ingestion) {
ingestion.setHref(RestUtil.getHref(uriInfo, INGESTION_COLLECTION_PATH, ingestion.getId()));
Entity.withHref(uriInfo, ingestion.getOwner()); Entity.withHref(uriInfo, ingestion.getOwner());
Entity.withHref(uriInfo, ingestion.getService()); Entity.withHref(uriInfo, ingestion.getService());
return ingestion; return ingestion;
@ -162,6 +168,7 @@ public class IngestionResource {
} else { // Forward paging or first page } else { // Forward paging or first page
ingestions = dao.listAfter(uriInfo, fields, null, limitParam, after); ingestions = dao.listAfter(uriInfo, fields, null, limitParam, after);
} }
addHref(uriInfo, ingestions.getData());
return ingestions; return ingestions;
} }
@ -198,7 +205,7 @@ public class IngestionResource {
schema = @Schema(type = "string", example = FIELDS)) schema = @Schema(type = "string", example = FIELDS))
@QueryParam("fields") String fieldsParam) throws IOException, ParseException { @QueryParam("fields") String fieldsParam) throws IOException, ParseException {
Fields fields = new Fields(FIELD_LIST, fieldsParam); Fields fields = new Fields(FIELD_LIST, fieldsParam);
return dao.get(uriInfo, id, fields); return addHref(uriInfo, dao.get(uriInfo, id, fields));
} }
@GET @GET
@ -238,7 +245,7 @@ public class IngestionResource {
schema = @Schema(type = "string", example = FIELDS)) schema = @Schema(type = "string", example = FIELDS))
@QueryParam("fields") String fieldsParam) throws IOException, ParseException { @QueryParam("fields") String fieldsParam) throws IOException, ParseException {
Fields fields = new Fields(FIELD_LIST, fieldsParam); Fields fields = new Fields(FIELD_LIST, fieldsParam);
return dao.getByName(uriInfo, fqn, fields); return addHref(uriInfo, dao.getByName(uriInfo, fqn, fields));
} }
@ -257,7 +264,7 @@ public class IngestionResource {
Ingestion ingestion = getIngestion(securityContext, create); Ingestion ingestion = getIngestion(securityContext, create);
deploy(ingestion); deploy(ingestion);
// write to db only when the deployment is successful // write to db only when the deployment is successful
ingestion = dao.create(uriInfo, ingestion); ingestion = addHref(uriInfo, dao.create(uriInfo, ingestion));
return Response.created(ingestion.getHref()).entity(ingestion).build(); return Response.created(ingestion.getHref()).entity(ingestion).build();
} }
@ -282,7 +289,8 @@ public class IngestionResource {
Ingestion ingestion = dao.get(uriInfo, id, fields); Ingestion ingestion = dao.get(uriInfo, id, fields);
SecurityUtil.checkAdminRoleOrPermissions(authorizer, securityContext, SecurityUtil.checkAdminRoleOrPermissions(authorizer, securityContext,
dao.getOwnerReference(ingestion)); dao.getOwnerReference(ingestion));
return dao.patch(uriInfo, UUID.fromString(id), securityContext.getUserPrincipal().getName(), patch); ingestion = dao.patch(uriInfo, UUID.fromString(id), securityContext.getUserPrincipal().getName(), patch);
return addHref(uriInfo, ingestion);
} }
@PUT @PUT
@ -301,6 +309,7 @@ public class IngestionResource {
deploy(ingestion); deploy(ingestion);
// write to db only when the deployment is successful // write to db only when the deployment is successful
PutResponse<Ingestion> response = dao.createOrUpdate(uriInfo, ingestion); PutResponse<Ingestion> response = dao.createOrUpdate(uriInfo, ingestion);
addHref(uriInfo, response.getEntity());
return response.toResponse(); return response.toResponse();
} }
@ -319,7 +328,7 @@ public class IngestionResource {
Fields fields = new Fields(FIELD_LIST, ""); Fields fields = new Fields(FIELD_LIST, "");
Ingestion ingestion = dao.get(uriInfo, id, fields); Ingestion ingestion = dao.get(uriInfo, id, fields);
airflowRESTClient.runPipeline(ingestion.getName()); airflowRESTClient.runPipeline(ingestion.getName());
return dao.get(uriInfo, id, fields); return addHref(uriInfo, dao.get(uriInfo, id, fields));
} }

View File

@ -636,7 +636,13 @@ public abstract class EntityResourceTest<T> extends CatalogApplicationTest {
T getEntity = getEntity(entityInterface.getId(), authHeaders); T getEntity = getEntity(entityInterface.getId(), authHeaders);
validateUpdatedEntity(getEntity, request, authHeaders); validateUpdatedEntity(getEntity, request, authHeaders);
validateChangeDescription(getEntity, updateType, changeDescription); validateChangeDescription(getEntity, updateType, changeDescription);
validateChangeEvents(entityInterface, updateType, authHeaders);
// Check if the entity change events are record
if (updateType != NO_CHANGE) {
EventType expectedEventType = updateType == UpdateType.CREATED ?
EventType.ENTITY_CREATED : EventType.ENTITY_UPDATED;
validateChangeEvents(entityInterface, expectedEventType, authHeaders);
}
return updated; return updated;
} }
@ -718,7 +724,12 @@ public abstract class EntityResourceTest<T> extends CatalogApplicationTest {
} }
} }
protected final void validateChangeEvents(EntityInterface<T> entityInterface, UpdateType updateType, /**
* This method validates the change event created after POST, PUT, and PATCH operations
* and ensures entityCreate, entityUpdated, and entityDeleted change events are created in the system with
* valid date.
*/
protected final void validateChangeEvents(EntityInterface<T> entityInterface, EventType expectedEventType,
Map<String, String> authHeaders) throws IOException { Map<String, String> authHeaders) throws IOException {
ResultList<ChangeEvent> changeEvents = getChangeEvents(entityName, entityName, null, ResultList<ChangeEvent> changeEvents = getChangeEvents(entityName, entityName, null,
entityInterface.getUpdatedAt(), authHeaders); entityInterface.getUpdatedAt(), authHeaders);
@ -727,6 +738,7 @@ public abstract class EntityResourceTest<T> extends CatalogApplicationTest {
// Top most changeEvent corresponds to the update // Top most changeEvent corresponds to the update
ChangeEvent changeEvent = changeEvents.getData().get(0); ChangeEvent changeEvent = changeEvents.getData().get(0);
assertEquals(expectedEventType, changeEvent.getEventType());
assertEquals(changeEvent.getDateTime().getTime(), entityInterface.getUpdatedAt().getTime()); assertEquals(changeEvent.getDateTime().getTime(), entityInterface.getUpdatedAt().getTime());
assertEquals(changeEvent.getEntityId(), entityInterface.getId()); assertEquals(changeEvent.getEntityId(), entityInterface.getId());
@ -734,13 +746,15 @@ public abstract class EntityResourceTest<T> extends CatalogApplicationTest {
assertEquals(changeEvent.getUserName(), entityInterface.getUpdatedBy()); assertEquals(changeEvent.getUserName(), entityInterface.getUpdatedBy());
assertEquals(changeEvent.getEntityType(), entityName); assertEquals(changeEvent.getEntityType(), entityName);
if (updateType == UpdateType.CREATED) { if (expectedEventType == EventType.ENTITY_CREATED) {
assertEquals(changeEvent.getEventType(), EventType.ENTITY_CREATED); assertEquals(changeEvent.getEventType(), EventType.ENTITY_CREATED);
assertEquals(changeEvent.getPreviousVersion(), 0.1); assertEquals(changeEvent.getPreviousVersion(), 0.1);
assertNull(changeEvent.getChangeDescription()); assertNull(changeEvent.getChangeDescription());
compareEntities(entityInterface.getEntity(), compareEntities(entityInterface.getEntity(),
JsonUtils.readValue((String)changeEvent.getEntity(), entityClass), authHeaders); JsonUtils.readValue((String)changeEvent.getEntity(), entityClass), authHeaders);
} else if (updateType == MINOR_UPDATE) { } else if (expectedEventType == EventType.ENTITY_UPDATED) {
// TODO
} else if (expectedEventType == EventType.ENTITY_DELETED) {
} }
} }