Package com.senseidb.indexing.activity

Source Code of com.senseidb.indexing.activity.PurgeUnusedActivitiesJobTest

package com.senseidb.indexing.activity;

import java.io.File;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;

import junit.framework.TestCase;

import org.easymock.classextension.EasyMock;
import org.json.JSONObject;

import proj.zoie.api.IndexReaderFactory;
import proj.zoie.api.Zoie;
import proj.zoie.api.ZoieIndexReader;
import proj.zoie.api.impl.DocIDMapperImpl;
import proj.zoie.impl.indexing.ZoieConfig;

import com.browseengine.bobo.api.BoboIndexReader;
import com.senseidb.conf.SenseiSchema.FieldDefinition;
import com.senseidb.search.node.SenseiCore;
import com.senseidb.test.SenseiStarter;


public class PurgeUnusedActivitiesJobTest extends TestCase {
  private File dir;
  private CompositeActivityValues compositeActivityValues;
  private Zoie zoie;
 
 
  public void setUp() throws Exception {
    String pathname = getDirPath();
    SenseiStarter.rmrf(new File("sensei-test"));
    dir = new File(pathname);
    dir.mkdirs();
   
    ZoieIndexReader reader =  EasyMock.createMock(ZoieIndexReader.class);
    EasyMock.expect(reader.getDocIDMaper()).andReturn(new DocIDMapperImpl(new long[] {105L, 107L})).anyTimes();
   
     zoie = org.easymock.EasyMock.createMock(Zoie.class);
    org.easymock.EasyMock.expect(zoie.getIndexReaders()).andReturn(Arrays.asList(reader)).anyTimes();
   
    zoie.returnIndexReaders(org.easymock.EasyMock.<List>notNull());
    org.easymock.EasyMock.expectLastCall().anyTimes();
    org.easymock.EasyMock.replay(zoie);
    EasyMock.replay(reader);
   
  }
  public static String getDirPath() {
    return "sensei-test/activity2";
  }
  @Override
  protected void tearDown() throws Exception {
    compositeActivityValues.close();
    File file = new File("sensei-test");
    file.deleteOnExit();
    SenseiStarter.rmrf(file);
  }
  public void test1WriteValuesAndReadJustAfterThat() throws Exception {
    compositeActivityValues = CompositeActivityValues.createCompositeValues(ActivityPersistenceFactory.getInstance(getDirPath()), java.util.Arrays.asList(getLikesFieldDefinition() ), Collections.EMPTY_LIST, ZoieConfig.DEFAULT_VERSION_COMPARATOR);
    int valueCount = 100000;
    for (int i = 0; i < valueCount; i++) {
      compositeActivityValues.update(i, String.format("%08d", i), ActivityPrimitiveValuesPersistenceTest.toMap(new JSONObject().put("likes", "+1")));
    }   
    compositeActivityValues.flush();
    compositeActivityValues.syncWithPersistentVersion(String.format("%08d", valueCount - 1));
    assertEquals(100000, compositeActivityValues.metadata.count);
    SenseiCore senseiCore = new SenseiCore(0, new int[] {0}, null, null, null, null) {
      @Override
      public IndexReaderFactory<ZoieIndexReader<BoboIndexReader>> getIndexReaderFactory(int partition) {
          return zoie;
      }
    };
    PurgeUnusedActivitiesJob purgeUnusedActivitiesJob = new PurgeUnusedActivitiesJob(compositeActivityValues, senseiCore, 1000L*1000);
   

    assertEquals(99498, purgeUnusedActivitiesJob.purgeUnusedActivityIndexes());
    compositeActivityValues.recentlyAddedUids.clear();
    assertEquals(500, purgeUnusedActivitiesJob.purgeUnusedActivityIndexes());
    assertEquals(2, compositeActivityValues.uidToArrayIndex.size());
    assertEquals(0, compositeActivityValues.deletedIndexes.size());
    assertEquals(100000, compositeActivityValues.metadata.count);
    compositeActivityValues.flush();
    Thread.sleep(3000);
    assertEquals(99998, compositeActivityValues.deletedIndexes.size());
    assertEquals(100000, compositeActivityValues.metadata.count);
    assertEquals(0, purgeUnusedActivitiesJob.purgeUnusedActivityIndexes());
    compositeActivityValues.flush();
    compositeActivityValues.executor.shutdown();
    assertEquals(100000, compositeActivityValues.metadata.count);
    compositeActivityValues.executor.awaitTermination(10, TimeUnit.SECONDS);
    for (int i = 0; i < 10; i++) {
      compositeActivityValues.update(i, String.format("%08d", valueCount + i), ActivityPrimitiveValuesPersistenceTest.toMap(new JSONObject().put("likes", "+1")));
   
    assertEquals(12, compositeActivityValues.uidToArrayIndex.size());
    assertEquals(99988, compositeActivityValues.deletedIndexes.size());
    assertEquals(100000, compositeActivityValues.metadata.count);

  }
public static FieldDefinition getLikesFieldDefinition() {
   
    return getIntFieldDefinition("likes");
  }
  public static FieldDefinition getIntFieldDefinition(String name) {
    FieldDefinition fieldDefinition = new FieldDefinition();
    fieldDefinition.name = name;
    fieldDefinition.type = int.class;
    fieldDefinition.isActivity = true;
    return fieldDefinition;
  }
}
TOP

Related Classes of com.senseidb.indexing.activity.PurgeUnusedActivitiesJobTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.