Package com.pardot.rhombus

Examples of com.pardot.rhombus.ConnectionManager


  @Test
  public void testLargeCountWithLimitAndFiltering() throws Exception {
    logger.debug("Starting testLargeCountWithLimitAndFiltering");

    //Build the connection manager
    ConnectionManager cm = getConnectionManager();

    //Build our keyspace definition object
    CKeyspaceDefinition definition = JsonUtil.objectFromJsonResource(CKeyspaceDefinition.class, this.getClass().getClassLoader(), "MultiInsertKeyspace.js");
    assertNotNull(definition);

    //Rebuild the keyspace and get the object mapper
    cm.buildKeyspace(definition, true);
    logger.debug("Built keyspace: {}", definition.getName());
    cm.setDefaultKeyspace(definition);
    ObjectMapper om = cm.getObjectMapper();
    om.setLogCql(true);

    //Set up test data
    int nDataItems = 200;

    List<Map<String, Object>> values2 = Lists.newArrayList();

    // insert additional data, we are testing for counts > 50
    for (int i = 0; i < nDataItems; i++) {
      Map<String, Object> value = Maps.newHashMap();
      value.put("account_id", "00000003-0000-0030-0040-000000030000");
      value.put("user_id", "00000003-0000-0030-0040-000000030000");
      // Set a specific value for data we want to filter
      if (i % 3 == 0) {
        value.put("field2", "taco");
      } else {
        value.put("field2", "Value" + (i + 8));
      }
      values2.add(value);
    }

    List<Map<String, Object>> updatedValues2 = Lists.newArrayList();
    for (Map<String, Object> baseValue : values2) {
      updatedValues2.add(JsonUtil.rhombusMapFromJsonMap(baseValue, definition.getDefinitions().get("object2")));
    }

    Map<String, List<Map<String, Object>>> multiInsertMap = Maps.newHashMap();
    multiInsertMap.put("object2", updatedValues2);

    //Insert data
    om.insertBatchMixed(multiInsertMap);

    //Count the number of inserts we made
    SortedMap<String, Object> indexValues = Maps.newTreeMap();
    indexValues.put("account_id", UUID.fromString("00000003-0000-0030-0040-000000030000"));
    indexValues.put("user_id", UUID.fromString("00000003-0000-0030-0040-000000030000"));
    indexValues.put("field2", "taco");
    Criteria criteria = new Criteria();
    criteria.setIndexKeys(indexValues);
    criteria.setAllowFiltering(true);
    criteria.setLimit((long) (nDataItems / 3) - 10L);

    //now test the count function
    long count = om.count("object2", criteria);
    assertEquals((nDataItems / 3) - 10, count);

    cm.teardown();
  }
View Full Code Here


  @Test
  public void testStartEndUuidsInCriteria() throws Exception {
    logger.debug("Starting testLargeCountWithStartEndUuidsInCriteria");
    //Build the connection manager
    ConnectionManager cm = getConnectionManager();

    //Build our keyspace definition object
    CKeyspaceDefinition definition = JsonUtil.objectFromJsonResource(CKeyspaceDefinition.class, this.getClass().getClassLoader(), "MultiInsertKeyspace.js");
    assertNotNull(definition);

    //Rebuild the keyspace and get the object mapper
    cm.buildKeyspace(definition, true);
    logger.debug("Built keyspace: {}", definition.getName());
    cm.setDefaultKeyspace(definition);
    ObjectMapper om = cm.getObjectMapper();
    om.setLogCql(true);

    //Set up test data
    // we will insert 200 objects
    int nDataItems = 200;
    int namespace = 47;
    int name = 722338;

    String timeBaseUuidStr = UUIDs.startOf(System.currentTimeMillis()).toString();
    String uuidPart1 = timeBaseUuidStr.substring(0, 8);
    String uuidPart2 = timeBaseUuidStr.substring(8, timeBaseUuidStr.length());
    long uuidPart1Int = Long.parseLong(uuidPart1, 16);
    List<Map<String, Object>> values2 = Lists.newArrayList();
    List<String> uuidList = Lists.newArrayList();

    for (int i = 0; i < nDataItems; i++) {
      String uuid = String.format("%08x", (uuidPart1Int)) + uuidPart2;
      Map<String, Object> value = Maps.newHashMap();
      value.put("id", uuid);
      value.put("account_id", "00000003-0000-0030-0040-000000030000");
      value.put("user_id", "00000003-0000-0030-0040-000000030000");
      // Set a specific value for data we want to filter
      if (i % 3 == 0) {
        value.put("field2", "taco");
      } else {
        value.put("field2", "Value" + (i + 8));
      }
      values2.add(value);
      uuidList.add(uuid);
      uuidPart1Int++;

    }

    List<Map<String, Object>> updatedValues2 = Lists.newArrayList();
    for (Map<String, Object> baseValue : values2) {
      updatedValues2.add(JsonUtil.rhombusMapFromJsonMap(baseValue, definition.getDefinitions().get("object2")));
    }

    Map<String, List<Map<String, Object>>> multiInsertMap = Maps.newHashMap();
    multiInsertMap.put("object2", updatedValues2);

    //Insert data
    om.insertBatchMixed(multiInsertMap);

    //Count the number of inserts we made
    SortedMap<String, Object> indexValues = Maps.newTreeMap();
    indexValues.put("account_id", UUID.fromString("00000003-0000-0030-0040-000000030000"));
    indexValues.put("user_id", UUID.fromString("00000003-0000-0030-0040-000000030000"));

    // since we are setting up enduuid of 40th index
    // we are expecting 41 objects
    // as inclusive flag to true

    Criteria criteria = new Criteria();
    criteria.setIndexKeys(indexValues);
    criteria.setAllowFiltering(false);
    criteria.setEndUuid(UUID.fromString(uuidList.get(40)));
    criteria.setInclusive(true);
    criteria.setLimit((long) (nDataItems / 3) - 10L);

    //now test the count function
    long count = om.count("object2", criteria);
    assertEquals(41, count);

    // since we are setting up enduuid we are expecting 40 objects
    // as inclusive flag to false
    criteria = new Criteria();
    criteria.setIndexKeys(indexValues);
    criteria.setAllowFiltering(false);
    criteria.setEndUuid(UUID.fromString(uuidList.get(40)));
    criteria.setInclusive(false);
    criteria.setLimit((long) (nDataItems / 3) - 10L);


    count = om.count("object2", criteria);
    assertEquals(40, count);

    // we are setting up enduuid as id of first object,
    // with inclusive set to false
    // we are expecting 0 objects

    criteria = new Criteria();
    criteria.setIndexKeys(indexValues);
    criteria.setAllowFiltering(false);
    criteria.setEndUuid(UUID.fromString(uuidList.get(0)));
    criteria.setInclusive(false);
    criteria.setLimit((long) (nDataItems / 3) - 10L);

    count = om.count("object2", criteria);
    assertEquals(0, count);


    // we are setting up enduuid as id of first object,
    // with inclusive set to true
    // we are expecting 1 object

    criteria = new Criteria();
    criteria.setIndexKeys(indexValues);
    criteria.setAllowFiltering(false);
    criteria.setEndUuid(UUID.fromString(uuidList.get(0)));
    criteria.setInclusive(true);
    criteria.setLimit(1L);

    count = om.count("object2", criteria);
    assertEquals(1, count);

    // simulating two page retrievals, like in the php side iterator
    // assuming the page size is 100
    // limit is pageSize + 1 , 101
    // we should get 100 objects back in the last iteration
    // ordering ASC

    long pageSize = 100;
    int nextItem = 0;

    criteria = new Criteria();
    criteria.setIndexKeys(indexValues);
    criteria.setAllowFiltering(false);
    criteria.setOrdering("ASC");
    criteria.setLimit(pageSize + 1);

    List<Map<String, Object>> dbObjects = om.list("object2", criteria);
    assertEquals(pageSize + 1, dbObjects.size());
    for (Map<String, Object> result : dbObjects) {

      String dbObjectId = (String) result.get("id").toString();
      if (nextItem == pageSize) {
        break;
      }
      nextItem++;
    }

    String startUuid = dbObjects.get(nextItem).get("id").toString();
    criteria = new Criteria();
    criteria.setIndexKeys(indexValues);
    criteria.setAllowFiltering(false);
    criteria.setOrdering("ASC");
    criteria.setStartUuid(UUID.fromString(startUuid));
    criteria.setLimit(pageSize + 1);

    dbObjects = om.list("object2", criteria);
    assertEquals(pageSize, dbObjects.size());


    // simulating two page retrievals, like in the php side iterator
    // assuming the page size is 100
    // limit is pageSize + 1 , 101
    // we should get 100 objects back in the last iteration
    // ordering DESC

    nextItem = 0;

    criteria = new Criteria();
    criteria.setIndexKeys(indexValues);
    criteria.setAllowFiltering(false);
    criteria.setLimit(pageSize + 1);

    dbObjects = om.list("object2", criteria);
    assertEquals(pageSize + 1, dbObjects.size());
    for (Map<String, Object> result : dbObjects) {

      String dbObjectId = (String) result.get("id").toString();
      if (nextItem == pageSize) {
        break;
      }
      nextItem++;
    }

    String endUuid = dbObjects.get(nextItem).get("id").toString();
    criteria = new Criteria();
    criteria.setIndexKeys(indexValues);
    criteria.setAllowFiltering(false);
    criteria.setEndUuid(UUID.fromString(endUuid));
    criteria.setLimit(pageSize + 1);

    dbObjects = om.list("object2", criteria);
    assertEquals(pageSize, dbObjects.size());

    // simulating two page retrievals, like in the php side iterator
    // assuming the page size is 100
    // limit is pageSize + 1 , 101
    // we should get 100 objects back in the last iteration
    // ordering DESC
    // inclusive set to false

    nextItem = 0;

    criteria = new Criteria();
    criteria.setIndexKeys(indexValues);
    criteria.setAllowFiltering(false);
    criteria.setInclusive(false);
    criteria.setLimit(pageSize + 1);

    dbObjects = om.list("object2", criteria);
    assertEquals(pageSize + 1, dbObjects.size());
    for (Map<String, Object> result : dbObjects) {

      String dbObjectId = (String) result.get("id").toString();
      if (nextItem == pageSize) {
        break;
      }
      nextItem++;
    }

    endUuid = dbObjects.get(nextItem).get("id").toString();
    criteria = new Criteria();
    criteria.setIndexKeys(indexValues);
    criteria.setAllowFiltering(false);
    criteria.setEndUuid(UUID.fromString(endUuid));
    criteria.setLimit(pageSize + 1);

    dbObjects = om.list("object2", criteria);
    assertEquals(pageSize, dbObjects.size());


    // simulating two page retrievals, like in the php side iterator
    // assuming the page size is 100
    // limit is pageSize + 1 , 101
    // we should get 100 objects back in the last iteration
    // ordering ASC
    // inclusive set to false

    nextItem = 0;

    criteria = new Criteria();
    criteria.setIndexKeys(indexValues);
    criteria.setAllowFiltering(false);
    criteria.setInclusive(false);
    criteria.setOrdering("ASC");
    criteria.setLimit(pageSize + 1);

    dbObjects = om.list("object2", criteria);
    assertEquals(pageSize + 1, dbObjects.size());
    for (Map<String, Object> result : dbObjects) {

      String dbObjectId = (String) result.get("id").toString();
      if (nextItem == pageSize) {
        break;
      }
      nextItem++;
    }

    startUuid = dbObjects.get(nextItem).get("id").toString();
    criteria = new Criteria();
    criteria.setIndexKeys(indexValues);
    criteria.setAllowFiltering(false);
    criteria.setOrdering("ASC");
    criteria.setStartUuid(UUID.fromString(startUuid));
    criteria.setLimit(pageSize + 1);

    dbObjects = om.list("object2", criteria);
    assertEquals(pageSize, dbObjects.size());

    cm.teardown();
  }
View Full Code Here

  @Test
  public void testMultiInsert() throws Exception {
    logger.debug("Starting testMultiInsert");

    //Build the connection manager
    ConnectionManager cm = getConnectionManager();

    //Build our keyspace definition object
    CKeyspaceDefinition definition = JsonUtil.objectFromJsonResource(CKeyspaceDefinition.class, this.getClass().getClassLoader(), "MultiInsertKeyspace.js");
    assertNotNull(definition);

    //Rebuild the keyspace and get the object mapper
    cm.buildKeyspace(definition, true);
    logger.debug("Built keyspace: {}", definition.getName());
    cm.setDefaultKeyspace(definition);
    ObjectMapper om = cm.getObjectMapper();
    om.setLogCql(true);

    //Set up test data
    List<Map<String, Object>> values1 = JsonUtil.rhombusMapFromResource(this.getClass().getClassLoader(), "MultiInsertTestData1.js");
    List<Map<String, Object>> updatedValues1 = Lists.newArrayList();
    for (Map<String, Object> baseValue : values1) {
      updatedValues1.add(JsonUtil.rhombusMapFromJsonMap(baseValue, definition.getDefinitions().get("object1")));
    }
    List<Map<String, Object>> values2 = JsonUtil.rhombusMapFromResource(this.getClass().getClassLoader(), "MultiInsertTestData2.js");
    List<Map<String, Object>> updatedValues2 = Lists.newArrayList();
    for (Map<String, Object> baseValue : values2) {
      updatedValues2.add(JsonUtil.rhombusMapFromJsonMap(baseValue, definition.getDefinitions().get("object2")));
    }
    Map<String, List<Map<String, Object>>> multiInsertMap = Maps.newHashMap();
    multiInsertMap.put("object1", updatedValues1);
    multiInsertMap.put("object2", updatedValues2);

    //Insert data
    Map<String, List<UUID>> insertResults = om.insertBatchMixed(multiInsertMap);
    assertTrue(insertResults.containsKey("object1"));
    assertTrue(insertResults.containsKey("object2"));

    //Query it back out
    //Make sure that we have the proper number of results
    SortedMap<String, Object> indexValues = Maps.newTreeMap();
    indexValues.put("account_id", UUID.fromString("00000003-0000-0030-0040-000000030000"));
    indexValues.put("user_id", UUID.fromString("00000003-0000-0030-0040-000000030000"));
    Criteria criteria = new Criteria();
    criteria.setIndexKeys(indexValues);
    criteria.setLimit(50L);
    List<Map<String, Object>> results = om.list("object1", criteria);
    // Index by field1 so we can compare
    Map<String, Map<String, Object>> indexedResults = Maps.uniqueIndex(results, new Function<Map<String, Object>, String>() {
      public String apply(Map<String, Object> object) {
        return object.get("id").toString();
      }
    });
    assertEquals(3, results.size());
    // Verify the insert results were correct
    List<UUID> ids = insertResults.get("object1");
    for(int i = 0; i < updatedValues1.size(); i++) {
      // Ensure that the updatedValues insert result was in the right order
      String key = "Value" + (i+1);
      // Verify that the field1 value was where it should be in updatedValues
      assertEquals(updatedValues1.get(i).get("field1").toString(), key);
      UUID id = ids.get(i);
      assertTrue(indexedResults.containsKey(id.toString()));
      Map<String, Object> result = indexedResults.get(id.toString());
      assertEquals(key, result.get("field1"));
    }

    results = om.list("object2", criteria);
    assertEquals(4, results.size());
    // Index by field1 so we can compare
    indexedResults = Maps.uniqueIndex(results, new Function<Map<String, Object>, String>() {
      public String apply(Map<String, Object> object) {
        return object.get("id").toString();
      }
    });
    // Verify the insert results were correct
    ids = insertResults.get("object2");
    for(int i = 0; i < updatedValues2.size(); i++) {
      // Ensure that the updatedValues insert result was in the right order
      String key = "Value" + (i+4);
      // Verify that the field1 value was where it should be in updatedValues
      assertEquals(updatedValues2.get(i).get("field2").toString(), key);
      UUID id = ids.get(i);
      assertTrue(indexedResults.containsKey(id.toString()));
      Map<String, Object> result = indexedResults.get(id.toString());
      assertEquals(key, result.get("field2"));
    }
    //now test the count function too
    long count = om.count("object2", criteria);
    assertEquals(4, count);

    cm.teardown();
  }
View Full Code Here

  @Test
  public void testVisitAllEntries() throws Exception {
    logger.debug("Starting testVisitAllEntries");

    //Build the connection manager
    ConnectionManager cm = getConnectionManager();

    //Build our keyspace definition object
    CKeyspaceDefinition definition = JsonUtil.objectFromJsonResource(CKeyspaceDefinition.class, this.getClass().getClassLoader(), "MultiInsertKeyspace.js");
    assertNotNull(definition);

    //Rebuild the keyspace and get the object mapper
    cm.buildKeyspace(definition, true);
    logger.debug("Built keyspace: {}", definition.getName());
    cm.setDefaultKeyspace(definition);
    ObjectMapper om = cm.getObjectMapper();
    om.setLogCql(true);

    //Set up test data
    //insert a bunch in batches of 50
    int totalCount = 0;
    for (int batch = 0; batch < 400; batch++) {
      //do another 50
      List<Map<String, Object>> toinsert = Lists.newArrayList();
      for (int i = 0; i < 50; i++) {
        Map<String, Object> item = Maps.newHashMap();
        item.put("account_id", UUID.fromString("00000003-0000-0030-0040-000000030000"));
        item.put("user_id", UUID.fromString("00000003-0000-0030-0040-000000030000"));
        item.put("field1", "value" + (totalCount++));
        toinsert.add(item);
      }
      Map<String, List<Map<String, Object>>> insertMap = Maps.newHashMap();
      insertMap.put("object1", toinsert);

      //Insert data
      om.insertBatchMixed(insertMap);
    }


    //Now visit all of the objects we just inserted
    class MyVisitor implements CObjectVisitor {
      int counter = 0;

      public int getCount() {
        return counter;
      }

      @Override
      public void visit(Map<String, Object> object) {
        //To change body of implemented methods use File | Settings | File Templates.
        //System.out.println("Counter is "+counter+" value is "+object.get("field1"));
        counter++;
      }

      @Override
      public boolean shouldInclude(Map<String, Object> object) {
        return true;
      }
    }
    ;

    MyVisitor visitor = new MyVisitor();

    long start = System.currentTimeMillis();
    om.visitObjects("object1", visitor);
    long end = System.currentTimeMillis();
    long syncTime = end - start;

    System.out.println("Visiting all objects took " + syncTime + "ms");
    assertEquals(20000, visitor.getCount());

    cm.teardown();
  }
View Full Code Here

  @Test
  public void testTruncateKeyspace() throws Exception {
    logger.debug("testTruncateKeyspace");
    // Set up a connection manager and build the cluster
    ConnectionManager cm = getConnectionManager();

    // Build the keyspace
    CKeyspaceDefinition definition = JsonUtil.objectFromJsonResource(CKeyspaceDefinition.class, this.getClass().getClassLoader(), "CKeyspaceTestData.js");
    assertNotNull(definition);
    cm.setDefaultKeyspace(definition);
    ObjectMapper om = cm.getObjectMapper(definition.getName());

    // Insert something
    Map<String, Object> testObject = JsonUtil.rhombusMapFromJsonMap(TestHelpers.getTestObject(0), definition.getDefinitions().get("testtype"));
    UUID key = (UUID) om.insert("testtype", testObject);

    // Truncate tables
    om.truncateTables();

    // Make sure it is gone
    Map<String, Object> returnedObject = om.getByKey("testtype", key);
    assertNull(returnedObject);

    // Insert something new
    key = (UUID) om.insert("testtype", testObject);

    // Make sure it is there
    returnedObject = om.getByKey("testtype", key);
    assertNotNull(returnedObject);

    cm.teardown();
  }
View Full Code Here

    String objectType = "simple";
    String index1Value = "value1";
    String index2Value = "value2";

    //Build the connection manager
    ConnectionManager cm = getConnectionManager();
    cm.setLogCql(true);

    //Build our keyspace definition object
    CKeyspaceDefinition definition = JsonUtil.objectFromJsonResource(CKeyspaceDefinition.class, this.getClass().getClassLoader(), "SimpleKeyspace.js");

    //Rebuild the keyspace and get the object mapper
    cm.buildKeyspace(definition, true);
    logger.debug("Built keyspace: {}", definition.getName());
    cm.setDefaultKeyspace(definition);
    ObjectMapper om = cm.getObjectMapper();
    om.setLogCql(true);

    // Insert 20 values
    List<Map<String, Object>> values = this.getNValues(20, index1Value, index2Value);
    for(Map<String, Object> insertValue : values) {
      om.insert(objectType, insertValue);
    }

    VisitorFactoryTester visitorFactory = new VisitorFactoryTester();
    TableScanner scanner = new TableScanner(om, objectType, 1, visitorFactory, null);
    scanner.scan();

    long totalCount = 0;
    for(VisitorTester visitor : visitorFactory.getInstances()) {
      totalCount += visitor.getObjectCount();
    }

    assertEquals(20l, totalCount);
    cm.teardown();
  }
View Full Code Here

      FileUtils.deleteRecursive(savepointDirectory);
    }
    Integer numPartitions = 4;

    //Build the connection manager
    ConnectionManager cm = getConnectionManager();
    cm.setLogCql(true);

    //Build our keyspace definition object
    CKeyspaceDefinition definition = JsonUtil.objectFromJsonResource(CKeyspaceDefinition.class, this.getClass().getClassLoader(), "SimpleKeyspace.js");

    //Rebuild the keyspace and get the object mapper
    cm.buildKeyspace(definition, true);
    logger.debug("Built keyspace: {}", definition.getName());
    cm.setDefaultKeyspace(definition);
    ObjectMapper om = cm.getObjectMapper();
    om.setLogCql(true);

    // Insert 83 values
    Long valueCount = 83L;
    List<Map<String, Object>> values = this.getNValues(valueCount, index1Value, index2Value);
    for(Map<String, Object> insertValue : values) {
      om.insert(objectType, insertValue);
    }

    VisitorFactoryTester visitorFactory = new VisitorFactoryTester();
    TableScanner scanner = new TableScanner(om, objectType, numPartitions, visitorFactory, savepointDirectoryName);
    List<Map.Entry<Long, Long>> ranges = scanner.makeRanges();
    scanner.scan();

    Long totalCount = 0L;
    for(VisitorTester visitor : visitorFactory.getInstances()) {
      totalCount += visitor.getObjectCount();
    }

    assertEquals(valueCount, totalCount);

    this.verifySavepoints(numPartitions, savepointDirectoryName, objectType, om, ranges);

    cm.teardown();
  }
View Full Code Here

      FileUtils.deleteRecursive(savepointDirectory);
    }
    Integer numPartitions = 2;

    //Build the connection manager
    ConnectionManager cm = getConnectionManager();
    cm.setLogCql(true);

    //Build our keyspace definition object
    CKeyspaceDefinition definition = JsonUtil.objectFromJsonResource(CKeyspaceDefinition.class, this.getClass().getClassLoader(), "SimpleKeyspace.js");

    //Rebuild the keyspace and get the object mapper
    cm.buildKeyspace(definition, true);
    logger.debug("Built keyspace: {}", definition.getName());
    cm.setDefaultKeyspace(definition);
    ObjectMapper om = cm.getObjectMapper();
    om.setLogCql(true);

    // Insert 83 values
    Long valueCount = 83L;
    List<Map<String, Object>> values = this.getNValues(valueCount, index1Value, index2Value);
    for(Map<String, Object> insertValue : values) {
      om.insert(objectType, insertValue);
    }

    // Calculate halfway through each range
    UUID[] rangeHalfwayPoints = new UUID[numPartitions];
    BigInteger fullRange = BigInteger.valueOf(TableScanner.maxToken).subtract(BigInteger.valueOf(TableScanner.minToken));
    BigInteger rangeLength = fullRange.divide(BigInteger.valueOf(numPartitions));
    BigInteger rangeStart = BigInteger.valueOf(TableScanner.minToken);
    for(int i = 0 ; i < numPartitions - 1 ; i++) {
      BigInteger rangeEnd = rangeStart.add(rangeLength).subtract(BigInteger.ONE);
      Long halfwayToken = rangeLength.divide(BigInteger.valueOf(2)).add(rangeStart).longValue();
      rangeHalfwayPoints[i] = (UUID)om.scanTableWithStartToken(objectType, halfwayToken, TableScanner.maxToken, 1L).get(0).get("id");

      rangeStart = rangeEnd.add(BigInteger.ONE);
    }
    Long halfwayToken = rangeLength.divide(BigInteger.valueOf(2)).add(rangeStart).longValue();
    rangeHalfwayPoints[numPartitions - 1] = (UUID)om.scanTableWithStartToken(objectType, halfwayToken, TableScanner.maxToken, 1L).get(0).get("id");

    // Write halfway points to the savepoint directory
    savepointDirectory = new File(savepointDirectoryName);
    savepointDirectory.mkdir();

    for (int i = 0; i < numPartitions; i++) {
      String filename = TableScanner.getSavepointFilename(i);
      PrintWriter writer = new PrintWriter(new FileOutputStream(savepointDirectory.getName() + "/" + filename, false));
      writer.write(rangeHalfwayPoints[i].toString() + "\n");
      writer.close();
    }

    // Create and run scanner
    VisitorFactoryTester visitorFactory = new VisitorFactoryTester();
    TableScanner scanner = new TableScanner(om, objectType, numPartitions, visitorFactory, savepointDirectoryName);
    List<Map.Entry<Long, Long>> ranges = scanner.makeRanges();
    scanner.scan();

    Long actualCount = 0L;
    for(VisitorTester visitor : visitorFactory.getInstances()) {
      actualCount += visitor.getObjectCount();
    }

    // The total number of visits we have will fluctuate depending on where the ids land among the token ranges, but we should be close to half
    assertTrue(Math.abs(actualCount - (valueCount/2)) < (valueCount/(numPartitions * 2)));

    this.verifySavepoints(numPartitions, savepointDirectoryName, objectType, om, ranges);

    cm.teardown();
  }
View Full Code Here

  @Test
  public void testBigScan() throws Exception {
    String objectType = "simple";

    //Build the connection manager
    ConnectionManager cm = getConnectionManager();
    cm.setLogCql(true);

    //Build our keyspace definition object
    CKeyspaceDefinition definition = JsonUtil.objectFromJsonResource(CKeyspaceDefinition.class, this.getClass().getClassLoader(), "SimpleKeyspace.js");

    //Rebuild the keyspace and get the object mapper
    cm.buildKeyspace(definition, true);
    cm.setDefaultKeyspace(definition);
    ObjectMapper om = cm.getObjectMapper();
    om.setLogCql(true);

    long insertNum = 2000l;
    long batchSize = 200;
    insertNObjects(om, insertNum, batchSize);

    VisitorFactoryTester visitorFactory = new VisitorFactoryTester();
    TableScanner scanner = new TableScanner(om, objectType, 1, visitorFactory, null);
    scanner.scan();

    long totalCount = 0;
    for(VisitorTester visitor : visitorFactory.getInstances()) {
      totalCount += visitor.getObjectCount();
    }

    assertEquals(insertNum, totalCount);
    cm.teardown();
  }
View Full Code Here

        "-keyspacefile", workingpath + "cli-functional-keyspacedef.js",
        "-f"
    ).toArray());

    //now verify that the keyspace was created and is working
    ConnectionManager cm = getConnectionManager();
    ObjectMapper om = cm.getObjectMapper("clifunctional");
    CKeyspaceDefinition keyspace = om.getKeyspaceDefinition_ONLY_FOR_TESTING();
    assertEquals("clifunctional", keyspace.getName());
    assertEquals(3, keyspace.getDefinitions().get("clitest").getFields().size());
    assertEquals(2, keyspace.getDefinitions().get("clitest").getIndexes().size());

    cm.teardown();
  }
View Full Code Here

TOP

Related Classes of com.pardot.rhombus.ConnectionManager

Copyright © 2018 www.massapicom. 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.