/*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.facebook.presto.verifier;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableMap;
import io.airlift.configuration.testing.ConfigAssertions;
import io.airlift.units.Duration;
import org.joda.time.DateTime;
import org.testng.annotations.Test;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import static com.facebook.presto.verifier.QueryType.CREATE;
import static com.facebook.presto.verifier.QueryType.MODIFY;
import static com.facebook.presto.verifier.QueryType.READ;
public class TestVerifierConfig
{
@Test
public void testDefaults()
{
ConfigAssertions.assertRecordedDefaults(ConfigAssertions.recordDefaults(VerifierConfig.class)
.setTestUsernameOverride(null)
.setControlUsernameOverride(null)
.setTestPasswordOverride(null)
.setControlPasswordOverride(null)
.setSuite(null)
.setSuites(null)
.setControlQueryTypes(Joiner.on(",").join(READ, CREATE, MODIFY))
.setTestQueryTypes(Joiner.on(",").join(READ, CREATE, MODIFY))
.setSource(null)
.setRunId(new DateTime().toString("yyyy-MM-dd"))
.setEventClients("human-readable")
.setThreadCount(10)
.setQueryDatabase(null)
.setControlGateway(null)
.setTestGateway(null)
.setControlTimeout(new Duration(10, TimeUnit.MINUTES))
.setTestTimeout(new Duration(1, TimeUnit.HOURS))
.setBlacklist("")
.setWhitelist("")
.setMaxRowCount(10_000)
.setMaxQueries(1_000_000)
.setAlwaysReport(false)
.setSuiteRepetitions(1)
.setCheckCorrectnessEnabled(true)
.setCheckCpuEnabled(true)
.setExplainOnly(false)
.setSkipCorrectnessRegex("^$")
.setSkipCpuCheckRegex("(?i)(?s).*LIMIT.*")
.setQueryRepetitions(1)
.setTestCatalogOverride(null)
.setTestSchemaOverride(null)
.setControlCatalogOverride(null)
.setControlSchemaOverride(null)
.setQuiet(false)
.setVerboseResultsComparison(false)
.setEventLogFile(null)
.setAdditionalJdbcDriverPath(null)
.setTestJdbcDriverName(null)
.setControlJdbcDriverName(null)
.setDoublePrecision(3)
.setRegressionMinCpuTime(new Duration(5, TimeUnit.MINUTES))
.setShadowWrites(true)
.setShadowTestTablePrefix("tmp_verifier_")
.setShadowControlTablePrefix("tmp_verifier_")
.setControlTeardownRetries(1)
.setTestTeardownRetries(1));
}
@Test
public void testExplicitPropertyMappings()
{
Map<String, String> properties = new ImmutableMap.Builder<String, String>()
.put("suites", "my_suite")
.put("suite", "my_suite")
.put("control.query-types", Joiner.on(",").join(CREATE, MODIFY))
.put("test.query-types", MODIFY.name())
.put("source", "my_source")
.put("run-id", "my_run_id")
.put("event-client", "file,human-readable")
.put("thread-count", "1")
.put("blacklist", "1,2")
.put("whitelist", "3,4")
.put("verbose-results-comparison", "true")
.put("max-row-count", "1")
.put("max-queries", "1")
.put("always-report", "true")
.put("suite-repetitions", "2")
.put("query-repetitions", "2")
.put("check-correctness", "false")
.put("check-cpu", "false")
.put("explain-only", "true")
.put("skip-correctness-regex", "limit")
.put("skip-cpu-check-regex", "LIMIT")
.put("quiet", "true")
.put("event-log-file", "./test")
.put("query-database", "jdbc:mysql://localhost:3306/my_database?user=my_username&password=my_password")
.put("test.username-override", "test_user")
.put("test.password-override", "test_password")
.put("test.gateway", "jdbc:presto://localhost:8080")
.put("test.timeout", "1s")
.put("test.catalog-override", "my_catalog")
.put("test.schema-override", "my_schema")
.put("control.username-override", "control_user")
.put("control.password-override", "control_password")
.put("control.gateway", "jdbc:presto://localhost:8081")
.put("control.timeout", "1s")
.put("control.catalog-override", "my_catalog")
.put("control.schema-override", "my_schema")
.put("additional-jdbc-driver-path", "/test/path")
.put("test.jdbc-driver-class", "com.facebook.exampleclass")
.put("control.jdbc-driver-class", "com.facebook.exampleclass")
.put("expected-double-precision", "5")
.put("regression.min-cpu-time", "30s")
.put("shadow-writes.enabled", "false")
.put("shadow-writes.test-table-prefix", "tmp_")
.put("shadow-writes.control-table-prefix", "schema.tmp_")
.put("control.teardown-retries", "5")
.put("test.teardown-retries", "7")
.build();
VerifierConfig expected = new VerifierConfig().setTestUsernameOverride("verifier-test")
.setSuites("my_suite")
.setSuite("my_suite")
.setControlQueryTypes(Joiner.on(",").join(CREATE, MODIFY))
.setTestQueryTypes(MODIFY.name())
.setSource("my_source")
.setRunId("my_run_id")
.setEventClients("file,human-readable")
.setThreadCount(1)
.setBlacklist("1,2")
.setWhitelist("3,4")
.setMaxRowCount(1)
.setMaxQueries(1)
.setAlwaysReport(true)
.setVerboseResultsComparison(true)
.setSuiteRepetitions(2)
.setQueryRepetitions(2)
.setCheckCorrectnessEnabled(false)
.setCheckCpuEnabled(false)
.setExplainOnly(true)
.setSkipCorrectnessRegex("limit")
.setSkipCpuCheckRegex("LIMIT")
.setQuiet(true)
.setEventLogFile("./test")
.setQueryDatabase("jdbc:mysql://localhost:3306/my_database?user=my_username&password=my_password")
.setTestUsernameOverride("test_user")
.setTestPasswordOverride("test_password")
.setTestGateway("jdbc:presto://localhost:8080")
.setTestTimeout(new Duration(1, TimeUnit.SECONDS))
.setTestCatalogOverride("my_catalog")
.setTestSchemaOverride("my_schema")
.setControlUsernameOverride("control_user")
.setControlPasswordOverride("control_password")
.setControlGateway("jdbc:presto://localhost:8081")
.setControlTimeout(new Duration(1, TimeUnit.SECONDS))
.setControlCatalogOverride("my_catalog")
.setControlSchemaOverride("my_schema")
.setAdditionalJdbcDriverPath("/test/path")
.setTestJdbcDriverName("com.facebook.exampleclass")
.setControlJdbcDriverName("com.facebook.exampleclass")
.setDoublePrecision(5)
.setRegressionMinCpuTime(new Duration(30, TimeUnit.SECONDS))
.setShadowWrites(false)
.setShadowTestTablePrefix("tmp_")
.setShadowControlTablePrefix("schema.tmp_")
.setControlTeardownRetries(5)
.setTestTeardownRetries(7);
ConfigAssertions.assertFullMapping(properties, expected);
}
}