mirror of
				https://github.com/open-metadata/OpenMetadata.git
				synced 2025-10-31 02:29:03 +00:00 
			
		
		
		
	
							parent
							
								
									b4d56bb559
								
							
						
					
					
						commit
						d978580703
					
				| @ -41,6 +41,7 @@ import org.slf4j.LoggerFactory; | |||||||
| public class CatalogGenericExceptionMapper implements ExceptionMapper<Throwable> { | public class CatalogGenericExceptionMapper implements ExceptionMapper<Throwable> { | ||||||
|   @Override |   @Override | ||||||
|   public Response toResponse(Throwable ex) { |   public Response toResponse(Throwable ex) { | ||||||
|  |     ex.printStackTrace(); | ||||||
|     LOG.debug(ex.getMessage()); |     LOG.debug(ex.getMessage()); | ||||||
|     if (ex instanceof ProcessingException |     if (ex instanceof ProcessingException | ||||||
|         || ex instanceof IllegalArgumentException |         || ex instanceof IllegalArgumentException | ||||||
|  | |||||||
| @ -88,10 +88,10 @@ public class UsageRepository { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @Transaction |   @Transaction | ||||||
|   public RestUtil.PutResponse<?> createOrUpdate(String entityType, String id, DailyCount usage) throws IOException { |   public RestUtil.PutResponse<?> createOrUpdate(String entityType, UUID id, DailyCount usage) throws IOException { | ||||||
|     // Validate data entity for which usage is being collected |     // Validate data entity for which usage is being collected | ||||||
|     Entity.getEntityReferenceById(entityType, UUID.fromString(id), Include.NON_DELETED); |     Entity.getEntityReferenceById(entityType, id, Include.NON_DELETED); | ||||||
|     return addUsage(PUT, entityType, id, usage); |     return addUsage(PUT, entityType, id.toString(), usage); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @Transaction |   @Transaction | ||||||
|  | |||||||
| @ -494,7 +494,6 @@ public class SearchResource { | |||||||
|   @Operation( |   @Operation( | ||||||
|       operationId = "getAllReindexBatchJobs", |       operationId = "getAllReindexBatchJobs", | ||||||
|       summary = "Get all reindex batch jobs", |       summary = "Get all reindex batch jobs", | ||||||
|       tags = "search", |  | ||||||
|       description = "Get all reindex batch jobs", |       description = "Get all reindex batch jobs", | ||||||
|       responses = { |       responses = { | ||||||
|         @ApiResponse(responseCode = "200", description = "Success"), |         @ApiResponse(responseCode = "200", description = "Success"), | ||||||
|  | |||||||
| @ -22,6 +22,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; | |||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| import java.util.Date; | import java.util.Date; | ||||||
| import java.util.Objects; | import java.util.Objects; | ||||||
|  | import java.util.UUID; | ||||||
| import javax.validation.Valid; | import javax.validation.Valid; | ||||||
| import javax.ws.rs.Consumes; | import javax.ws.rs.Consumes; | ||||||
| import javax.ws.rs.GET; | import javax.ws.rs.GET; | ||||||
| @ -34,15 +35,20 @@ import javax.ws.rs.QueryParam; | |||||||
| import javax.ws.rs.core.Context; | import javax.ws.rs.core.Context; | ||||||
| import javax.ws.rs.core.MediaType; | import javax.ws.rs.core.MediaType; | ||||||
| import javax.ws.rs.core.Response; | import javax.ws.rs.core.Response; | ||||||
|  | import javax.ws.rs.core.SecurityContext; | ||||||
| import javax.ws.rs.core.UriInfo; | import javax.ws.rs.core.UriInfo; | ||||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||||
| import org.openmetadata.schema.type.DailyCount; | import org.openmetadata.schema.type.DailyCount; | ||||||
| import org.openmetadata.schema.type.EntityUsage; | import org.openmetadata.schema.type.EntityUsage; | ||||||
|  | import org.openmetadata.schema.type.MetadataOperation; | ||||||
| import org.openmetadata.service.Entity; | import org.openmetadata.service.Entity; | ||||||
| import org.openmetadata.service.jdbi3.CollectionDAO; | import org.openmetadata.service.jdbi3.CollectionDAO; | ||||||
| import org.openmetadata.service.jdbi3.UsageRepository; | import org.openmetadata.service.jdbi3.UsageRepository; | ||||||
| import org.openmetadata.service.resources.Collection; | import org.openmetadata.service.resources.Collection; | ||||||
|  | import org.openmetadata.service.resources.EntityResource; | ||||||
| import org.openmetadata.service.security.Authorizer; | import org.openmetadata.service.security.Authorizer; | ||||||
|  | import org.openmetadata.service.security.policyevaluator.OperationContext; | ||||||
|  | import org.openmetadata.service.security.policyevaluator.ResourceContext; | ||||||
| import org.openmetadata.service.util.RestUtil; | import org.openmetadata.service.util.RestUtil; | ||||||
| 
 | 
 | ||||||
| @Slf4j | @Slf4j | ||||||
| @ -53,9 +59,11 @@ import org.openmetadata.service.util.RestUtil; | |||||||
| @Collection(name = "usage") | @Collection(name = "usage") | ||||||
| public class UsageResource { | public class UsageResource { | ||||||
|   private final UsageRepository dao; |   private final UsageRepository dao; | ||||||
|  |   private final Authorizer authorizer; | ||||||
| 
 | 
 | ||||||
|   public UsageResource(CollectionDAO dao, Authorizer authorizer) { |   public UsageResource(CollectionDAO dao, Authorizer authorizer) { | ||||||
|     Objects.requireNonNull(dao, "UsageRepository must not be null"); |     Objects.requireNonNull(dao, "UsageRepository must not be null"); | ||||||
|  |     this.authorizer = authorizer; | ||||||
|     this.dao = new UsageRepository(dao); |     this.dao = new UsageRepository(dao); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -75,6 +83,7 @@ public class UsageResource { | |||||||
|       }) |       }) | ||||||
|   public EntityUsage get( |   public EntityUsage get( | ||||||
|       @Context UriInfo uriInfo, |       @Context UriInfo uriInfo, | ||||||
|  |       @Context SecurityContext securityContext, | ||||||
|       @Parameter( |       @Parameter( | ||||||
|               description = "Entity type for which usage is requested", |               description = "Entity type for which usage is requested", | ||||||
|               required = true, |               required = true, | ||||||
| @ -93,7 +102,10 @@ public class UsageResource { | |||||||
|           @QueryParam("date") |           @QueryParam("date") | ||||||
|           String date) |           String date) | ||||||
|       throws IOException { |       throws IOException { | ||||||
|     // TODO add href |     OperationContext operationContext = new OperationContext(entity, MetadataOperation.VIEW_USAGE); | ||||||
|  |     ResourceContext resourceContext = | ||||||
|  |         EntityResource.getResourceContext(entity, Entity.getEntityRepository(entity)).build(); | ||||||
|  |     authorizer.authorize(securityContext, operationContext, resourceContext); | ||||||
|     int actualDays = Math.min(Math.max(days, 1), 30); |     int actualDays = Math.min(Math.max(days, 1), 30); | ||||||
|     String actualDate = date == null ? RestUtil.DATE_FORMAT.format(new Date()) : date; |     String actualDate = date == null ? RestUtil.DATE_FORMAT.format(new Date()) : date; | ||||||
|     return addHref(uriInfo, dao.get(entity, id, actualDate, actualDays)); |     return addHref(uriInfo, dao.get(entity, id, actualDate, actualDays)); | ||||||
| @ -115,6 +127,7 @@ public class UsageResource { | |||||||
|       }) |       }) | ||||||
|   public EntityUsage getByName( |   public EntityUsage getByName( | ||||||
|       @Context UriInfo uriInfo, |       @Context UriInfo uriInfo, | ||||||
|  |       @Context SecurityContext securityContext, | ||||||
|       @Parameter( |       @Parameter( | ||||||
|               description = "Entity type for which usage is requested", |               description = "Entity type for which usage is requested", | ||||||
|               required = true, |               required = true, | ||||||
| @ -135,8 +148,12 @@ public class UsageResource { | |||||||
|               description = |               description = | ||||||
|                   "Usage for number of days going back from this date in ISO 8601 format " + "(default = currentDate)") |                   "Usage for number of days going back from this date in ISO 8601 format " + "(default = currentDate)") | ||||||
|           @QueryParam("date") |           @QueryParam("date") | ||||||
|           String date) { |           String date) | ||||||
|     // TODO add href |       throws IOException { | ||||||
|  |     OperationContext operationContext = new OperationContext(entity, MetadataOperation.VIEW_USAGE); | ||||||
|  |     ResourceContext resourceContext = | ||||||
|  |         EntityResource.getResourceContext(entity, Entity.getEntityRepository(entity)).name(fqn).build(); | ||||||
|  |     authorizer.authorize(securityContext, operationContext, resourceContext); | ||||||
|     int actualDays = Math.min(Math.max(days, 1), 30); |     int actualDays = Math.min(Math.max(days, 1), 30); | ||||||
|     String actualDate = date == null ? RestUtil.DATE_FORMAT.format(new Date()) : date; |     String actualDate = date == null ? RestUtil.DATE_FORMAT.format(new Date()) : date; | ||||||
|     return addHref(uriInfo, dao.getByName(entity, fqn, actualDate, actualDays)); |     return addHref(uriInfo, dao.getByName(entity, fqn, actualDate, actualDays)); | ||||||
| @ -159,6 +176,7 @@ public class UsageResource { | |||||||
|       }) |       }) | ||||||
|   public Response create( |   public Response create( | ||||||
|       @Context UriInfo uriInfo, |       @Context UriInfo uriInfo, | ||||||
|  |       @Context SecurityContext securityContext, | ||||||
|       @Parameter( |       @Parameter( | ||||||
|               description = "Entity type for which usage is reported", |               description = "Entity type for which usage is reported", | ||||||
|               required = true, |               required = true, | ||||||
| @ -169,6 +187,10 @@ public class UsageResource { | |||||||
|           String id, |           String id, | ||||||
|       @Parameter(description = "Usage information a given date") @Valid DailyCount usage) |       @Parameter(description = "Usage information a given date") @Valid DailyCount usage) | ||||||
|       throws IOException { |       throws IOException { | ||||||
|  |     OperationContext operationContext = new OperationContext(entity, MetadataOperation.EDIT_USAGE); | ||||||
|  |     ResourceContext resourceContext = | ||||||
|  |         EntityResource.getResourceContext(entity, Entity.getEntityRepository(entity)).build(); | ||||||
|  |     authorizer.authorize(securityContext, operationContext, resourceContext); | ||||||
|     return dao.create(entity, id, usage).toResponse(); |     return dao.create(entity, id, usage).toResponse(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -189,6 +211,7 @@ public class UsageResource { | |||||||
|       }) |       }) | ||||||
|   public Response createOrUpdate( |   public Response createOrUpdate( | ||||||
|       @Context UriInfo uriInfo, |       @Context UriInfo uriInfo, | ||||||
|  |       @Context SecurityContext securityContext, | ||||||
|       @Parameter( |       @Parameter( | ||||||
|               description = "Entity type for which usage is reported", |               description = "Entity type for which usage is reported", | ||||||
|               required = true, |               required = true, | ||||||
| @ -196,9 +219,13 @@ public class UsageResource { | |||||||
|           @PathParam("entity") |           @PathParam("entity") | ||||||
|           String entity, |           String entity, | ||||||
|       @Parameter(description = "Entity id", required = true, schema = @Schema(type = "string")) @PathParam("id") |       @Parameter(description = "Entity id", required = true, schema = @Schema(type = "string")) @PathParam("id") | ||||||
|           String id, |           UUID id, | ||||||
|       @Parameter(description = "Usage information a given date") @Valid DailyCount usage) |       @Parameter(description = "Usage information a given date") @Valid DailyCount usage) | ||||||
|       throws IOException { |       throws IOException { | ||||||
|  |     OperationContext operationContext = new OperationContext(entity, MetadataOperation.EDIT_USAGE); | ||||||
|  |     ResourceContext resourceContext = | ||||||
|  |         EntityResource.getResourceContext(entity, Entity.getEntityRepository(entity)).id(id).build(); | ||||||
|  |     authorizer.authorize(securityContext, operationContext, resourceContext); | ||||||
|     return dao.createOrUpdate(entity, id, usage).toResponse(); |     return dao.createOrUpdate(entity, id, usage).toResponse(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -219,6 +246,7 @@ public class UsageResource { | |||||||
|       }) |       }) | ||||||
|   public Response createByName( |   public Response createByName( | ||||||
|       @Context UriInfo uriInfo, |       @Context UriInfo uriInfo, | ||||||
|  |       @Context SecurityContext securityContext, | ||||||
|       @Parameter( |       @Parameter( | ||||||
|               description = "Entity type for which usage is reported", |               description = "Entity type for which usage is reported", | ||||||
|               required = true, |               required = true, | ||||||
| @ -233,6 +261,10 @@ public class UsageResource { | |||||||
|           String fullyQualifiedName, |           String fullyQualifiedName, | ||||||
|       @Parameter(description = "Usage information a given date") @Valid DailyCount usage) |       @Parameter(description = "Usage information a given date") @Valid DailyCount usage) | ||||||
|       throws IOException { |       throws IOException { | ||||||
|  |     OperationContext operationContext = new OperationContext(entity, MetadataOperation.EDIT_USAGE); | ||||||
|  |     ResourceContext resourceContext = | ||||||
|  |         EntityResource.getResourceContext(entity, Entity.getEntityRepository(entity)).name(fullyQualifiedName).build(); | ||||||
|  |     authorizer.authorize(securityContext, operationContext, resourceContext); | ||||||
|     return dao.createByName(entity, fullyQualifiedName, usage).toResponse(); |     return dao.createByName(entity, fullyQualifiedName, usage).toResponse(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -253,6 +285,7 @@ public class UsageResource { | |||||||
|       }) |       }) | ||||||
|   public Response createOrUpdateByName( |   public Response createOrUpdateByName( | ||||||
|       @Context UriInfo uriInfo, |       @Context UriInfo uriInfo, | ||||||
|  |       @Context SecurityContext securityContext, | ||||||
|       @Parameter( |       @Parameter( | ||||||
|               description = "Entity type for which usage is reported", |               description = "Entity type for which usage is reported", | ||||||
|               required = true, |               required = true, | ||||||
| @ -267,6 +300,10 @@ public class UsageResource { | |||||||
|           String fullyQualifiedName, |           String fullyQualifiedName, | ||||||
|       @Parameter(description = "Usage information a given date") @Valid DailyCount usage) |       @Parameter(description = "Usage information a given date") @Valid DailyCount usage) | ||||||
|       throws IOException { |       throws IOException { | ||||||
|  |     OperationContext operationContext = new OperationContext(entity, MetadataOperation.EDIT_USAGE); | ||||||
|  |     ResourceContext resourceContext = | ||||||
|  |         EntityResource.getResourceContext(entity, Entity.getEntityRepository(entity)).name(fullyQualifiedName).build(); | ||||||
|  |     authorizer.authorize(securityContext, operationContext, resourceContext); | ||||||
|     return dao.createOrUpdateByName(entity, fullyQualifiedName, usage).toResponse(); |     return dao.createOrUpdateByName(entity, fullyQualifiedName, usage).toResponse(); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @ -283,6 +320,7 @@ public class UsageResource { | |||||||
|       }) |       }) | ||||||
|   public Response computePercentile( |   public Response computePercentile( | ||||||
|       @Context UriInfo uriInfo, |       @Context UriInfo uriInfo, | ||||||
|  |       @Context SecurityContext securityContext, | ||||||
|       @Parameter( |       @Parameter( | ||||||
|               description = "Entity name for which usage is requested", |               description = "Entity name for which usage is requested", | ||||||
|               schema = @Schema(type = "string", example = "table, report, metrics, or dashboard")) |               schema = @Schema(type = "string", example = "table, report, metrics, or dashboard")) | ||||||
| @ -292,8 +330,12 @@ public class UsageResource { | |||||||
|               description = "ISO 8601 format date to compute percentile on", |               description = "ISO 8601 format date to compute percentile on", | ||||||
|               schema = @Schema(type = "string", example = "2021-01-28")) |               schema = @Schema(type = "string", example = "2021-01-28")) | ||||||
|           @PathParam("date") |           @PathParam("date") | ||||||
|           String date) { |           String date) | ||||||
|     // TODO delete this? |       throws IOException { | ||||||
|  |     OperationContext operationContext = new OperationContext(entity, MetadataOperation.EDIT_USAGE); | ||||||
|  |     ResourceContext resourceContext = | ||||||
|  |         EntityResource.getResourceContext(entity, Entity.getEntityRepository(entity)).build(); | ||||||
|  |     authorizer.authorize(securityContext, operationContext, resourceContext); | ||||||
|     dao.computePercentile(entity, date); |     dao.computePercentile(entity, date); | ||||||
|     return Response.status(Response.Status.CREATED).build(); |     return Response.status(Response.Status.CREATED).build(); | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -17,11 +17,16 @@ import static javax.ws.rs.core.Response.Status.BAD_REQUEST; | |||||||
| import static javax.ws.rs.core.Response.Status.NOT_FOUND; | import static javax.ws.rs.core.Response.Status.NOT_FOUND; | ||||||
| import static org.junit.jupiter.api.Assertions.assertEquals; | import static org.junit.jupiter.api.Assertions.assertEquals; | ||||||
| import static org.openmetadata.common.utils.CommonUtil.getDateStringByOffset; | import static org.openmetadata.common.utils.CommonUtil.getDateStringByOffset; | ||||||
|  | import static org.openmetadata.common.utils.CommonUtil.listOf; | ||||||
|  | import static org.openmetadata.service.Entity.INGESTION_BOT_NAME; | ||||||
| import static org.openmetadata.service.Entity.TABLE; | import static org.openmetadata.service.Entity.TABLE; | ||||||
| import static org.openmetadata.service.exception.CatalogExceptionMessage.entityNotFound; | import static org.openmetadata.service.exception.CatalogExceptionMessage.entityNotFound; | ||||||
| import static org.openmetadata.service.exception.CatalogExceptionMessage.entityTypeNotFound; | import static org.openmetadata.service.exception.CatalogExceptionMessage.entityTypeNotFound; | ||||||
|  | import static org.openmetadata.service.security.SecurityUtil.authHeaders; | ||||||
| import static org.openmetadata.service.util.TestUtils.ADMIN_AUTH_HEADERS; | import static org.openmetadata.service.util.TestUtils.ADMIN_AUTH_HEADERS; | ||||||
| import static org.openmetadata.service.util.TestUtils.NON_EXISTENT_ENTITY; | import static org.openmetadata.service.util.TestUtils.NON_EXISTENT_ENTITY; | ||||||
|  | import static org.openmetadata.service.util.TestUtils.TEST_AUTH_HEADERS; | ||||||
|  | import static org.openmetadata.service.util.TestUtils.TEST_USER_NAME; | ||||||
| import static org.openmetadata.service.util.TestUtils.assertResponse; | import static org.openmetadata.service.util.TestUtils.assertResponse; | ||||||
| 
 | 
 | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
| @ -34,6 +39,7 @@ import java.util.Random; | |||||||
| import java.util.UUID; | import java.util.UUID; | ||||||
| import javax.ws.rs.client.WebTarget; | import javax.ws.rs.client.WebTarget; | ||||||
| import javax.ws.rs.core.Response; | import javax.ws.rs.core.Response; | ||||||
|  | import javax.ws.rs.core.Response.Status; | ||||||
| import lombok.SneakyThrows; | import lombok.SneakyThrows; | ||||||
| import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||||
| import org.apache.http.client.HttpResponseException; | import org.apache.http.client.HttpResponseException; | ||||||
| @ -49,9 +55,11 @@ import org.openmetadata.schema.entity.data.Database; | |||||||
| import org.openmetadata.schema.entity.data.Table; | import org.openmetadata.schema.entity.data.Table; | ||||||
| import org.openmetadata.schema.type.DailyCount; | import org.openmetadata.schema.type.DailyCount; | ||||||
| import org.openmetadata.schema.type.EntityUsage; | import org.openmetadata.schema.type.EntityUsage; | ||||||
|  | import org.openmetadata.schema.type.MetadataOperation; | ||||||
| import org.openmetadata.schema.type.UsageDetails; | import org.openmetadata.schema.type.UsageDetails; | ||||||
| import org.openmetadata.service.Entity; | import org.openmetadata.service.Entity; | ||||||
| import org.openmetadata.service.OpenMetadataApplicationTest; | import org.openmetadata.service.OpenMetadataApplicationTest; | ||||||
|  | import org.openmetadata.service.exception.CatalogExceptionMessage; | ||||||
| import org.openmetadata.service.resources.databases.DatabaseResourceTest; | import org.openmetadata.service.resources.databases.DatabaseResourceTest; | ||||||
| import org.openmetadata.service.resources.databases.TableResourceTest; | import org.openmetadata.service.resources.databases.TableResourceTest; | ||||||
| import org.openmetadata.service.util.RestUtil; | import org.openmetadata.service.util.RestUtil; | ||||||
| @ -148,25 +156,51 @@ class UsageResourceTest extends OpenMetadataApplicationTest { | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @Test |   @Test | ||||||
|   void post_validUsageByName_200_OK(TestInfo test) { |   void post_validUsageByNameAsAdmin_200(TestInfo test) { | ||||||
|     testValidUsageByName(test, POST); |     testValidUsageByName(test, POST, ADMIN_AUTH_HEADERS); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @Test |   @Test | ||||||
|   void put_validUsageByName_200_OK(TestInfo test) { |   void post_validUsageByNameAsIngestionBot_200(TestInfo test) { | ||||||
|     testValidUsageByName(test, PUT); |     testValidUsageByName(test, POST, authHeaders(INGESTION_BOT_NAME)); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @Test | ||||||
|  |   void post_validUsageByNameAsNonPrivilegedUser_401(TestInfo test) { | ||||||
|  |     assertResponse( | ||||||
|  |         () -> testValidUsageByName(test, POST, TEST_AUTH_HEADERS), | ||||||
|  |         Status.FORBIDDEN, | ||||||
|  |         CatalogExceptionMessage.permissionNotAllowed(TEST_USER_NAME, listOf(MetadataOperation.EDIT_USAGE))); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @Test | ||||||
|  |   void put_validUsageByNameAsAdmin_200(TestInfo test) { | ||||||
|  |     testValidUsageByName(test, PUT, ADMIN_AUTH_HEADERS); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @Test | ||||||
|  |   void put_validUsageByNameAsIngestionBot_200(TestInfo test) { | ||||||
|  |     testValidUsageByName(test, PUT, authHeaders(INGESTION_BOT_NAME)); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   @Test | ||||||
|  |   void put_validUsageByNameAsNonPrivilegedUser_401(TestInfo test) { | ||||||
|  |     assertResponse( | ||||||
|  |         () -> testValidUsageByName(test, PUT, TEST_AUTH_HEADERS), | ||||||
|  |         Status.FORBIDDEN, | ||||||
|  |         CatalogExceptionMessage.permissionNotAllowed(TEST_USER_NAME, listOf(MetadataOperation.EDIT_USAGE))); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   @SneakyThrows |   @SneakyThrows | ||||||
|   void testValidUsageByName(TestInfo test, String methodType) { |   void testValidUsageByName(TestInfo test, String methodType, Map<String, String> authHeaders) { | ||||||
|     TableResourceTest tableResourceTest = new TableResourceTest(); |     TableResourceTest tableResourceTest = new TableResourceTest(); | ||||||
|     Table table = tableResourceTest.createEntity(tableResourceTest.createRequest(test), ADMIN_AUTH_HEADERS); |     Table table = tableResourceTest.createEntity(tableResourceTest.createRequest(test), ADMIN_AUTH_HEADERS); | ||||||
|     DailyCount usageReport = usageReport().withCount(100).withDate(RestUtil.DATE_FORMAT.format(new Date())); |     DailyCount usageReport = usageReport().withCount(100).withDate(RestUtil.DATE_FORMAT.format(new Date())); | ||||||
|     reportUsageByNameAndCheckPut(TABLE, table.getFullyQualifiedName(), usageReport, 100, 100, ADMIN_AUTH_HEADERS); |     reportUsageByNameAndCheckPut(TABLE, table.getFullyQualifiedName(), usageReport, 100, 100, authHeaders); | ||||||
|     // a put request updates the data again |     // a put request updates the data again | ||||||
|     if (methodType.equals(PUT)) { |     if (methodType.equals(PUT)) { | ||||||
|       reportUsageByNamePut(TABLE, table.getFullyQualifiedName(), usageReport, ADMIN_AUTH_HEADERS); |       reportUsageByNamePut(TABLE, table.getFullyQualifiedName(), usageReport, authHeaders); | ||||||
|       checkUsageByName(usageReport.getDate(), TABLE, table.getFullyQualifiedName(), 200, 200, 200, ADMIN_AUTH_HEADERS); |       checkUsageByName(usageReport.getDate(), TABLE, table.getFullyQualifiedName(), 200, 200, 200, authHeaders); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -38,6 +38,7 @@ | |||||||
|         "EditTeams", |         "EditTeams", | ||||||
|         "EditTier", |         "EditTier", | ||||||
|         "EditTests", |         "EditTests", | ||||||
|  |         "EditUsage", | ||||||
|         "EditUsers" |         "EditUsers" | ||||||
|       ] |       ] | ||||||
|     } |     } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Suresh Srinivas
						Suresh Srinivas