Package com.pardot.rhombus

Source Code of com.pardot.rhombus.FakeIdRangeTest

package com.pardot.rhombus;

import com.datastax.driver.core.utils.UUIDs;
import com.google.common.collect.Maps;
import com.pardot.rhombus.cobject.CField;
import com.pardot.rhombus.cobject.CObjectOrdering;
import com.pardot.rhombus.cobject.shardingstrategy.*;
import com.pardot.rhombus.util.UuidUtil;
import com.pardot.rhombus.util.faker.FakeIdRange;
import org.joda.time.DateTime;
import org.junit.Test;

import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.UUID;

import static org.junit.Assert.*;

/**
* User: Rob Righter
* Date: 3/14/14
*/
public class FakeIdRangeTest {

//  @Test
//  public void  makeTimeUUIDFromTimeUnitTest(){
//
//    long expectedTimestamp = System.currentTimeMillis();
//    System.out.println(expectedTimestamp);
//    UUID actual = FakeIdRange.makeTimeUUIDFromLowestTimeUnit(expectedTimestamp);
//    System.out.println(actual.toString());
//    UUIDs.
//    assertEquals(expectedTimestamp*100000L, actual.timestamp());
//
//    //assert that its always the same
////    Long timestamp = 13948172300040000L;
////    UUID uuid = FakeIdRange.makeTimeUUIDFromLowestTimeUnit(timestamp);
////    assertEquals("ef35b740-8dc9-1031-802a-010000000000",uuid.toString());
//
//    //assert that the date converts to something sane
//    assertEquals("SOMETHING SANE",UuidUtil.getDateFromUUID(actual).toString());;
//  }

  @Test
  public void getMillisAtShardKeyMonthlyTest() throws RhombusException{
    Long millistamp = System.currentTimeMillis();
    UUID startingUUID = UUIDs.startOf(millistamp);
    //System.out.println("UUID of start is "+startingUUID+" (DATE= "+UuidUtil.getDateFromUUID(startingUUID)+" )");
    TimebasedShardingStrategy shardingStrategy = new ShardingStrategyMonthly();
    FakeIdRange subject = new FakeIdRange(CField.CDataType.TIMEUUID,startingUUID,95L,10L, shardingStrategy, "testing");
    long counter = 90L;
    UUID id = (UUID)subject.getIdAtCounter(counter,shardingStrategy);
    //System.out.println("UUID of the id is "+id+" (DATE= "+UuidUtil.getDateFromUUID(id)+" ) Millis:"+UuidUtil.convertUUIDToJavaMillis(id));
    long actual = subject.getCounterAtId(id);
    assertEquals(counter,actual);
  }

  @Test
  public void getMillisAtShardKeyWeeklyTest() throws RhombusException{
    Long millistamp = System.currentTimeMillis();
    UUID startingUUID = UUIDs.startOf(millistamp);
    //System.out.println("UUID of start is "+startingUUID+" (DATE= "+UuidUtil.getDateFromUUID(startingUUID)+" )");
    TimebasedShardingStrategy shardingStrategy = new ShardingStrategyWeekly();
    FakeIdRange subject = new FakeIdRange(CField.CDataType.TIMEUUID,startingUUID,950L,3L, shardingStrategy, "testing");
    long counter = 8L;
    UUID id = (UUID)subject.getIdAtCounter(counter,shardingStrategy);
    //System.out.println("UUID of the id is "+id+" (DATE= "+UuidUtil.getDateFromUUID(id)+" ) Millis:"+UuidUtil.convertUUIDToJavaMillis(id));
    long actual = subject.getCounterAtId(id);
    assertEquals(counter,actual);
  }

  @Test
  public void getMillisAtShardKeyDailyTest() throws RhombusException{
    Long millistamp = System.currentTimeMillis();
    UUID startingUUID = UUIDs.startOf(millistamp);
    //System.out.println("UUID of start is "+startingUUID+" (DATE= "+UuidUtil.getDateFromUUID(startingUUID)+" )");
    TimebasedShardingStrategy shardingStrategy = new ShardingStrategyDaily();
    FakeIdRange subject = new FakeIdRange(CField.CDataType.TIMEUUID,startingUUID,950L,3L, shardingStrategy, "testing");
    long counter = 8L;
    UUID id = (UUID)subject.getIdAtCounter(counter,shardingStrategy);
    //System.out.println("UUID of the id is "+id+" (DATE= "+UuidUtil.getDateFromUUID(id)+" ) Millis:"+UuidUtil.convertUUIDToJavaMillis(id));
    long actual = subject.getCounterAtId(id);
    assertEquals(counter,actual);
  }

  @Test
  public void getMillisAtShardKeyNoneTest() throws RhombusException{
    Long millistamp = System.currentTimeMillis();
    UUID startingUUID = UUIDs.startOf(millistamp);
    //System.out.println("UUID of start is "+startingUUID+" (DATE= "+UuidUtil.getDateFromUUID(startingUUID)+" )");
    TimebasedShardingStrategy shardingStrategy = new ShardingStrategyNone();
    FakeIdRange subject = new FakeIdRange(CField.CDataType.TIMEUUID,startingUUID,950L,3L, shardingStrategy, "testing");
    long counter = 8L;
    UUID id = (UUID)subject.getIdAtCounter(counter,shardingStrategy);
    //System.out.println("UUID of the id is "+id+" (DATE= "+UuidUtil.getDateFromUUID(id)+" ) Millis:"+UuidUtil.convertUUIDToJavaMillis(id));
    long actual = subject.getCounterAtId(id);
    assertEquals(counter,actual);
  }

  @Test
  public void getIteratorTestMonthly() throws RhombusException {
    Long millistamp = 946740000000L;
    millistamp = System.currentTimeMillis();
    System.out.println(millistamp);
    UUID startingUUID = UUIDs.startOf(millistamp);
    System.out.println("UUID of start is "+startingUUID+" (DATE= "+UuidUtil.getDateFromUUID(startingUUID)+" )");


    TimebasedShardingStrategy shardingStrategy = new ShardingStrategyMonthly();
    int numberPerShard = 3;
    long totalNumberOfObjects = 950L;
    FakeIdRange subject = new FakeIdRange(CField.CDataType.TIMEUUID,startingUUID,totalNumberOfObjects,(long)numberPerShard, shardingStrategy, "testing");
    Iterator<FakeIdRange.IdInRange> it = subject.getIterator(CObjectOrdering.ASCENDING);

    long counter = 0;
    int lastmonth = -1;
    int countSinceChange = 0;
    while(it.hasNext()){
      counter++;
      FakeIdRange.IdInRange id = it.next();
      DateTime dt = UuidUtil.getDateFromUUID((UUID)id.getId());
      if(lastmonth == -1){
        //initialization case
        countSinceChange = 1;
        lastmonth = dt.getMonthOfYear();
      }
      if(dt.getMonthOfYear() == lastmonth){
        assert(countSinceChange < numberPerShard);
        countSinceChange++;
      }
      else{
        assertEquals(numberPerShard,countSinceChange);
        countSinceChange=1;
      };
      lastmonth = dt.getMonthOfYear();
      assertEquals(subject.getCounterAtId(id.getId()), id.getCounterValue());
    }
    assertEquals(totalNumberOfObjects,counter);
  }

  @Test
  public void getIteratorTestWeekly() throws RhombusException {
    Long millistamp = 946740000000L;
    millistamp = System.currentTimeMillis();
    System.out.println(millistamp);
    UUID startingUUID = UUIDs.startOf(millistamp);
    System.out.println("UUID of start is "+startingUUID+" (DATE= "+UuidUtil.getDateFromUUID(startingUUID)+" )");


    TimebasedShardingStrategy shardingStrategy = new ShardingStrategyWeekly();
    int numberPerShard = 3;
    long totalNumberOfObjects = 950L;
    FakeIdRange subject = new FakeIdRange(CField.CDataType.TIMEUUID,startingUUID,totalNumberOfObjects,(long)numberPerShard, shardingStrategy, "testing");
    Iterator<FakeIdRange.IdInRange> it = subject.getIterator(CObjectOrdering.ASCENDING);

    long counter = 0;
    int lastweek = -1;
    int countSinceChange = 0;
    while(it.hasNext()){
      counter++;
      FakeIdRange.IdInRange id = it.next();
      DateTime dt = UuidUtil.getDateFromUUID((UUID)id.getId());
      if(lastweek == -1){
        //initialization case
        countSinceChange = 1;
        lastweek = dt.getWeekOfWeekyear();
      }
      else if(dt.getWeekOfWeekyear() == lastweek){
        assert(countSinceChange < numberPerShard);
        countSinceChange++;
      }
      else{
        assertEquals(numberPerShard,countSinceChange);
        countSinceChange=1;
      };
      lastweek = dt.getWeekOfWeekyear();
      //System.out.println("countSinceChange = " + countSinceChange);
      //System.out.println("Actual Counter = " + counter);
      //System.out.println("Id Counter = " + id.getCounterValue());
      //System.out.println("Counter at ID = " + subject.getCounterAtId(id.getId()));
      //System.out.println("Date on UUID is: " + UuidUtil.getDateFromUUID((UUID)id.getId()));
      assertEquals(subject.getCounterAtId(id.getId()), id.getCounterValue());
    }
    assertEquals(totalNumberOfObjects,counter);
  }

  @Test
  public void getIteratorDailyWeekly() throws RhombusException {
    Long millistamp = System.currentTimeMillis();
    System.out.println(millistamp);
    UUID startingUUID = UUIDs.startOf(millistamp);
    System.out.println("UUID of start is "+startingUUID+" (DATE= "+UuidUtil.getDateFromUUID(startingUUID)+" )");

    TimebasedShardingStrategy shardingStrategy = new ShardingStrategyDaily();
    int numberPerShard = 3;
    long totalNumberOfObjects = 950L;
    FakeIdRange subject = new FakeIdRange(CField.CDataType.TIMEUUID,startingUUID,totalNumberOfObjects,(long)numberPerShard, shardingStrategy, "testing");
    Iterator<FakeIdRange.IdInRange> it = subject.getIterator(CObjectOrdering.ASCENDING);

    int counter = 0;
    Map<String,Long> shards = Maps.newTreeMap();
    while(it.hasNext()){
      counter++;
      FakeIdRange.IdInRange id = it.next();
      DateTime dt = UuidUtil.getDateFromUUID((UUID)id.getId());
      if(shards.get(dt.getDayOfYear()+"-"+dt.getYear()) == null){
        shards.put(dt.getDayOfYear() + "-" + dt.getYear(), 1L);
      }
      else{
        shards.put(dt.getDayOfYear()+"-"+dt.getYear(), shards.get(dt.getDayOfYear()+"-"+dt.getYear())+1L);
      }
      assertEquals(subject.getCounterAtId(id.getId()), id.getCounterValue());
    }
    assertEquals(totalNumberOfObjects, counter);
   
    for(Long shardcount : shards.values()){
      assert(Long.valueOf(numberPerShard) >= Long.valueOf(shardcount));
    }
  }

}
TOP

Related Classes of com.pardot.rhombus.FakeIdRangeTest

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.