Java 类org.apache.lucene.index.DocumentsWriterDeleteQueue.DeleteSlice 实例源码

项目:search    文件:TestDocumentsWriterDeleteQueue.java   
public void testStressDeleteQueue() throws InterruptedException {
  DocumentsWriterDeleteQueue queue = new DocumentsWriterDeleteQueue();
  Set<Term> uniqueValues = new HashSet<>();
  final int size = 10000 + random().nextInt(500) * RANDOM_MULTIPLIER;
  Integer[] ids = new Integer[size];
  for (int i = 0; i < ids.length; i++) {
    ids[i] = random().nextInt();
    uniqueValues.add(new Term("id", ids[i].toString()));
  }
  CountDownLatch latch = new CountDownLatch(1);
  AtomicInteger index = new AtomicInteger(0);
  final int numThreads = 2 + random().nextInt(5);
  UpdateThread[] threads = new UpdateThread[numThreads];
  for (int i = 0; i < threads.length; i++) {
    threads[i] = new UpdateThread(queue, index, ids, latch);
    threads[i].start();
  }
  latch.countDown();
  for (int i = 0; i < threads.length; i++) {
    threads[i].join();
  }

  for (UpdateThread updateThread : threads) {
    DeleteSlice slice = updateThread.slice;
    queue.updateSlice(slice);
    BufferedUpdates deletes = updateThread.deletes;
    slice.apply(deletes, BufferedUpdates.MAX_INT);
    assertEquals(uniqueValues, deletes.terms.keySet());
  }
  queue.tryApplyGlobalSlice();
  Set<Term> frozenSet = new HashSet<>();
  BytesRefBuilder builder = new BytesRefBuilder();
  for (Term t : queue.freezeGlobalBuffer(null).termsIterable()) {
    builder.copyBytes(t.bytes);
    frozenSet.add(new Term(t.field, builder.toBytesRef()));
  }
  assertEquals("num deletes must be 0 after freeze", 0, queue
      .numGlobalTermDeletes());
  assertEquals(uniqueValues.size(), frozenSet.size());
  assertEquals(uniqueValues, frozenSet);

}
项目:NYBC    文件:TestDocumentsWriterDeleteQueue.java   
public void testStressDeleteQueue() throws InterruptedException {
  DocumentsWriterDeleteQueue queue = new DocumentsWriterDeleteQueue();
  Set<Term> uniqueValues = new HashSet<Term>();
  final int size = 10000 + random().nextInt(500) * RANDOM_MULTIPLIER;
  Integer[] ids = new Integer[size];
  for (int i = 0; i < ids.length; i++) {
    ids[i] = random().nextInt();
    uniqueValues.add(new Term("id", ids[i].toString()));
  }
  CountDownLatch latch = new CountDownLatch(1);
  AtomicInteger index = new AtomicInteger(0);
  final int numThreads = 2 + random().nextInt(5);
  UpdateThread[] threads = new UpdateThread[numThreads];
  for (int i = 0; i < threads.length; i++) {
    threads[i] = new UpdateThread(queue, index, ids, latch);
    threads[i].start();
  }
  latch.countDown();
  for (int i = 0; i < threads.length; i++) {
    threads[i].join();
  }

  for (UpdateThread updateThread : threads) {
    DeleteSlice slice = updateThread.slice;
    queue.updateSlice(slice);
    BufferedDeletes deletes = updateThread.deletes;
    slice.apply(deletes, BufferedDeletes.MAX_INT);
    assertEquals(uniqueValues, deletes.terms.keySet());
  }
  queue.tryApplyGlobalSlice();
  Set<Term> frozenSet = new HashSet<Term>();
  for (Term t : queue.freezeGlobalBuffer(null).termsIterable()) {
    BytesRef bytesRef = new BytesRef();
    bytesRef.copyBytes(t.bytes);
    frozenSet.add(new Term(t.field, bytesRef));
  }
  assertEquals("num deletes must be 0 after freeze", 0, queue
      .numGlobalTermDeletes());
  assertEquals(uniqueValues.size(), frozenSet.size());
  assertEquals(uniqueValues, frozenSet);

}
项目:Maskana-Gestor-de-Conocimiento    文件:TestDocumentsWriterDeleteQueue.java   
public void testStressDeleteQueue() throws InterruptedException {
  DocumentsWriterDeleteQueue queue = new DocumentsWriterDeleteQueue();
  Set<Term> uniqueValues = new HashSet<Term>();
  final int size = 10000 + random().nextInt(500) * RANDOM_MULTIPLIER;
  Integer[] ids = new Integer[size];
  for (int i = 0; i < ids.length; i++) {
    ids[i] = random().nextInt();
    uniqueValues.add(new Term("id", ids[i].toString()));
  }
  CountDownLatch latch = new CountDownLatch(1);
  AtomicInteger index = new AtomicInteger(0);
  final int numThreads = 2 + random().nextInt(5);
  UpdateThread[] threads = new UpdateThread[numThreads];
  for (int i = 0; i < threads.length; i++) {
    threads[i] = new UpdateThread(queue, index, ids, latch);
    threads[i].start();
  }
  latch.countDown();
  for (int i = 0; i < threads.length; i++) {
    threads[i].join();
  }

  for (UpdateThread updateThread : threads) {
    DeleteSlice slice = updateThread.slice;
    queue.updateSlice(slice);
    BufferedUpdates deletes = updateThread.deletes;
    slice.apply(deletes, BufferedUpdates.MAX_INT);
    assertEquals(uniqueValues, deletes.terms.keySet());
  }
  queue.tryApplyGlobalSlice();
  Set<Term> frozenSet = new HashSet<Term>();
  for (Term t : queue.freezeGlobalBuffer(null).termsIterable()) {
    BytesRef bytesRef = new BytesRef();
    bytesRef.copyBytes(t.bytes);
    frozenSet.add(new Term(t.field, bytesRef));
  }
  assertEquals("num deletes must be 0 after freeze", 0, queue
      .numGlobalTermDeletes());
  assertEquals(uniqueValues.size(), frozenSet.size());
  assertEquals(uniqueValues, frozenSet);

}