Search in sources :

Example 21 with Order

use of com.cinchapi.concourse.lang.sort.Order in project concourse by cinchapi.

the class SortingTest method testMissingKeyAscendingSort.

@Test
public void testMissingKeyAscendingSort() {
    Map<Long, Map<String, Set<TObject>>> records = Maps.newLinkedHashMap();
    List<String> keys = Lists.newArrayList("name", "company", "age");
    Map<String, Set<TObject>> entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    Set<TObject> values = Sets.newHashSet(Convert.javaToThrift("jeff"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("Cinchapi"));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(50));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(1), entry);
    entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    values = Sets.newHashSet(Convert.javaToThrift("jeffB"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("Blavity"));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(100));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(2), entry);
    entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    values = Sets.newHashSet(Convert.javaToThrift("ashleah"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("ARMN Inc."));
    entry.put("company", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(3), entry);
    entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    values = Sets.newHashSet(Convert.javaToThrift("mark"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("Cinchapi"));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(100));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(4), entry);
    Order order = Order.by("age").ascending().build();
    Store store = new Queue(1);
    Map<Long, Map<String, Set<TObject>>> result = Sorting.byValues(order, store).organize(records);
    List<Long> expectedSort = Lists.newArrayList();
    expectedSort.add(Integer.toUnsignedLong(1));
    expectedSort.add(Integer.toUnsignedLong(2));
    expectedSort.add(Integer.toUnsignedLong(4));
    expectedSort.add(Integer.toUnsignedLong(3));
    List<Long> sort = Lists.newArrayList(result.keySet());
    Assert.assertEquals(expectedSort, sort);
}
Also used : Order(com.cinchapi.concourse.lang.sort.Order) TObject(com.cinchapi.concourse.thrift.TObject) Set(java.util.Set) Store(com.cinchapi.concourse.server.storage.Store) Map(java.util.Map) Queue(com.cinchapi.concourse.server.storage.temp.Queue) Test(org.junit.Test)

Example 22 with Order

use of com.cinchapi.concourse.lang.sort.Order in project concourse by cinchapi.

the class SortingTest method testIntDescendingSort.

@Test
public void testIntDescendingSort() {
    Map<Long, Map<String, Set<TObject>>> records = Maps.newLinkedHashMap();
    List<String> keys = Lists.newArrayList("name", "company", "age");
    Map<String, Set<TObject>> entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    Set<TObject> values = Sets.newHashSet(Convert.javaToThrift("jeff"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("Cinchapi"));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(50));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(1), entry);
    entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    values = Sets.newHashSet(Convert.javaToThrift("jeffB"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("Blavity"));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(100));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(2), entry);
    entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    values = Sets.newHashSet(Convert.javaToThrift("ashleah"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("ARMN Inc."));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(100));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(3), entry);
    entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    values = Sets.newHashSet(Convert.javaToThrift("mark"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("Cinchapi"));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(25));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(4), entry);
    Order order = Order.by("age").descending().build();
    Store store = new Queue(1);
    Map<Long, Map<String, Set<TObject>>> result = Sorting.byValues(order, store).organize(records);
    List<Long> expectedSort = Lists.newArrayList();
    expectedSort.add(Integer.toUnsignedLong(2));
    expectedSort.add(Integer.toUnsignedLong(3));
    expectedSort.add(Integer.toUnsignedLong(1));
    expectedSort.add(Integer.toUnsignedLong(4));
    List<Long> sort = Lists.newArrayList(result.keySet());
    Assert.assertEquals(expectedSort, sort);
}
Also used : Order(com.cinchapi.concourse.lang.sort.Order) TObject(com.cinchapi.concourse.thrift.TObject) Set(java.util.Set) Store(com.cinchapi.concourse.server.storage.Store) Map(java.util.Map) Queue(com.cinchapi.concourse.server.storage.temp.Queue) Test(org.junit.Test)

Example 23 with Order

use of com.cinchapi.concourse.lang.sort.Order in project concourse by cinchapi.

the class SortingTest method testEqualValueQuantityAscendingSort.

@Test
public void testEqualValueQuantityAscendingSort() {
    Map<Long, Map<String, Set<TObject>>> records = Maps.newLinkedHashMap();
    List<String> keys = Lists.newArrayList("name", "company", "age");
    Map<String, Set<TObject>> entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    Set<TObject> values = Sets.newHashSet(Convert.javaToThrift("jeff"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("Cinchapi"));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(50));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(1), entry);
    entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    values = Sets.newHashSet(Convert.javaToThrift("ashleah"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("ARMN Inc."));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(100), Convert.javaToThrift(20));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(2), entry);
    entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    values = Sets.newHashSet(Convert.javaToThrift("mark"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("Cinchapi"));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(100), Convert.javaToThrift(25));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(3), entry);
    Order order = Order.by("age").ascending().build();
    Store store = new Queue(1);
    Map<Long, Map<String, Set<TObject>>> result = Sorting.byValues(order, store).organize(records);
    List<Long> expectedSort = Lists.newArrayList();
    expectedSort.add(Integer.toUnsignedLong(1));
    expectedSort.add(Integer.toUnsignedLong(2));
    expectedSort.add(Integer.toUnsignedLong(3));
    List<Long> sort = Lists.newArrayList(result.keySet());
    Assert.assertEquals(expectedSort, sort);
}
Also used : Order(com.cinchapi.concourse.lang.sort.Order) TObject(com.cinchapi.concourse.thrift.TObject) Set(java.util.Set) Store(com.cinchapi.concourse.server.storage.Store) Map(java.util.Map) Queue(com.cinchapi.concourse.server.storage.temp.Queue) Test(org.junit.Test)

Example 24 with Order

use of com.cinchapi.concourse.lang.sort.Order in project concourse by cinchapi.

the class SortingTest method testLargeSortPerformance.

@Test
@Ignore
public void testLargeSortPerformance() {
    Map<Long, Map<String, Set<TObject>>> records = Maps.newLinkedHashMap();
    List<String> keys = Lists.newArrayList("name", "company", "age");
    Map<String, Set<TObject>> entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    Set<TObject> values = Sets.newHashSet(Convert.javaToThrift("jeff"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("Cinchapi"));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(100));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(1), entry);
    entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    values = Sets.newHashSet(Convert.javaToThrift("ashleah"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("ARMN Inc."));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(100));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(2), entry);
    entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    values = Sets.newHashSet(Convert.javaToThrift("mark"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("Cinchapi"));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(50));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(3), entry);
    entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    values = Sets.newHashSet(Convert.javaToThrift("jeffB"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("Blavity"));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(1));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(4), entry);
    for (int i = 5; i < 1000000; i++) {
        values = Sets.newHashSet(Convert.javaToThrift(i));
        entry.put("age", values);
        TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(i), entry);
    }
    Order order = Order.by("age").ascending().then("company").ascending().build();
    Store store = new Queue(1);
    Map<Long, Map<String, Set<TObject>>> result = Sorting.byValues(order, store).organize(records);
    long startTime = System.nanoTime();
    Lists.newArrayList(result.keySet());
    long endTime = System.nanoTime();
    long duration = (endTime - startTime) / 1000000;
    Assert.assertTrue(duration < 30);
}
Also used : Order(com.cinchapi.concourse.lang.sort.Order) TObject(com.cinchapi.concourse.thrift.TObject) Set(java.util.Set) Store(com.cinchapi.concourse.server.storage.Store) Map(java.util.Map) Queue(com.cinchapi.concourse.server.storage.temp.Queue) Ignore(org.junit.Ignore) Test(org.junit.Test)

Example 25 with Order

use of com.cinchapi.concourse.lang.sort.Order in project concourse by cinchapi.

the class SortingTest method testMissingKeyDescendingSort.

@Test
public void testMissingKeyDescendingSort() {
    Map<Long, Map<String, Set<TObject>>> records = Maps.newLinkedHashMap();
    List<String> keys = Lists.newArrayList("name", "company", "age");
    Map<String, Set<TObject>> entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    Set<TObject> values = Sets.newHashSet(Convert.javaToThrift("jeff"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("Cinchapi"));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(50));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(1), entry);
    entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    values = Sets.newHashSet(Convert.javaToThrift("jeffB"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("Blavity"));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(100));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(2), entry);
    entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    values = Sets.newHashSet(Convert.javaToThrift("ashleah"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("ARMN Inc."));
    entry.put("company", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(3), entry);
    entry = TMaps.newLinkedHashMapWithCapacity(keys.size());
    values = Sets.newHashSet(Convert.javaToThrift("mark"));
    entry.put("name", values);
    values = Sets.newHashSet(Convert.javaToThrift("Cinchapi"));
    entry.put("company", values);
    values = Sets.newHashSet(Convert.javaToThrift(100));
    entry.put("age", values);
    TMaps.putResultDatasetOptimized(records, Integer.toUnsignedLong(4), entry);
    Order order = Order.by("age").descending();
    Store store = new Queue(1);
    Map<Long, Map<String, Set<TObject>>> result = Sorting.byValues(order, store).organize(records);
    List<Long> expectedSort = Lists.newArrayList();
    expectedSort.add(Integer.toUnsignedLong(2));
    expectedSort.add(Integer.toUnsignedLong(4));
    expectedSort.add(Integer.toUnsignedLong(1));
    expectedSort.add(Integer.toUnsignedLong(3));
    List<Long> sort = Lists.newArrayList(result.keySet());
    Assert.assertEquals(expectedSort, sort);
}
Also used : Order(com.cinchapi.concourse.lang.sort.Order) TObject(com.cinchapi.concourse.thrift.TObject) Set(java.util.Set) Store(com.cinchapi.concourse.server.storage.Store) Map(java.util.Map) Queue(com.cinchapi.concourse.server.storage.temp.Queue) Test(org.junit.Test)

Aggregations

Order (com.cinchapi.concourse.lang.sort.Order)42 Map (java.util.Map)41 Set (java.util.Set)41 Store (com.cinchapi.concourse.server.storage.Store)40 TObject (com.cinchapi.concourse.thrift.TObject)40 AbstractSyntaxTree (com.cinchapi.ccl.syntax.AbstractSyntaxTree)31 NaturalLanguage (com.cinchapi.ccl.util.NaturalLanguage)31 AnyStrings (com.cinchapi.common.base.AnyStrings)31 Array (com.cinchapi.common.base.Array)31 CheckedExceptions (com.cinchapi.common.base.CheckedExceptions)31 Reflection (com.cinchapi.common.reflect.Reflection)31 Constants (com.cinchapi.concourse.Constants)31 Link (com.cinchapi.concourse.Link)31 Timestamp (com.cinchapi.concourse.Timestamp)31 SortableColumn (com.cinchapi.concourse.data.sort.SortableColumn)31 SortableSet (com.cinchapi.concourse.data.sort.SortableSet)31 SortableTable (com.cinchapi.concourse.data.sort.SortableTable)31 ConcourseCompiler (com.cinchapi.concourse.lang.ConcourseCompiler)31 Language (com.cinchapi.concourse.lang.Language)31 Permission (com.cinchapi.concourse.security.Permission)31