use of com.scalar.db.api.Scan.Ordering.Order in project scalardb by scalar-labs.
the class StorageSingleClusteringKeyScanIntegrationTestBase method scan_WithClusteringKeyEndRange_ShouldReturnProperResult.
@Test
public void scan_WithClusteringKeyEndRange_ShouldReturnProperResult() throws ExecutionException, IOException {
for (DataType clusteringKeyType : clusteringKeyTypes) {
for (Order clusteringOrder : Order.values()) {
truncateTable(clusteringKeyType, clusteringOrder);
List<Value<?>> clusteringKeyValues = prepareRecords(clusteringKeyType, clusteringOrder);
for (boolean endInclusive : Arrays.asList(true, false)) {
for (OrderingType orderingType : OrderingType.values()) {
for (boolean withLimit : Arrays.asList(false, true)) {
scan_WithClusteringKeyEndRange_ShouldReturnProperResult(clusteringKeyValues, clusteringKeyType, clusteringOrder, endInclusive, orderingType, withLimit);
}
}
}
}
}
}
use of com.scalar.db.api.Scan.Ordering.Order in project scalardb by scalar-labs.
the class StorageMultipleClusteringKeyScanIntegrationTestBase method execute.
private void execute(TestForFirstClusteringKeyScan test) throws java.util.concurrent.ExecutionException, InterruptedException {
List<Callable<Void>> testCallables = new ArrayList<>();
for (DataType firstClusteringKeyType : clusteringKeyTypes.keySet()) {
for (Order firstClusteringOrder : Order.values()) {
testCallables.add(() -> {
truncateTable(firstClusteringKeyType, firstClusteringOrder, DataType.INT, Order.ASC);
List<ClusteringKey> clusteringKeys = prepareRecords(firstClusteringKeyType, firstClusteringOrder, DataType.INT, Order.ASC);
test.execute(clusteringKeys, firstClusteringKeyType, firstClusteringOrder);
return null;
});
}
}
execute(testCallables);
}
use of com.scalar.db.api.Scan.Ordering.Order in project scalardb by scalar-labs.
the class StorageMultipleClusteringKeyScanIntegrationTestBase method deleteTables.
private static void deleteTables() throws java.util.concurrent.ExecutionException, InterruptedException {
List<Callable<Void>> testCallables = new ArrayList<>();
for (DataType firstClusteringKeyType : clusteringKeyTypes.keySet()) {
Callable<Void> testCallable = () -> {
for (DataType secondClusteringKeyType : clusteringKeyTypes.get(firstClusteringKeyType)) {
for (Order firstClusteringOrder : Order.values()) {
for (Order secondClusteringOrder : Order.values()) {
admin.dropTable(getNamespaceName(firstClusteringKeyType), getTableName(firstClusteringKeyType, firstClusteringOrder, secondClusteringKeyType, secondClusteringOrder));
}
}
}
admin.dropNamespace(getNamespaceName(firstClusteringKeyType));
return null;
};
testCallables.add(testCallable);
}
// We firstly execute the callables without the last one. And then we execute the last one. This
// is because the last table deletion deletes the metadata table, and this process can't be
// handled in multiple threads/processes at the same time.
execute(testCallables.subList(0, testCallables.size() - 1));
execute(testCallables.subList(testCallables.size() - 1, testCallables.size()));
}
use of com.scalar.db.api.Scan.Ordering.Order in project scalardb by scalar-labs.
the class StorageMultipleClusteringKeyScanIntegrationTestBase method createTables.
private void createTables() throws InterruptedException, java.util.concurrent.ExecutionException {
List<Callable<Void>> testCallables = new ArrayList<>();
Map<String, String> options = getCreateOptions();
for (DataType firstClusteringKeyType : clusteringKeyTypes.keySet()) {
Callable<Void> testCallable = () -> {
admin.createNamespace(getNamespaceName(firstClusteringKeyType), true, options);
for (DataType secondClusteringKeyType : clusteringKeyTypes.get(firstClusteringKeyType)) {
for (Order firstClusteringOrder : Order.values()) {
for (Order secondClusteringOrder : Order.values()) {
createTable(firstClusteringKeyType, firstClusteringOrder, secondClusteringKeyType, secondClusteringOrder, options);
}
}
}
return null;
};
testCallables.add(testCallable);
}
// We firstly execute the first one and then the rest. This is because the first table creation
// creates the metadata table, and this process can't be handled in multiple threads/processes
// at the same time.
execute(testCallables.subList(0, 1));
execute(testCallables.subList(1, testCallables.size()));
}
use of com.scalar.db.api.Scan.Ordering.Order in project scalardb by scalar-labs.
the class StorageSingleClusteringKeyScanIntegrationTestBase method scan_WithClusteringKeyRangeWithSameValues_ShouldReturnProperResult.
@Test
public void scan_WithClusteringKeyRangeWithSameValues_ShouldReturnProperResult() throws ExecutionException, IOException {
for (DataType clusteringKeyType : clusteringKeyTypes) {
for (Order clusteringOrder : Order.values()) {
truncateTable(clusteringKeyType, clusteringOrder);
List<Value<?>> clusteringKeyValues = prepareRecords(clusteringKeyType, clusteringOrder);
for (boolean startInclusive : Arrays.asList(true, false)) {
for (boolean endInclusive : Arrays.asList(true, false)) {
for (OrderingType orderingType : OrderingType.values()) {
for (boolean withLimit : Arrays.asList(false, true)) {
scan_WithClusteringKeyRangeWithSameValues_ShouldReturnProperResult(clusteringKeyValues, clusteringKeyType, clusteringOrder, startInclusive, endInclusive, orderingType, withLimit);
}
}
}
}
}
}
}
Aggregations