package io.airlift.dbpool; import com.google.common.collect.ImmutableMap; import io.airlift.configuration.testing.ConfigAssertions; import io.airlift.units.Duration; import org.testng.annotations.Test; import javax.validation.constraints.NotNull; import java.util.Map; import java.util.concurrent.TimeUnit; import static io.airlift.dbpool.H2EmbeddedDataSourceConfig.AllowLiterals; import static io.airlift.dbpool.H2EmbeddedDataSourceConfig.Cipher; import static io.airlift.dbpool.H2EmbeddedDataSourceConfig.CompressLob; import static io.airlift.testing.ValidationAssertions.assertFailsValidation; public class TestH2EmbeddedDataSourceConfig { @Test public void testDefaults() { ConfigAssertions.assertRecordedDefaults(ConfigAssertions.recordDefaults(H2EmbeddedDataSourceConfig.class) .setAllowLiterals(AllowLiterals.ALL) .setCacheSize(16384) .setCipher(Cipher.NONE) .setCompressLob(CompressLob.LZF) .setFilename(null) .setFilePassword(null) .setInitScript(null) .setMaxLengthInplaceLob(1024) .setMaxMemoryRows(10000) .setMvccEnabled(true) .setMaxConnections(10) .setMaxConnectionWait(new Duration(500, TimeUnit.MILLISECONDS))); } @Test public void testExplicitPropertyMappings() { Map<String, String> properties = new ImmutableMap.Builder<String, String>() .put("db.allow-literals", "NONE") .put("db.cache-size", "4096") .put("db.cipher", "AES") .put("db.compress-lob", "NO") .put("db.filename", "TestData") .put("db.file-password", "test123") .put("db.init-script", "init.sql") .put("db.inplace.lob.length.max", "8192") .put("db.rows.memory.max", "5000") .put("db.mvcc.enabled", "FALSE") .put("db.connections.max", "12") .put("db.connections.wait", "42s") .build(); H2EmbeddedDataSourceConfig expected = new H2EmbeddedDataSourceConfig() .setAllowLiterals(AllowLiterals.NONE) .setCacheSize(4096) .setCipher(Cipher.AES) .setCompressLob(CompressLob.NO) .setFilename("TestData") .setFilePassword("test123") .setInitScript("init.sql") .setMaxLengthInplaceLob(8192) .setMaxMemoryRows(5000) .setMvccEnabled(false) .setMaxConnections(12) .setMaxConnectionWait(new Duration(42, TimeUnit.SECONDS)); ConfigAssertions.assertFullMapping(properties, expected); } @Test public void testValidations() { assertFailsValidation(new H2EmbeddedDataSourceConfig(), "filename", "may not be null", NotNull.class); } }