Package com.pardot.rhombus.functional

Source Code of com.pardot.rhombus.functional.ObjectMapperClientFilteringITCase

package com.pardot.rhombus.functional;


import com.google.common.collect.Maps;
import com.pardot.rhombus.ConnectionManager;
import com.pardot.rhombus.Criteria;
import com.pardot.rhombus.ObjectMapper;
import com.pardot.rhombus.cobject.CKeyspaceDefinition;
import com.pardot.rhombus.cobject.CObjectOrdering;
import com.pardot.rhombus.util.JsonUtil;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import java.util.UUID;

import static org.junit.Assert.*;

public class ObjectMapperClientFilteringITCase extends RhombusFunctionalTest {

  private static Logger logger = LoggerFactory.getLogger(ObjectMapperClientFilteringITCase.class);

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

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

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

    //Build the keyspace, get the object mapper, and truncate data
    cm.buildKeyspace(definition, true);
    cm.setDefaultKeyspace(definition);
    ObjectMapper om = cm.getObjectMapper(definition.getName());
    om.setExecuteAsync(false);

    //Insert one object which is filtered and one which is not
    Map<String, Object> testObject = Maps.newHashMap();
    testObject.put("foreignid", 123l);
    testObject.put("filtered", 0);
    testObject.put("data1", "notfiltered");
    UUID notFilteredKey = (UUID)om.insert("testtype", testObject);

    testObject = Maps.newHashMap();
    testObject.put("foreignid", 123l);
    testObject.put("filtered", 1);
    testObject.put("data1", "filtered");
    UUID filteredKey = (UUID)om.insert("testtype", testObject);

    Thread.sleep(1000l);

    // Make sure we get both back when we query using a standard index
    Criteria foreignIdCriteria = new Criteria();
    foreignIdCriteria.setOrdering(CObjectOrdering.DESCENDING);
    foreignIdCriteria.setLimit(50l);
    foreignIdCriteria.setAllowFiltering(true);
    SortedMap<String, Object> indexKeys = Maps.newTreeMap();
    indexKeys.put("foreignid", 123l);
    foreignIdCriteria.setIndexKeys(indexKeys);
    List<Map<String, Object>> dbObjects = om.list("testtype", foreignIdCriteria);
    assertEquals(2, dbObjects.size());

    // Make sure we only get one back when searching for not filtered
    Criteria foreignIdAndNotFilteredCriteria = new Criteria();
    foreignIdAndNotFilteredCriteria.setOrdering(CObjectOrdering.DESCENDING);
    foreignIdAndNotFilteredCriteria.setLimit(50l);
    foreignIdAndNotFilteredCriteria.setAllowFiltering(true);
    indexKeys = Maps.newTreeMap();
    indexKeys.put("foreignid", 123l);
    indexKeys.put("filtered", 0);
    foreignIdAndNotFilteredCriteria.setIndexKeys(indexKeys);
    dbObjects = om.list("testtype", foreignIdAndNotFilteredCriteria);
    assertEquals(1, dbObjects.size());
    assertEquals(notFilteredKey, dbObjects.get(0).get("id"));

    // Make sure we only get one back when searching for filtered
    Criteria foreignIdAndFilteredCriteria = new Criteria();
    foreignIdAndFilteredCriteria.setOrdering(CObjectOrdering.DESCENDING);
    foreignIdAndFilteredCriteria.setLimit(50l);
    foreignIdAndFilteredCriteria.setAllowFiltering(true);
    indexKeys = Maps.newTreeMap();
    indexKeys.put("foreignid", 123l);
    indexKeys.put("filtered", 1);
    foreignIdAndFilteredCriteria.setIndexKeys(indexKeys);
    dbObjects = om.list("testtype", foreignIdAndFilteredCriteria);
    assertEquals(1, dbObjects.size());
    assertEquals(filteredKey, dbObjects.get(0).get("id"));

    //Teardown connections
    cm.teardown();
  }

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

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

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

    //Build the keyspace, get the object mapper, and truncate data
    cm.buildKeyspace(definition, true);
    cm.setDefaultKeyspace(definition);
    ObjectMapper om = cm.getObjectMapper(definition.getName());
    om.setExecuteAsync(false);

    Map<String, Object> testObject;
    long pageSize = 50;
    for(int i = 0 ; i < pageSize*2 - 5 ; i++) {
      testObject = Maps.newHashMap();
      testObject.put("foreignid", 123l);
      testObject.put("filtered", 0);
      testObject.put("data1", "notfiltered");
      om.insert("testtype", testObject);
    }

    testObject = Maps.newHashMap();
    testObject.put("foreignid", 123l);
    testObject.put("filtered", 1);
    testObject.put("data1", "filtered");
    UUID filteredKey = (UUID)om.insert("testtype", testObject);

    Thread.sleep(1000l);

    // Make sure we get one filtered result back when we query with a limit less than the number of objects
    Criteria foreignIdCriteria = new Criteria();
    foreignIdCriteria.setOrdering(CObjectOrdering.DESCENDING);
    foreignIdCriteria.setLimit(pageSize);
    foreignIdCriteria.setAllowFiltering(true);
    SortedMap<String, Object> indexKeys = Maps.newTreeMap();
    indexKeys.put("foreignid", 123l);
    indexKeys.put("filtered", 1);
    foreignIdCriteria.setIndexKeys(indexKeys);
    List<Map<String, Object>> dbObjects = om.list("testtype", foreignIdCriteria);
    assertEquals(1, dbObjects.size());

    //Teardown connections
    cm.teardown();
  }

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

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

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

    //Build the keyspace, get the object mapper, and truncate data
    cm.buildKeyspace(definition, true);
    cm.setDefaultKeyspace(definition);
    ObjectMapper om = cm.getObjectMapper(definition.getName());
    om.setExecuteAsync(false);

    Map<String, Object> testObject;
    testObject = Maps.newHashMap();
    testObject.put("foreignid", 123l);
    testObject.put("filtered", 1);
    testObject.put("data1", "filtered");
    UUID filteredKey = (UUID)om.insert("testtype", testObject);


    long pageSize = 50;
    for(int i = 0 ; i < pageSize*2 + 1 ; i++) {
      testObject = Maps.newHashMap();
      testObject.put("foreignid", 123l);
      testObject.put("filtered", 0);
      testObject.put("data1", "notfiltered");
      om.insert("testtype", testObject);
    }

    Thread.sleep(1000l);

    // Make sure we get one filtered result back when we query with a limit less than the number of objects
    Criteria foreignIdCriteria = new Criteria();
    foreignIdCriteria.setOrdering(CObjectOrdering.DESCENDING);
    foreignIdCriteria.setLimit(pageSize);
    foreignIdCriteria.setAllowFiltering(true);
    SortedMap<String, Object> indexKeys = Maps.newTreeMap();
    indexKeys.put("foreignid", 123l);
    indexKeys.put("filtered", 1);
    foreignIdCriteria.setIndexKeys(indexKeys);
    List<Map<String, Object>> dbObjects = om.list("testtype", foreignIdCriteria);
    assertEquals(1, dbObjects.size());

    //Teardown connections
    cm.teardown();
  }
}
TOP

Related Classes of com.pardot.rhombus.functional.ObjectMapperClientFilteringITCase

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.