use of com.scalar.db.api.PutIf in project scalardb by scalar-labs.
the class PrepareMutationComposerTest method delete_DeleteAndResultGiven_ShouldComposePutWithPutIfCondition.
@Test
public void delete_DeleteAndResultGiven_ShouldComposePutWithPutIfCondition() {
// Arrange
Delete delete = prepareDelete();
TransactionResult result = prepareResult();
// Act
composer.add(delete, result);
// Assert
Put actual = (Put) mutations.get(0);
Put expected = new Put(delete.getPartitionKey(), delete.getClusteringKey().orElse(null)).forNamespace(delete.forNamespace().get()).forTable(delete.forTable().get());
expected.withConsistency(Consistency.LINEARIZABLE);
expected.withCondition(new PutIf(new ConditionalExpression(VERSION, toVersionValue(2), Operator.EQ), new ConditionalExpression(ID, toIdValue(ANY_ID_2), Operator.EQ)));
expected.withValue(Attribute.toPreparedAtValue(ANY_TIME_5));
expected.withValue(Attribute.toIdValue(ANY_ID_3));
expected.withValue(Attribute.toStateValue(TransactionState.DELETED));
expected.withValue(Attribute.toVersionValue(3));
expected.withValue(Attribute.toBeforePreparedAtValue(ANY_TIME_3));
expected.withValue(Attribute.toBeforeCommittedAtValue(ANY_TIME_4));
expected.withValue(Attribute.toBeforeIdValue(ANY_ID_2));
expected.withValue(Attribute.toBeforeStateValue(TransactionState.COMMITTED));
expected.withValue(Attribute.toBeforeVersionValue(2));
expected.withValue(Attribute.BEFORE_PREFIX + ANY_NAME_3, ANY_INT_2);
assertThat(actual).isEqualTo(expected);
}
use of com.scalar.db.api.PutIf in project scalardb by scalar-labs.
the class RollbackMutationComposerTest method add_GetAndDeletedResultByThisGiven_ShouldComposePut.
@Test
public void add_GetAndDeletedResultByThisGiven_ShouldComposePut() throws ExecutionException {
// Arrange
composer = new RollbackMutationComposer(ANY_ID_2, storage, tableMetadataManager, mutations);
TransactionResult result = prepareResult(TransactionState.DELETED);
Get get = prepareGet();
// Act
composer.add(get, result);
// Assert
Put actual = (Put) mutations.get(0);
Put expected = new Put(get.getPartitionKey(), get.getClusteringKey().orElse(null)).forNamespace(get.forNamespace().get()).forTable(get.forTable().get());
expected.withConsistency(Consistency.LINEARIZABLE);
expected.withCondition(new PutIf(new ConditionalExpression(ID, toIdValue(ANY_ID_2), Operator.EQ), new ConditionalExpression(STATE, toStateValue(TransactionState.DELETED), Operator.EQ)));
expected.withValues(extractAfterValues(prepareInitialResult(ANY_ID_1, TransactionState.COMMITTED)));
assertThat(actual).isEqualTo(expected);
}
use of com.scalar.db.api.PutIf in project scalardb by scalar-labs.
the class RollbackMutationComposerTest method add_GetAndPreparedResultByThisGiven_ShouldComposePut.
@Test
public void add_GetAndPreparedResultByThisGiven_ShouldComposePut() throws ExecutionException {
// Arrange
composer = new RollbackMutationComposer(ANY_ID_2, storage, tableMetadataManager, mutations);
TransactionResult result = prepareResult(TransactionState.PREPARED);
when(storage.get(any(Get.class))).thenReturn(Optional.of(result));
Get get = prepareGet();
// Act
composer.add(get, result);
// Assert
Put actual = (Put) mutations.get(0);
Put expected = new Put(get.getPartitionKey(), get.getClusteringKey().orElse(null)).forNamespace(get.forNamespace().get()).forTable(get.forTable().get());
expected.withConsistency(Consistency.LINEARIZABLE);
expected.withCondition(new PutIf(new ConditionalExpression(ID, toIdValue(ANY_ID_2), Operator.EQ), new ConditionalExpression(STATE, toStateValue(TransactionState.PREPARED), Operator.EQ)));
expected.withValues(extractAfterValues(prepareInitialResult(ANY_ID_1, TransactionState.COMMITTED)));
assertThat(actual).isEqualTo(expected);
}
use of com.scalar.db.api.PutIf in project scalardb by scalar-labs.
the class RollbackMutationComposerTest method add_ScanAndDeletedResultByThisGiven_ShouldComposePut.
@Test
public void add_ScanAndDeletedResultByThisGiven_ShouldComposePut() throws ExecutionException {
// Arrange
composer = new RollbackMutationComposer(ANY_ID_2, storage, tableMetadataManager, mutations);
TransactionResult result = prepareResult(TransactionState.DELETED);
Scan scan = prepareScan();
// Act
composer.add(scan, result);
// Assert
Put actual = (Put) mutations.get(0);
Put expected = new Put(scan.getPartitionKey(), result.getClusteringKey().orElse(null)).forNamespace(scan.forNamespace().get()).forTable(scan.forTable().get());
expected.withConsistency(Consistency.LINEARIZABLE);
expected.withCondition(new PutIf(new ConditionalExpression(ID, toIdValue(ANY_ID_2), Operator.EQ), new ConditionalExpression(STATE, toStateValue(TransactionState.DELETED), Operator.EQ)));
expected.withValues(extractAfterValues(prepareInitialResult(ANY_ID_1, TransactionState.COMMITTED)));
assertThat(actual).isEqualTo(expected);
}
use of com.scalar.db.api.PutIf in project scalardb by scalar-labs.
the class RollbackMutationComposerTest method add_ScanAndPreparedResultByThisGiven_ShouldComposePut.
@Test
public void add_ScanAndPreparedResultByThisGiven_ShouldComposePut() throws ExecutionException {
// Arrange
composer = new RollbackMutationComposer(ANY_ID_2, storage, tableMetadataManager, mutations);
TransactionResult result = prepareResult(TransactionState.PREPARED);
Scan scan = prepareScan();
// Act
composer.add(scan, result);
// Assert
Put actual = (Put) mutations.get(0);
Put expected = new Put(scan.getPartitionKey(), result.getClusteringKey().orElse(null)).forNamespace(scan.forNamespace().get()).forTable(scan.forTable().get());
expected.withConsistency(Consistency.LINEARIZABLE);
expected.withCondition(new PutIf(new ConditionalExpression(ID, toIdValue(ANY_ID_2), Operator.EQ), new ConditionalExpression(STATE, toStateValue(TransactionState.PREPARED), Operator.EQ)));
expected.withValues(extractAfterValues(prepareInitialResult(ANY_ID_1, TransactionState.COMMITTED)));
assertThat(actual).isEqualTo(expected);
}
Aggregations