Search in sources :

Example 6 with org.bukkit.craftbukkit.v1_16_R3.entity

use of org.bukkit.craftbukkit.v1_16_R3.entity in project entity-service by hypertrace.

the class EntityDataServiceTest method testEntityQueryAttributeWithExistsFiltering.

@Test
public void testEntityQueryAttributeWithExistsFiltering() {
    String stringRandomizer1 = UUID.randomUUID().toString();
    Entity entity1 = Entity.newBuilder().setTenantId(TENANT_ID).setEntityType(EntityType.K8S_POD.name()).setEntityName("Some Service").putIdentifyingAttributes(EntityConstants.getValue(CommonAttribute.COMMON_ATTRIBUTE_EXTERNAL_ID), AttributeValue.newBuilder().setValue(Value.newBuilder().setString("value1").build()).build()).putAttributes("simpleValue1" + "-" + stringRandomizer1, AttributeValue.newBuilder().setValue(Value.newBuilder().setString("StringValue1").build()).build()).build();
    Entity createdEntity1 = entityDataServiceClient.upsert(entity1);
    assertNotNull(createdEntity1.getEntityId());
    String stringRandomizer2 = UUID.randomUUID().toString();
    Entity entity2 = Entity.newBuilder().setTenantId(TENANT_ID).setEntityType(EntityType.K8S_POD.name()).setEntityName("Some Service").putIdentifyingAttributes(EntityConstants.getValue(CommonAttribute.COMMON_ATTRIBUTE_EXTERNAL_ID), AttributeValue.newBuilder().setValue(Value.newBuilder().setString("value2").build()).build()).putAttributes("simpleValue2" + "-" + stringRandomizer2, AttributeValue.newBuilder().setValue(Value.newBuilder().setString("StringValue2").build()).build()).putAttributes("test" + "-" + stringRandomizer2, AttributeValue.newBuilder().setValue(Value.newBuilder().setString("test").build()).build()).build();
    Entity createdEntity2 = entityDataServiceClient.upsert(entity2);
    assertNotNull(createdEntity2.getEntityId());
    // test for exists operator
    AttributeFilter existsFilter = AttributeFilter.newBuilder().setName(EntityConstants.attributeMapPathFor("simpleValue1" + "-" + stringRandomizer1)).setOperator(Operator.EXISTS).build();
    List<Entity> entities = entityDataServiceClient.query(TENANT_ID, Query.newBuilder().setFilter(existsFilter).build());
    assertEquals(1, entities.size());
    assertEquals(createdEntity1, entities.get(0));
    // test for not-exists operator
    AttributeFilter notExistsFilter = AttributeFilter.newBuilder().setName(EntityConstants.attributeMapPathFor("simpleValue3")).setOperator(Operator.NOT_EXISTS).build();
    entities = entityDataServiceClient.query(TENANT_ID, Query.newBuilder().setFilter(notExistsFilter).build());
    assertTrue(entities.size() > 0);
    // test with AND operator
    AttributeFilter eqFilter = AttributeFilter.newBuilder().setName(EntityConstants.attributeMapPathFor("test" + "-" + stringRandomizer2)).setOperator(Operator.EQ).setAttributeValue(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("test").build()).build()).build();
    existsFilter = AttributeFilter.newBuilder().setName(EntityConstants.attributeMapPathFor("simpleValue2" + "-" + stringRandomizer2)).setOperator(Operator.EXISTS).build();
    AttributeFilter andFilter = AttributeFilter.newBuilder().setOperator(Operator.AND).addChildFilter(eqFilter).addChildFilter(existsFilter).build();
    entities = entityDataServiceClient.query(TENANT_ID, Query.newBuilder().setFilter(andFilter).build());
    assertEquals(1, entities.size());
    assertEquals(createdEntity2, entities.get(0));
    // exists with attribute value - discard the value
    existsFilter = AttributeFilter.newBuilder().setName(EntityConstants.attributeMapPathFor("simpleValue1" + "-" + stringRandomizer1)).setOperator(Operator.EXISTS).setAttributeValue(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("StringValue").build()).build()).build();
    entities = entityDataServiceClient.query(TENANT_ID, Query.newBuilder().setFilter(existsFilter).build());
    assertEquals(1, entities.size());
    assertEquals(createdEntity1, entities.get(0));
}
Also used : EnrichedEntity(org.hypertrace.entity.data.service.v1.EnrichedEntity) Entity(org.hypertrace.entity.data.service.v1.Entity) AttributeFilter(org.hypertrace.entity.data.service.v1.AttributeFilter) Test(org.junit.jupiter.api.Test)

Example 7 with org.bukkit.craftbukkit.v1_16_R3.entity

use of org.bukkit.craftbukkit.v1_16_R3.entity in project entity-service by hypertrace.

the class EntityDataServiceTest method testCreateV2EntityTypeWithoutIdentifyingAttributes.

@Test
public void testCreateV2EntityTypeWithoutIdentifyingAttributes() {
    Entity firstInputEntity = Entity.newBuilder().setTenantId(TENANT_ID).setEntityType(TEST_ENTITY_TYPE_V2).setEntityId(UUID.randomUUID().toString()).setEntityName("Test entity v2").putAttributes("foo", AttributeValue.newBuilder().setValue(Value.newBuilder().setString("foo1")).build()).build();
    Entity firstCreatedEntity = entityDataServiceClient.upsert(firstInputEntity);
    assertNotSame(firstInputEntity, firstCreatedEntity);
    assertEntityEquals(firstInputEntity, firstCreatedEntity);
    Entity secondInputEntity = firstInputEntity.toBuilder().clearAttributes().build();
    Entity secondCreatedEntity = entityDataServiceClient.upsert(secondInputEntity);
    assertEntityEquals(firstCreatedEntity, secondCreatedEntity);
}
Also used : EnrichedEntity(org.hypertrace.entity.data.service.v1.EnrichedEntity) Entity(org.hypertrace.entity.data.service.v1.Entity) Test(org.junit.jupiter.api.Test)

Example 8 with org.bukkit.craftbukkit.v1_16_R3.entity

use of org.bukkit.craftbukkit.v1_16_R3.entity in project entity-service by hypertrace.

the class EntityDataServiceTest method testEntityQueryAttributeFiltering.

@Test
public void testEntityQueryAttributeFiltering() {
    long timeBeforeQuery = System.currentTimeMillis();
    String stringRandomizer = UUID.randomUUID().toString();
    Entity entity = Entity.newBuilder().setTenantId(TENANT_ID).setEntityType(EntityType.K8S_POD.name()).setEntityName("Some Service").putIdentifyingAttributes(EntityConstants.getValue(CommonAttribute.COMMON_ATTRIBUTE_EXTERNAL_ID), AttributeValue.newBuilder().setValue(Value.newBuilder().setString("value1").build()).build()).putAttributes("simpleValue" + "-" + stringRandomizer, AttributeValue.newBuilder().setValue(Value.newBuilder().setString("StringValue").build()).build()).putAttributes("listValue" + "-" + stringRandomizer, AttributeValue.newBuilder().setValueList(AttributeValueList.newBuilder().addValues(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("item1").build()).build()).addValues(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("item2").build()).build()).build()).build()).putAttributes("mapValue" + "-" + stringRandomizer, AttributeValue.newBuilder().setValueMap(AttributeValueMap.newBuilder().putValues("nestedKey", AttributeValue.newBuilder().setValue(Value.newBuilder().setString("nestedValue").build()).build()).build()).build()).build();
    Entity createdEntity = entityDataServiceClient.upsert(entity);
    assertNotNull(createdEntity.getEntityId());
    AttributeFilter stringFilter = AttributeFilter.newBuilder().setName(EntityConstants.attributeMapPathFor("simpleValue" + "-" + stringRandomizer)).setOperator(Operator.EQ).setAttributeValue(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("StringValue").build()).build()).build();
    List<Entity> entities1 = entityDataServiceClient.query(TENANT_ID, Query.newBuilder().setFilter(stringFilter).build());
    Entity foundEntity1 = entities1.get(0);
    assertEquals(createdEntity, foundEntity1);
    // filter by createdTime, which is treated as attribute filtering because it should be able
    // to support different operations like regular attribtues
    AttributeFilter createTimeFilter = AttributeFilter.newBuilder().setName(EntityServiceConstants.ENTITY_CREATED_TIME).setOperator(Operator.GT).setAttributeValue(AttributeValue.newBuilder().setValue(Value.newBuilder().setLong(timeBeforeQuery).build()).build()).build();
    List<Entity> entities11 = entityDataServiceClient.query(TENANT_ID, Query.newBuilder().setFilter(createTimeFilter).build());
    Entity foundEntity11 = entities11.get(0);
    assertEquals(createdEntity, foundEntity11);
    AttributeFilter nestedFilter = AttributeFilter.newBuilder().setName(EntityConstants.attributeMapPathFor("mapValue" + "-" + stringRandomizer)).setOperator(Operator.EQ).setAttributeValue(AttributeValue.newBuilder().setValueMap(AttributeValueMap.newBuilder().putValues("nestedKey", AttributeValue.newBuilder().setValue(Value.newBuilder().setString("nestedValue").build()).build()).build()).build()).build();
    List<Entity> entities2 = entityDataServiceClient.query(TENANT_ID, Query.newBuilder().setFilter(nestedFilter).build());
    Entity foundEntity2 = entities2.get(0);
    assertEquals(createdEntity, foundEntity2);
    AttributeFilter listFilter = AttributeFilter.newBuilder().setName(EntityConstants.attributeMapPathFor("listValue" + "-" + stringRandomizer)).setOperator(Operator.EQ).setAttributeValue(AttributeValue.newBuilder().setValueList(AttributeValueList.newBuilder().addValues(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("item1").build()).build()).addValues(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("item2").build()).build()).build()).build()).build();
    List<Entity> entities3 = entityDataServiceClient.query(TENANT_ID, Query.newBuilder().setFilter(listFilter).build());
    Entity foundEntity3 = entities3.get(0);
    assertEquals(createdEntity, foundEntity3);
    AttributeFilter listInFilter = AttributeFilter.newBuilder().setName(EntityConstants.attributeMapPathFor("listValue" + "-" + stringRandomizer)).setOperator(Operator.CONTAINS).setAttributeValue(AttributeValue.newBuilder().setValueList(AttributeValueList.newBuilder().addValues(AttributeValue.newBuilder().setValue(Value.newBuilder().setString("item1").build()).build()).build()).build()).build();
    List<Entity> entities4 = entityDataServiceClient.query(TENANT_ID, Query.newBuilder().setFilter(listInFilter).build());
    Entity foundEntity4 = entities4.get(0);
    assertEquals(createdEntity, foundEntity4);
}
Also used : EnrichedEntity(org.hypertrace.entity.data.service.v1.EnrichedEntity) Entity(org.hypertrace.entity.data.service.v1.Entity) AttributeFilter(org.hypertrace.entity.data.service.v1.AttributeFilter) Test(org.junit.jupiter.api.Test)

Example 9 with org.bukkit.craftbukkit.v1_16_R3.entity

use of org.bukkit.craftbukkit.v1_16_R3.entity in project entity-service by hypertrace.

the class EntityDataServiceTest method testUpdateEntityWithPredicateViaUpsertAndMerge.

@Test
public void testUpdateEntityWithPredicateViaUpsertAndMerge() {
    // Scope this test to its own tenant for isolation
    String TENANT_ID = EntityDataServiceTest.TENANT_ID + "testUpdateEntityWithPredicateViaUpsertAndMerge";
    EntityDataServiceBlockingStub entityDataServiceStub = buildStubForTenant(TENANT_ID);
    setupEntityTypes(channel, TENANT_ID);
    Map<String, AttributeValue> createAttributes = Map.of("some-attr", stringValue("v1"));
    Map<String, AttributeValue> updateAttributes = Map.of("some-attr", stringValue("v2"));
    // Expect create and the first update to succeed, the second to fail
    UpsertCondition condition = UpsertCondition.newBuilder().setPropertyPredicate(Predicate.newBuilder().setAttributeKey("some-attr").setOperator(PredicateOperator.PREDICATE_OPERATOR_EQUALS).setValue(stringValue("v1"))).build();
    // V1 entity
    Entity entityToCreate = Entity.newBuilder().setTenantId(TENANT_ID).setEntityType(EntityType.K8S_POD.name()).setEntityName("V1 UPDATE PREDICATE POD").putIdentifyingAttributes(EntityConstants.getValue(CommonAttribute.COMMON_ATTRIBUTE_EXTERNAL_ID), generateRandomUUIDAttrValue()).putAllAttributes(createAttributes).build();
    // Successful create
    Entity createdEntity = entityDataServiceStub.mergeAndUpsertEntity(MergeAndUpsertEntityRequest.newBuilder().setEntity(entityToCreate).setUpsertCondition(condition).build()).getEntity();
    assertEquals(stringValue("v1"), createdEntity.getAttributesMap().get("some-attr"));
    Entity entityUpdate = entityToCreate.toBuilder().putAllAttributes(updateAttributes).build();
    Entity updatedEntity = entityDataServiceStub.mergeAndUpsertEntity(MergeAndUpsertEntityRequest.newBuilder().setEntity(entityUpdate).setUpsertCondition(condition).build()).getEntity();
    // Successful update
    assertEquals(stringValue("v2"), updatedEntity.getAttributesMap().get("some-attr"));
    Entity secondEntityUpdate = entityToCreate.toBuilder().putAttributes("some-new-attr", stringValue("foo")).build();
    Entity secondUpdatedEntity = entityDataServiceStub.mergeAndUpsertEntity(MergeAndUpsertEntityRequest.newBuilder().setEntity(secondEntityUpdate).setUpsertCondition(condition).build()).getEntity();
    // No change, update rejected
    assertFalse(secondUpdatedEntity.getAttributesMap().containsKey("some-new-attr"));
    assertEquals(stringValue("v2"), secondUpdatedEntity.getAttributesMap().get("some-attr"));
    // V2 Entity
    entityToCreate = Entity.newBuilder().setTenantId(TENANT_ID).setEntityId(UUID.randomUUID().toString()).setEntityType(TEST_ENTITY_TYPE_V2).setEntityName("V2 entity predicate update").putAllAttributes(createAttributes).build();
    // Successful create
    createdEntity = entityDataServiceStub.mergeAndUpsertEntity(MergeAndUpsertEntityRequest.newBuilder().setEntity(entityToCreate).setUpsertCondition(condition).build()).getEntity();
    assertEquals(stringValue("v1"), createdEntity.getAttributesMap().get("some-attr"));
    entityUpdate = entityToCreate.toBuilder().putAllAttributes(updateAttributes).build();
    updatedEntity = entityDataServiceStub.mergeAndUpsertEntity(MergeAndUpsertEntityRequest.newBuilder().setEntity(entityUpdate).setUpsertCondition(condition).build()).getEntity();
    // Successful update
    assertEquals(stringValue("v2"), updatedEntity.getAttributesMap().get("some-attr"));
    secondEntityUpdate = entityToCreate.toBuilder().putAttributes("some-new-attr", stringValue("foo")).build();
    secondUpdatedEntity = entityDataServiceStub.mergeAndUpsertEntity(MergeAndUpsertEntityRequest.newBuilder().setEntity(secondEntityUpdate).setUpsertCondition(condition).build()).getEntity();
    // No change, update rejected
    assertFalse(secondUpdatedEntity.getAttributesMap().containsKey("some-new-attr"));
    assertEquals(stringValue("v2"), secondUpdatedEntity.getAttributesMap().get("some-attr"));
}
Also used : EnrichedEntity(org.hypertrace.entity.data.service.v1.EnrichedEntity) Entity(org.hypertrace.entity.data.service.v1.Entity) AttributeValue(org.hypertrace.entity.data.service.v1.AttributeValue) UpsertCondition(org.hypertrace.entity.data.service.v1.MergeAndUpsertEntityRequest.UpsertCondition) EntityDataServiceBlockingStub(org.hypertrace.entity.data.service.v1.EntityDataServiceGrpc.EntityDataServiceBlockingStub) Test(org.junit.jupiter.api.Test)

Example 10 with org.bukkit.craftbukkit.v1_16_R3.entity

use of org.bukkit.craftbukkit.v1_16_R3.entity in project entity-service by hypertrace.

the class EntityDataServiceTest method testEntityQueryOrderBy.

@Test
public void testEntityQueryOrderBy() {
    Entity entity1 = Entity.newBuilder().setTenantId(TENANT_ID).setEntityType(EntityType.K8S_POD.name()).setEntityName("Some Service 1").putIdentifyingAttributes(EntityConstants.getValue(CommonAttribute.COMMON_ATTRIBUTE_EXTERNAL_ID), generateRandomUUIDAttrValue()).putAttributes("foo", AttributeValue.newBuilder().setValue(Value.newBuilder().setInt(5).build()).build()).build();
    Entity createdEntity1 = entityDataServiceClient.upsert(entity1);
    assertNotNull(createdEntity1);
    assertNotNull(createdEntity1.getEntityId().trim());
    Entity entity2 = Entity.newBuilder().setTenantId(TENANT_ID).setEntityType(EntityType.K8S_POD.name()).setEntityName("Some Service 2").putIdentifyingAttributes(EntityConstants.getValue(CommonAttribute.COMMON_ATTRIBUTE_EXTERNAL_ID), generateRandomUUIDAttrValue()).putAttributes("foo", AttributeValue.newBuilder().setValue(Value.newBuilder().setInt(10).build()).build()).build();
    Entity createdEntity2 = entityDataServiceClient.upsert(entity2);
    assertNotNull(createdEntity2);
    assertNotNull(createdEntity2.getEntityId().trim());
    // Query by field name
    Query entityNameQuery = Query.newBuilder().setEntityType(EntityType.K8S_POD.name()).addOrderBy(OrderByExpression.newBuilder().setOrder(SortOrder.DESC).setName("entityName").build()).build();
    List<Entity> entitiesList = entityDataServiceClient.query(TENANT_ID, entityNameQuery);
    assertTrue(entitiesList.size() > 1);
    assertTrue(entitiesList.contains(createdEntity1) && entitiesList.contains(createdEntity2));
    // ordered such that entity with "larger" entity name value is listed earlier
    assertTrue(entitiesList.indexOf(createdEntity2) < entitiesList.indexOf(createdEntity1));
    // Query by attribute
    Query attributeQuery = Query.newBuilder().setEntityType(EntityType.K8S_POD.name()).addOrderBy(OrderByExpression.newBuilder().setOrder(SortOrder.DESC).setName("attributes.foo").build()).build();
    entitiesList = entityDataServiceClient.query(TENANT_ID, attributeQuery);
    assertTrue(entitiesList.size() > 1);
    assertTrue(entitiesList.contains(createdEntity1) && entitiesList.contains(createdEntity2));
    // ordered such that entity with "larger" attributes value is listed earlier
    assertTrue(entitiesList.indexOf(createdEntity2) < entitiesList.indexOf(createdEntity1));
}
Also used : EnrichedEntity(org.hypertrace.entity.data.service.v1.EnrichedEntity) Entity(org.hypertrace.entity.data.service.v1.Entity) Query(org.hypertrace.entity.data.service.v1.Query) Test(org.junit.jupiter.api.Test)

Aggregations

LivingEntity (org.bukkit.entity.LivingEntity)120 Entity (org.hypertrace.entity.data.service.v1.Entity)110 Test (org.junit.jupiter.api.Test)95 SkinnableEntity (net.citizensnpcs.npc.skin.SkinnableEntity)88 CraftEntity (org.bukkit.craftbukkit.v1_16_R3.entity.CraftEntity)70 ArrayList (java.util.ArrayList)51 org.bukkit.entity (org.bukkit.entity)48 Location (org.bukkit.Location)41 net.minecraft.world.entity (net.minecraft.world.entity)40 CraftPlayer (org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer)35 Player (org.bukkit.entity.Player)34 Entity (com.google.datastore.v1.Entity)33 EnrichedEntity (org.hypertrace.entity.data.service.v1.EnrichedEntity)32 CraftWorld (org.bukkit.craftbukkit.v1_16_R3.CraftWorld)31 Event (org.hypertrace.core.datamodel.Event)27 PlayerEntity (net.minecraft.entity.player.PlayerEntity)24 AreaEffectCloudEntity (net.minecraft.entity.AreaEffectCloudEntity)22 MobEntity (net.minecraft.entity.MobEntity)22 ExperienceOrbEntity (net.minecraft.entity.item.ExperienceOrbEntity)22 ItemEntity (net.minecraft.entity.item.ItemEntity)22