Skip to content

Commit

Permalink
Refactor integration tests for Consensus Commit
Browse files Browse the repository at this point in the history
  • Loading branch information
brfrn169 committed Dec 6, 2023
1 parent 2de8433 commit 48d6e6c
Show file tree
Hide file tree
Showing 26 changed files with 663 additions and 794 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -547,7 +547,7 @@ jobs:
run: |
echo "Storage available before deletion"
df -h /
echo
echo
sudo rm -r /usr/local/lib/android
echo "Storage available after deletion"
df -h /
Expand All @@ -565,10 +565,10 @@ jobs:
- name: Wait for the container to be ready
timeout-minutes: 5
run : |
while [ "`docker inspect -f {{.State.Health.Status}} oracle-23`" != "healthy" ]
do
while [ "`docker inspect -f {{.State.Health.Status}} oracle-23`" != "healthy" ]
do
sleep 10
echo "Container is not yet ready"
echo "Container is not yet ready"
done
echo "Container is ready"
Expand Down
2 changes: 1 addition & 1 deletion core/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ task integrationTestCosmos(type: Test) {
systemProperties(System.getProperties())
}
maxParallelForks = 3
jvmArgs '-XX:MaxDirectMemorySize=2g', '-Xmx4g'
jvmArgs '-XX:MaxDirectMemorySize=4g', '-Xmx4g'
}

task integrationTestDynamo(type: Test) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.scalar.db.storage.cassandra;

import com.scalar.db.transaction.consensuscommit.ConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase;
import java.util.Collections;
import java.util.Map;
import java.util.Properties;

public class ConsensusCommitWithIncludeMetadataEnabledIntegrationTestWithCassandra
extends ConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase {
@Override
protected Properties getProperties(String testName) {
return CassandraEnv.getProperties(testName);
}

@Override
protected Map<String, String> getCreationOptions() {
return Collections.singletonMap(CassandraAdmin.REPLICATION_FACTOR, "1");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.scalar.db.storage.cassandra;

import com.scalar.db.transaction.consensuscommit.TwoPhaseConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase;
import java.util.Collections;
import java.util.Map;
import java.util.Properties;

public class TwoPhaseConsensusCommitWithIncludeMetadataEnabledIntegrationTestWithCassandra
extends TwoPhaseConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase {
@Override
protected Properties getProperties(String testName) {
return CassandraEnv.getProperties(testName);
}

@Override
protected Map<String, String> getCreationOptions() {
return Collections.singletonMap(CassandraAdmin.REPLICATION_FACTOR, "1");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.scalar.db.storage.cosmos;

import com.scalar.db.transaction.consensuscommit.ConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase;
import java.util.Map;
import java.util.Optional;
import java.util.Properties;

public class ConsensusCommitWithIncludeMetadataEnabledIntegrationTestWithCosmos
extends ConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase {

@Override
protected Properties getProperties(String testName) {
return CosmosEnv.getProperties(testName);
}

@Override
protected String getNamespace() {
String namespace = super.getNamespace();
Optional<String> databasePrefix = CosmosEnv.getDatabasePrefix();
return databasePrefix.map(prefix -> prefix + namespace).orElse(namespace);
}

@Override
protected Map<String, String> getCreationOptions() {
return CosmosEnv.getCreationOptions();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.scalar.db.storage.cosmos;

import com.scalar.db.transaction.consensuscommit.TwoPhaseConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase;
import java.util.Map;
import java.util.Optional;
import java.util.Properties;

public class TwoPhaseConsensusCommitWithIncludeMetadataEnabledIntegrationTestWithCosmos
extends TwoPhaseConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase {

@Override
protected Properties getProperties(String testName) {
return CosmosEnv.getProperties(testName);
}

@Override
protected String getNamespace() {
String namespace = super.getNamespace();
Optional<String> databasePrefix = CosmosEnv.getDatabasePrefix();
return databasePrefix.map(prefix -> prefix + namespace).orElse(namespace);
}

@Override
protected Map<String, String> getCreationOptions() {
return CosmosEnv.getCreationOptions();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.scalar.db.storage.dynamo;

import com.scalar.db.transaction.consensuscommit.ConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase;
import java.util.Map;
import java.util.Properties;

public class ConsensusCommitWithIncludeMetadataEnabledIntegrationTestWithDynamo
extends ConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase {

@Override
protected Properties getProperties(String testName) {
return DynamoEnv.getProperties(testName);
}

@Override
protected Map<String, String> getCreationOptions() {
return DynamoEnv.getCreationOptions();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.scalar.db.storage.dynamo;

import com.scalar.db.transaction.consensuscommit.TwoPhaseConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase;
import java.util.Map;
import java.util.Properties;

public class TwoPhaseConsensusCommitWithIncludeMetadataEnabledIntegrationTestWithDynamo
extends TwoPhaseConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase {

@Override
protected Properties getProperties(String testName) {
return DynamoEnv.getProperties(testName);
}

@Override
protected Map<String, String> getCreationOptions() {
return DynamoEnv.getCreationOptions();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.scalar.db.storage.jdbc;

import com.scalar.db.transaction.consensuscommit.ConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase;
import java.util.Properties;

public class ConsensusCommitWithIncludeMetadataEnabledIntegrationTestWithJdbcDatabase
extends ConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase {

@Override
protected Properties getProperties(String testName) {
return JdbcEnv.getProperties(testName);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.scalar.db.storage.jdbc;

import com.scalar.db.transaction.consensuscommit.TwoPhaseConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase;
import java.util.Properties;

public class TwoPhaseConsensusCommitWithIncludeMetadataEnabledIntegrationTestWithJdbcDatabase
extends TwoPhaseConsensusCommitWithIncludeMetadataEnabledIntegrationTestBase {

@Override
protected Properties getProperties(String testName) {
return JdbcEnv.getProperties(testName);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.scalar.db.transaction.consensuscommit;

import com.scalar.db.api.DistributedTransactionAdminImportTableIntegrationTestBase;
import com.scalar.db.config.DatabaseConfig;
import java.util.Properties;

public abstract class ConsensusCommitAdminImportTableIntegrationTestBase
Expand All @@ -11,16 +10,10 @@ public abstract class ConsensusCommitAdminImportTableIntegrationTestBase
protected final Properties getProperties(String testName) {
Properties properties = new Properties();
properties.putAll(getProps(testName));
if (!properties.containsKey(DatabaseConfig.TRANSACTION_MANAGER)) {
properties.setProperty(DatabaseConfig.TRANSACTION_MANAGER, "consensus-commit");

// Add testName as a coordinator namespace suffix
String coordinatorNamespace =
properties.getProperty(
ConsensusCommitConfig.COORDINATOR_NAMESPACE, Coordinator.NAMESPACE);
properties.setProperty(
ConsensusCommitConfig.COORDINATOR_NAMESPACE, coordinatorNamespace + "_" + testName);
}
// Add testName as a coordinator namespace suffix
ConsensusCommitIntegrationTestUtils.addSuffixToCoordinatorNamespace(properties, testName);

return properties;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,74 +1,21 @@
package com.scalar.db.transaction.consensuscommit;

import static org.assertj.core.api.Assertions.assertThat;

import com.scalar.db.api.DistributedTransactionAdmin;
import com.scalar.db.api.DistributedTransactionAdminIntegrationTestBase;
import com.scalar.db.api.TableMetadata;
import com.scalar.db.config.DatabaseConfig;
import com.scalar.db.exception.storage.ExecutionException;
import com.scalar.db.service.TransactionFactory;
import java.util.Properties;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Test;

public abstract class ConsensusCommitAdminIntegrationTestBase
extends DistributedTransactionAdminIntegrationTestBase {
private DistributedTransactionAdmin adminWithIncludeMetadataEnabled;

@Override
protected void initialize(String testName) throws Exception {
Properties includeMetadataEnabledProperties = getPropsWithIncludeMetadataEnabled(testName);
adminWithIncludeMetadataEnabled =
TransactionFactory.create(includeMetadataEnabledProperties).getTransactionAdmin();
}

@AfterAll
@Override
public void afterAll() throws Exception {
super.afterAll();

adminWithIncludeMetadataEnabled.close();
}

@Override
protected final Properties getProperties(String testName) {
Properties properties = new Properties();
properties.putAll(getProps(testName));
if (!properties.containsKey(DatabaseConfig.TRANSACTION_MANAGER)) {
properties.setProperty(DatabaseConfig.TRANSACTION_MANAGER, "consensus-commit");

// Add testName as a coordinator namespace suffix
String coordinatorNamespace =
properties.getProperty(
ConsensusCommitConfig.COORDINATOR_NAMESPACE, Coordinator.NAMESPACE);
properties.setProperty(
ConsensusCommitConfig.COORDINATOR_NAMESPACE, coordinatorNamespace + "_" + testName);
}
return properties;
}

protected abstract Properties getProps(String testName);
// Add testName as a coordinator namespace suffix
ConsensusCommitIntegrationTestUtils.addSuffixToCoordinatorNamespace(properties, testName);

protected Properties getPropsWithIncludeMetadataEnabled(String testName) {
Properties properties = getProperties(testName);
properties.setProperty(ConsensusCommitConfig.INCLUDE_METADATA_ENABLED, "true");
return properties;
}

@Test
public void
getTableMetadata_WhenIncludeMetadataIsEnabled_ShouldReturnCorrectMetadataWithTransactionMetadataColumns()
throws ExecutionException {
// Arrange
TableMetadata transactionTableMetadata =
ConsensusCommitUtils.buildTransactionTableMetadata(TABLE_METADATA);

// Act
TableMetadata tableMetadata =
adminWithIncludeMetadataEnabled.getTableMetadata(getNamespace1(), TABLE1);

// Assert
assertThat(tableMetadata).isEqualTo(transactionTableMetadata);
}
protected abstract Properties getProps(String testName);
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.scalar.db.transaction.consensuscommit;

import com.scalar.db.api.DistributedTransactionAdminRepairIntegrationTestBase;
import com.scalar.db.config.DatabaseConfig;
import java.util.Properties;

public abstract class ConsensusCommitAdminRepairIntegrationTestBase
Expand All @@ -11,16 +10,10 @@ public abstract class ConsensusCommitAdminRepairIntegrationTestBase
protected final Properties getProperties(String testName) {
Properties properties = new Properties();
properties.putAll(getProps(testName));
if (!properties.containsKey(DatabaseConfig.TRANSACTION_MANAGER)) {
properties.setProperty(DatabaseConfig.TRANSACTION_MANAGER, "consensus-commit");

// Add testName as a coordinator namespace suffix
String coordinatorNamespace =
properties.getProperty(
ConsensusCommitConfig.COORDINATOR_NAMESPACE, Coordinator.NAMESPACE);
properties.setProperty(
ConsensusCommitConfig.COORDINATOR_NAMESPACE, coordinatorNamespace + "_" + testName);
}
// Add testName as a coordinator namespace suffix
ConsensusCommitIntegrationTestUtils.addSuffixToCoordinatorNamespace(properties, testName);

return properties;
}

Expand Down
Loading

0 comments on commit 48d6e6c

Please sign in to comment.