Java 类com.google.appengine.api.datastore.KeyRange 实例源码

项目:appengine-tck    文件:AllocateIdsTest.java   
@Test
public void testCheckKeyRange() throws Exception {
    long initialValue = getInitialValue("OtherKind");

    KeyRange kr1 = new KeyRange(null, "OtherKind", 1 + initialValue, 5 + initialValue);
    DatastoreService.KeyRangeState state1 = service.allocateIdRange(kr1);
    Assert.assertNotNull(state1);
    // imo, it could be either -- depending on the impl
    Assert.assertTrue(DatastoreService.KeyRangeState.CONTENTION == state1 || DatastoreService.KeyRangeState.EMPTY == state1);

    KeyRange kr2 = service.allocateIds("OtherKind", 6);
    Assert.assertNotNull(kr2);

    KeyRange kr3 = new KeyRange(null, "OtherKind", 2 + initialValue, 5 + initialValue);
    DatastoreService.KeyRangeState state2 = service.allocateIdRange(kr3);
    Assert.assertNotNull(state2);
    // can it be both, depending on the impl?
    Assert.assertTrue(DatastoreService.KeyRangeState.COLLISION == state2 || DatastoreService.KeyRangeState.CONTENTION == state2);
}
项目:appengine-tck    文件:AllocateIdsTest.java   
@Test
public void testOutOfRangeEntity() throws Exception {
    final long allocateNum = 5;

    // Range default namespace
    KeyRange range = service.allocateIds(ALLOCATE_IDS_ENTITY, allocateNum);

    Entity noParent = createTestEntity(ALLOCATE_IDS_ENTITY);
    assertEntityNotInRange(noParent, range);

    // Range with specified parent
    Entity parent = new Entity(ALLOCATE_IDS_ENTITY);
    Key parentKey = service.put(parent);
    KeyRange range2 = service.allocateIds(parentKey, ALLOCATE_IDS_ENTITY, allocateNum);

    Entity entity = createTestEntity(ALLOCATE_IDS_ENTITY, parentKey);
    assertEntityNotInRange(entity, range2);

    // In Range entity should have same parent
    Entity child = new Entity(range2.getStart());
    Key childKey = service.put(child);
    // child with allocated key should have correct parent.
    Assert.assertEquals(parentKey, childKey.getParent());
}
项目:appengine-tck    文件:AllocateIdsTest.java   
private boolean rangeOverlap(KeyRange kr1, KeyRange kr2) {
    long firstStart = kr1.getStart().getId();
    long firstEnd = kr1.getEnd().getId();
    long secondStart = kr2.getStart().getId();
    long secondEnd = kr2.getStart().getId();

    if ((firstStart == secondStart) || (firstEnd == secondEnd)) {
        return true;
    }
    if ((firstStart == secondEnd) || (firstEnd == secondStart)) {
        return true;
    }
    if ((firstStart < secondStart) && (firstEnd > secondStart)) {
        return true;
    }
    if ((firstStart > secondStart) && (secondEnd > firstStart)) {
        return true;
    }
    return false;
}
项目:java-docs-samples    文件:EntitiesTest.java   
@Test
public void identifiers_autoId_setsUnallocatedId() throws Exception {
  KeyRange keys = datastore.allocateIds("Employee", 1);
  long usedId = keys.getStart().getId();

  // [START identifiers_2]
  Entity employee = new Entity("Employee");
  // [END identifiers_2]
  datastore.put(employee);

  assertThat(employee.getKey().getId()).named("key id").isNotEqualTo(usedId);
}
项目:java-docs-samples    文件:EntitiesTest.java   
@Test
public void identifiers_autoId_setsUnallocatedId() throws Exception {
  KeyRange keys = datastore.allocateIds("Employee", 1);
  long usedId = keys.getStart().getId();

  // [START identifiers_2]
  Entity employee = new Entity("Employee");
  // [END identifiers_2]
  datastore.put(employee);

  assertThat(employee.getKey().getId()).named("key id").isNotEqualTo(usedId);
}
项目:appengine-tck    文件:AllocateIdsTest.java   
@Test
public void testAllocateId() throws Exception {
    KeyRange firstBlock = service.allocateIds(ALLOCATE_IDS_ENTITY, 10L);

    Assert.assertNotNull(firstBlock);
    Assert.assertEquals(10, firstBlock.getEnd().getId() - firstBlock.getStart().getId() + 1);
    Assert.assertEquals(10, firstBlock.getSize());

    KeyRange secondBlock = service.allocateIds(ALLOCATE_IDS_ENTITY, 10L);
    Assert.assertNotNull(secondBlock);
    Assert.assertFalse("Allocated key ranges should not overlap.", rangeOverlap(firstBlock, secondBlock));
}
项目:appengine-tck    文件:AllocateIdsTest.java   
@Test
public void testAllocateChild() {
    Entity parent = new Entity(ALLOCATE_IDS_ENTITY);
    parent.setProperty("name", "parent-" + System.currentTimeMillis());
    Key parentKey = service.put(parent);

    final int allocateSize = 10;
    KeyRange range = service.allocateIds(parentKey, ALLOCATE_IDS_ENTITY, allocateSize);

    Entity child = new Entity(range.getStart());
    Key key = service.put(child);

    // child with allocated key should have correct parent.
    Assert.assertEquals(parentKey, key.getParent());
}
项目:appengine-tck    文件:AsyncServiceTest.java   
@Test
public void testDataAllocate() throws Exception {
    final long allocateNum = 5;

    // Range default namespace
    Future<KeyRange> futureRange = asyncService.allocateIds(ASYNC_ENTITY, allocateNum);
    KeyRange range = futureRange.get();
    assertTaskIsDoneAndNotCancelled(futureRange);

    Entity noParent = createTestEntity(ASYNC_ENTITY);
    assertEntityNotInRange(noParent, range);

    // Range with specified parent
    Entity parent = new Entity(ASYNC_ENTITY);
    parent.setProperty("name", "parent" + new Date());
    Key parentKey = service.put(parent);
    Future<KeyRange> futureRange2 = asyncService.allocateIds(parentKey, ASYNC_ENTITY, allocateNum);
    KeyRange range2 = futureRange2.get();
    assertTaskIsDoneAndNotCancelled(futureRange2);

    Entity noParent2 = createTestEntity(ASYNC_ENTITY, parentKey);
    assertEntityNotInRange(noParent2, range2);

    // In Range entity should have same parent
    Entity child = new Entity(range2.getStart());
    child.setProperty("name", "second" + new Date());
    Key childKey = service.put(child);
    // child with allocated key should have correct parent.
    assertEquals(parentKey, childKey.getParent());
}
项目:nomulus    文件:RequestCapturingAsyncDatastoreService.java   
@Override
public Future<KeyRange> allocateIds(String kind, long num) {
  return delegate.allocateIds(kind, num);
}
项目:nomulus    文件:RequestCapturingAsyncDatastoreService.java   
@Override
public Future<KeyRange> allocateIds(Key parent, String kind, long num) {
  return delegate.allocateIds(parent, kind, num);
}
项目:appengine-tck    文件:DatastoreHelperTestBase.java   
protected void assertEntityNotInRange(Entity entity, KeyRange range) {
    // allocated key should not be re-used.
    Assert.assertTrue(entity.getKey().getId() > range.getEnd().getId() ||
        entity.getKey().getId() < range.getStart().getId());
}