Search in sources :

Example 81 with Scan

use of com.scalar.db.api.Scan in project scalardb by scalar-labs.

the class JdbcServiceTest method whenGetScannerExecuted_withScan_shouldCallQueryBuilder.

@Test
@SuppressFBWarnings("OBL_UNSATISFIED_OBLIGATION")
public void whenGetScannerExecuted_withScan_shouldCallQueryBuilder() throws Exception {
    // Arrange
    when(queryBuilder.select(any())).thenReturn(selectQueryBuilder);
    when(selectQueryBuilder.from(any(), any(), any())).thenReturn(selectQueryBuilder);
    when(selectQueryBuilder.where(any(), any(), anyBoolean(), any(), anyBoolean())).thenReturn(selectQueryBuilder);
    when(selectQueryBuilder.orderBy(any())).thenReturn(selectQueryBuilder);
    when(selectQueryBuilder.limit(anyInt())).thenReturn(selectQueryBuilder);
    when(selectQueryBuilder.build()).thenReturn(selectQuery);
    when(connection.prepareStatement(any())).thenReturn(preparedStatement);
    when(preparedStatement.executeQuery()).thenReturn(resultSet);
    when(resultSet.next()).thenReturn(false);
    // Act
    Scan scan = new Scan(new Key("p1", "val")).forNamespace(NAMESPACE).forTable(TABLE);
    jdbcService.getScanner(scan, connection);
    // Assert
    verify(operationChecker).check(any(Scan.class));
    verify(queryBuilder).select(any());
}
Also used : Scan(com.scalar.db.api.Scan) Key(com.scalar.db.io.Key) Test(org.junit.jupiter.api.Test) SuppressFBWarnings(edu.umd.cs.findbugs.annotations.SuppressFBWarnings)

Example 82 with Scan

use of com.scalar.db.api.Scan in project scalardb by scalar-labs.

the class MultiStorageTest method whenScanDataFromTable1InNamespace2_DataShouldBeScannedFromStorage2.

@Test
public void whenScanDataFromTable1InNamespace2_DataShouldBeScannedFromStorage2() throws ExecutionException {
    // Arrange
    String namespace = NAMESPACE2;
    String table = TABLE1;
    Key partitionKey = new Key(COL_NAME1, 1);
    Scan scan = new Scan(partitionKey).forNamespace(namespace).forTable(table);
    // Act
    multiStorage.scan(scan);
    // Assert
    verify(storage2).scan(any(Scan.class));
}
Also used : Scan(com.scalar.db.api.Scan) Key(com.scalar.db.io.Key) Test(org.junit.jupiter.api.Test)

Example 83 with Scan

use of com.scalar.db.api.Scan in project scalardb by scalar-labs.

the class MultiStorageTest method whenScanDataFromTable2_DataShouldBeScannedFromStorage2.

@Test
public void whenScanDataFromTable2_DataShouldBeScannedFromStorage2() throws ExecutionException {
    String namespace = NAMESPACE1;
    String table = TABLE2;
    Key partitionKey = new Key(COL_NAME1, 1);
    Scan scan = new Scan(partitionKey).forNamespace(namespace).forTable(table);
    // Act
    multiStorage.scan(scan);
    // Assert
    verify(storage2).scan(any(Scan.class));
}
Also used : Scan(com.scalar.db.api.Scan) Key(com.scalar.db.io.Key) Test(org.junit.jupiter.api.Test)

Example 84 with Scan

use of com.scalar.db.api.Scan in project scalardb by scalar-labs.

the class ConsensusCommitTest method scan_ScanGiven_ShouldCallCrudHandlerScan.

@Test
public void scan_ScanGiven_ShouldCallCrudHandlerScan() throws CrudException {
    // Arrange
    Scan scan = prepareScan();
    TransactionResult result = mock(TransactionResult.class);
    List<Result> results = Collections.singletonList(result);
    when(crud.scan(scan)).thenReturn(results);
    // Act Assert
    List<Result> actual = consensus.scan(scan);
    // Assert
    assertThat(actual.size()).isEqualTo(1);
    verify(crud).scan(scan);
}
Also used : Scan(com.scalar.db.api.Scan) Result(com.scalar.db.api.Result) Test(org.junit.jupiter.api.Test)

Example 85 with Scan

use of com.scalar.db.api.Scan in project scalardb by scalar-labs.

the class CrudHandlerTest method scan_PreparedResultGivenFromStorage_ShouldNeverUpdateSnapshotThrowUncommittedRecordException.

@Test
public void scan_PreparedResultGivenFromStorage_ShouldNeverUpdateSnapshotThrowUncommittedRecordException() throws ExecutionException {
    // Arrange
    Scan scan = prepareScan();
    result = prepareResult(TransactionState.PREPARED);
    when(scanner.iterator()).thenReturn(Collections.singletonList(result).iterator());
    when(storage.scan(scan)).thenReturn(scanner);
    // Act
    assertThatThrownBy(() -> handler.scan(scan)).isInstanceOf(UncommittedRecordException.class);
    // Assert
    verify(snapshot, never()).put(any(Snapshot.Key.class), ArgumentMatchers.<Optional<TransactionResult>>any());
}
Also used : Scan(com.scalar.db.api.Scan) Key(com.scalar.db.io.Key) Test(org.junit.jupiter.api.Test)

Aggregations

Scan (com.scalar.db.api.Scan)241 Key (com.scalar.db.io.Key)137 Test (org.junit.jupiter.api.Test)125 Result (com.scalar.db.api.Result)105 Test (org.junit.Test)72 Put (com.scalar.db.api.Put)37 HashMap (java.util.HashMap)32 QueryRequest (software.amazon.awssdk.services.dynamodb.model.QueryRequest)32 AttributeValue (software.amazon.awssdk.services.dynamodb.model.AttributeValue)31 ByteBuffer (java.nio.ByteBuffer)27 KeyBytesEncoder (com.scalar.db.storage.dynamo.bytes.KeyBytesEncoder)26 Scanner (com.scalar.db.api.Scanner)17 CosmosQueryRequestOptions (com.azure.cosmos.models.CosmosQueryRequestOptions)14 Assertions.catchThrowable (org.assertj.core.api.Assertions.catchThrowable)13 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)13 PartitionKey (com.azure.cosmos.models.PartitionKey)11 ArrayList (java.util.ArrayList)11 Delete (com.scalar.db.api.Delete)9 Value (com.scalar.db.io.Value)8 ConditionalExpression (com.scalar.db.api.ConditionalExpression)7