diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dd01eb67..8f974708 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -56,30 +56,26 @@ default: General: stage: unittests image: maven:3.5.0-jdk-8 - retry: 2 services: - - postgres:10.4 - - name: mcr.microsoft.com/mssql/server:latest - alias: sqlserver + - name: docker:19.03.12-dind + # explicitly disable tls to avoid docker startup interruption + command: ["--tls=false"] + variables: + # Instruct Testcontainers to use the daemon of DinD. + DOCKER_HOST: "tcp://docker:2375" + # Instruct Docker not to start over TLS. + DOCKER_TLS_CERTDIR: "" + # Improve performance with overlayfs. + DOCKER_DRIVER: overlay2 script: - 'mvn $MAVEN_CLI_OPTS -Dtest=$TEST test' parallel: matrix: - - TEST: [Arguments_Test, Mapper_CSV_Test, Mapper_JSON_Test, Mapper_MySQL_Test, Mapper_Postgres_R2RML_Test, Mapper_WoT_Test, Arguments_Test_MySQL, Mapper_CSVW_Test, Mapper_LDES_Test, Mapper_ODS_Test, Mapper_Postgres_XML_Test, Mapper_XML_Test, Custom_RML_FnO_Mapper_CSV_Test, Mapper_EXCEL_Test, Mapper_MappingFile_URL_Test, Mapper_SPARQL_Test, Metadata_Test, Custom_RML_FnO_Mapper_JSON_Test, Mapper_HTML_Test, Mapper_MySQL_R2RML_Test, Mapper_Postgres_CSV_Test, Mapper_SQLServer_Test, Optimizations_Test, R2RMLConverterTest, Quad_Test, ReadmeTest, ReadmeFunctionTest] + - TEST: [Arguments_Test, Mapper_CSV_Test, Mapper_JSON_Test, Mapper_MySQL_Test, Mapper_Postgres_R2RML_Test, Mapper_WoT_Test, Arguments_Test_MySQL, Mapper_CSVW_Test, Mapper_LDES_Test, Mapper_ODS_Test, Mapper_OracleDB_Test, Mapper_Postgres_XML_Test, Mapper_XML_Test, Custom_RML_FnO_Mapper_CSV_Test, Mapper_EXCEL_Test, Mapper_MappingFile_URL_Test, Mapper_SPARQL_Test, Metadata_Test, Custom_RML_FnO_Mapper_JSON_Test, Mapper_HTML_Test, Mapper_MySQL_R2RML_Test, Mapper_Postgres_CSV_Test, Mapper_SQLServer_Test, Optimizations_Test, R2RMLConverterTest, Quad_Test, ReadmeTest, ReadmeFunctionTest] except: - master - development -Oracle DB: - stage: unittests - image: gitlab.ilabt.imec.be:4567/rml/util/mvn-oracle-docker:latest - script: - - '/entrypoint.sh' - except: - - master - - development - - tags # Gitlab CI bot cannot access Docker images - Docker Build: stage: unittests image: docker:latest diff --git a/CHANGELOG.md b/CHANGELOG.md index 1381ff18..e8b2257f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,16 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## Unreleased ### Changed +- Database tests are executed with a fresh instance of the required database in a Docker container +- Database tests are now executed with JUnit5 + +### Fixed +- Dropped dependency on com.spotify.docker-client ([issue 231](https://gitlab.ilabt.imec.be/rml/proc/rmlmapper-java/-/issues/231)) +- Running multiple pipelines should no longer interfere with each other ([issue 245](https://gitlab.ilabt.imec.be/rml/proc/rmlmapper-java/-/issues/245)) + +### Added +- pom.xml: Added Testcontainers library dependencies for databases we test on +- pom.xml: Added JUnit5 dependencies - Check for changelog changes in a separate lint stage during CI. ## [6.0.0] - 2022-07-04 diff --git a/README.md b/README.md index 72efdf43..a7a1c45f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![Maven Central](https://img.shields.io/maven-central/v/be.ugent.rml/rmlmapper.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22be.ugent.rml%22%20AND%20a:%22rmlmapper%22) -The RMLMapper execute RML rules to generate Linked Data. +The RMLMapper executes RML rules to generate Linked Data. It is a Java library, which is available via the command line ([API docs online](https://javadoc.io/doc/be.ugent.rml/rmlmapper)). The RMLMapper loads all data in memory, so be aware when working with big datasets. @@ -78,7 +78,7 @@ This is the recommended way to get started with RMLMapper. Do you want to build from source yourself? Check [Build](#build). ## Build -The RMLMapper is build using Maven. +The RMLMapper is built using Maven. As it is also tested against Oracle (check [here](#accessing-oracle-database) for details), it needs a specific set-up to run all tests. That's why we recommend to build without testing: `mvn install -DskipTests=true`. @@ -269,13 +269,18 @@ and up to which level metadata should be stored (dataset, triple, or term level ## Testing -Run the tests via `test.sh`. +### Command line +Run the tests via `test.sh`. + +### IntelliJ +Right-click `src/test/java` directory and select "Run 'All tests'". #### Derived tests Some tests (Excel, ODS) are derived from other tests (CSV) using a script (`./generate_spreadsheet_test_cases.sh`) ### RDBs -Make sure you have [Docker](https://www.docker.com) running. +Make sure you have [Docker](https://www.docker.com) running. On Unix, others read-write permission (006) is required on `/var/run/docker.sock` in order to run the tests. +The tests will fail otherwise, as Testcontainers can't spin up the container. #### Problems * A problem with Docker (can't start the container) causes the SQLServer tests to fail locally. These tests will always succeed locally. @@ -290,7 +295,10 @@ Make sure you have [Docker](https://www.docker.com) running. | com.opencsv opencsv | Apache License 2.0 | | commons-cli commons-cli | Apache License 2.0 | | org.eclipse.rdf4j rdf4j-runtime | Eclipse Public License 1.0 | -| junit junit | Eclipse Public License 1.0 | +| org.junit.jupiter junit-jupiter-engine | Eclipse Public License v2.0 | +| org.junit.jupiter junit-jupiter-api | Eclipse Public License v2.0 | +| org.junit.jupiter junit-jupiter-params | Eclipse Public License v2.0 | +| org.junit.vintage junit-vintage-engine | Eclipse Public License v2.0 | | com.jayway.jsonpath json-path | Apache License 2.0 | | javax.xml.parsers jaxp-api | Apache License 2.0 | | org.jsoup | MIT | @@ -298,7 +306,6 @@ Make sure you have [Docker](https://www.docker.com) running. | ch.vorbuger.mariaDB4j mariaDB4j | Apache License 2.0 | | postgresql postgresql | BSD | | com.microsoft.sqlserver mssql-jdbc | MIT | -| com.spotify docker-client | Apache License 2.0 | | com.fasterxml.jackson.core jackson-core | Apache License 2.0 | | org.eclipse.jetty jetty-server | Eclipse Public License 1.0 & Apache License 2.0 | | org.eclipse.jetty jetty-security | Eclipse Public License 1.0 & Apache License 2.0 | @@ -310,6 +317,11 @@ Make sure you have [Docker](https://www.docker.com) running. | com.github.fnoio function-agent-java | MIT | | com.github.fnoio idlab-functions-java | MIT | | net.sf.saxon | Mozilla Public License version 2.0 | +| org.mybatis mybatis | Apache License 2.0 | +| org.testcontainers postgresql | MIT | +| org.testcontainers mysql | MIT | +| org.testcontainers mssqlserver | MIT | +| org.testcontainers oracle-xe | MIT | ## Commercial Support diff --git a/pom.xml b/pom.xml index d9b0ecc5..2e535dce 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,7 @@ UTF-8 - 4.13.2 + 5.8.2 8 8 @@ -143,8 +143,26 @@ 2.5.5 - junit - junit + org.junit.jupiter + junit-jupiter-engine + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-api + ${junit.version} + test + + + org.junit.jupiter + junit-jupiter-params + ${junit.version} + test + + + org.junit.vintage + junit-vintage-engine ${junit.version} test @@ -194,10 +212,9 @@ test - com.spotify - docker-client - 8.16.0 - test + com.oracle.database.jdbc + ojdbc8 + 21.6.0.0.1 com.fasterxml.jackson.core @@ -313,7 +330,44 @@ 1.0-1 test - + + + org.testcontainers + testcontainers + 1.17.2 + test + + + org.testcontainers + postgresql + 1.17.2 + test + + + org.testcontainers + mysql + 1.17.2 + test + + + org.testcontainers + mssqlserver + 1.17.2 + test + + + org.testcontainers + oracle-xe + 1.17.2 + test + + + + + org.mybatis + mybatis + 3.5.10 + diff --git a/src/main/java/be/ugent/rml/access/AccessFactory.java b/src/main/java/be/ugent/rml/access/AccessFactory.java index b0facaef..0ff5009c 100644 --- a/src/main/java/be/ugent/rml/access/AccessFactory.java +++ b/src/main/java/be/ugent/rml/access/AccessFactory.java @@ -251,7 +251,6 @@ private RDBAccess getRDBAccess(QuadStore rmlStore, Term source, Term logicalSour } String dsn = dsnObject.get(0).getValue(); - dsn = dsn.substring(dsn.indexOf("//") + 2); // - SQL query String query; @@ -291,13 +290,14 @@ private RDBAccess getRDBAccess(QuadStore rmlStore, Term source, Term logicalSour // - ContentType List contentType = Utils.getObjectsFromQuads(rmlStore.getQuads(logicalSource, new NamedNode(NAMESPACES.RML + "referenceFormulation"), null)); - return new RDBAccess(dsn, database, username, password, query, (contentType.isEmpty()? "text/csv" : contentType.get(0).getValue())); + + return new RDBAccess(dsn, database, username, password, query, (contentType.isEmpty() ? "text/csv" : contentType.get(0).getValue())); } /** * This method returns a SPARQLResultFormat based on the result formats and reference formulations. * @param resultFormats the result formats used to determine the SPARQLResultFormat. - * @param referenceFormulations the reference formulations used to to determine the SPARQLResultFormat. + * @param referenceFormulations the reference formulations used to determine the SPARQLResultFormat. * @return a SPARQLResultFormat. */ private SPARQLResultFormat getSPARQLResultFormat(List resultFormats, List referenceFormulations) { diff --git a/src/main/java/be/ugent/rml/access/RDBAccess.java b/src/main/java/be/ugent/rml/access/RDBAccess.java index 4af8d351..ca4fb5e4 100644 --- a/src/main/java/be/ugent/rml/access/RDBAccess.java +++ b/src/main/java/be/ugent/rml/access/RDBAccess.java @@ -47,7 +47,7 @@ public class RDBAccess implements Access { /** - * This constructor takes as arguments the dsn, database, username, password, query, and content type. + * This constructor takes as arguments the dsn, database, username, password, query, content type * * @param dsn the data source name. * @param databaseType the database type. @@ -76,59 +76,44 @@ public InputStream getInputStream() throws IOException, SQLException, ClassNotFo // JDBC objects Connection connection = null; Statement statement = null; - String jdbcDriver = databaseType.getDriver(); - String jdbcDSN = "jdbc:" + databaseType.getJDBCPrefix() + "//" + dsn; - InputStream inputStream = null; + InputStream inputStream; try { - // Register JDBC driver - Class.forName(jdbcDriver); - // Open connection - String connectionString = jdbcDSN; - boolean alreadySomeQueryParametersPresent = false; - - if (username != null && !username.equals("") && password != null && !password.equals("")) { - if (databaseType == DatabaseType.ORACLE) { - connectionString = connectionString.replace(":@", ":" + username + "/" + password + "@"); - } else if (!connectionString.contains("user=")) { - connectionString += "?user=" + username + "&password=" + password; - alreadySomeQueryParametersPresent = true; - } - } + boolean alreadySomeQueryParametersPresent = dsn.contains("?"); + if (databaseType == DatabaseType.MYSQL) { + StringBuilder parametersSB = new StringBuilder(); + if (alreadySomeQueryParametersPresent) { - connectionString += "&"; + parametersSB.append("&"); } else { - connectionString += "?"; + parametersSB.append("?"); } - connectionString += "serverTimezone=UTC&useSSL=false"; + parametersSB.append("serverTimezone=UTC&useSSL=false"); + + dsn += parametersSB; } if (databaseType == DatabaseType.SQL_SERVER) { - connectionString = connectionString.replaceAll("\\?|&", ";"); - - if (!connectionString.endsWith(";")) { - connectionString += ";"; - } + dsn = dsn.replaceAll("[?&]", ";"); } - connection = DriverManager.getConnection(connectionString); + + connection = DriverManager.getConnection(dsn, username, password); // Execute query statement = connection.createStatement(); + ResultSet rs = statement.executeQuery(query); - switch (contentType) { - case NAMESPACES.QL + "XPath" : - inputStream = getXMLInputStream(rs); - break; - default: - inputStream = getCSVInputStream(rs); + if ((NAMESPACES.QL + "XPath").equals(contentType)) { + inputStream = getXMLInputStream(rs); + } else { + inputStream = getCSVInputStream(rs); } - // Clean-up environment rs.close(); statement.close(); diff --git a/src/test/java/be/ugent/rml/Arguments_Test_MySQL.java b/src/test/java/be/ugent/rml/Arguments_Test_MySQL.java index 2c03f5f3..27cda092 100644 --- a/src/test/java/be/ugent/rml/Arguments_Test_MySQL.java +++ b/src/test/java/be/ugent/rml/Arguments_Test_MySQL.java @@ -1,49 +1,32 @@ package be.ugent.rml; import be.ugent.rml.cli.Main; -import ch.vorburger.exec.ManagedProcessException; -import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; +import org.slf4j.LoggerFactory; import java.io.File; import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; public class Arguments_Test_MySQL extends MySQLTestCore { - private static String CONNECTIONSTRING; - @BeforeClass - public static void before() throws Exception { - int portNumber = Utils.getFreePortNumber(); - CONNECTIONSTRING = getConnectionString(portNumber); - mysqlDB = setUpMySQLDBInstance(portNumber); - } - - @AfterClass - public static void after() throws ManagedProcessException { - stopDBs(); + public static void beforeClass() { + logger = LoggerFactory.getLogger(Arguments_Test_MySQL.class); } @Test public void executeR2RML() throws Exception { - String cwd = Utils.getFile( "argument/r2rml").getAbsolutePath(); + String cwd = (new File("./src/test/resources/argument/r2rml")).getAbsolutePath(); String mappingFilePath = (new File(cwd, "mapping.r2rml.ttl")).getAbsolutePath(); String actualPath = (new File("./generated_output.nq")).getAbsolutePath(); - String expectedPath = (new File( cwd, "output.nq")).getAbsolutePath(); - String resourcePath = "argument/r2rml/resource.sql"; + String expectedPath = (new File(cwd, "output.nq")).getAbsolutePath(); + String resourcePath = "src/test/resources/argument/r2rml/resource.sql"; - // Get SQL resource - try { - mysqlDB.source(resourcePath); - } catch (ManagedProcessException e) { - e.printStackTrace(); - fail(); - } + prepareDatabase(resourcePath, "root", ""); - Main.main(("-m " + mappingFilePath + " -o " + actualPath + " --r2rml-jdbcDSN " + CONNECTIONSTRING + " --r2rml-username root -v").split(" "), cwd); + Main.main(("-m " + mappingFilePath + " -o " + actualPath + " --r2rml-jdbcDSN " + dbURL + " --r2rml-username root -v").split(" "), cwd); compareFiles( expectedPath, actualPath, diff --git a/src/test/java/be/ugent/rml/DBTestCore.java b/src/test/java/be/ugent/rml/DBTestCore.java index d4759fa9..a0a56cba 100644 --- a/src/test/java/be/ugent/rml/DBTestCore.java +++ b/src/test/java/be/ugent/rml/DBTestCore.java @@ -1,20 +1,70 @@ package be.ugent.rml; -import java.io.File; -import java.io.IOException; +import org.apache.ibatis.jdbc.ScriptRunner; +import org.junit.AfterClass; +import org.slf4j.Logger; +import org.testcontainers.containers.JdbcDatabaseContainer; + +import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; import java.util.Arrays; import java.util.HashSet; +import java.util.Iterator; +import java.util.Random; public abstract class DBTestCore extends TestCore { - + protected static Logger logger; protected static HashSet tempFiles = new HashSet<>(); - /*protected static String replaceDSNInMappingFile(String path, String connectionString) { + // Testcontainers library uses SELF-typing, which will be removed in later versions. That's why . + // omitting causes compiler to complain + + // This class has no information or way of knowing which specific JDBC container is required. + // It is the child's responsibility to initialize this field in its constructor, + // as only the child knows what container is required + protected JdbcDatabaseContainer container; + protected String dbURL; + + protected final String USERNAME; + protected final String PASSWORD; + protected final String DOCKER_TAG; + + protected DBTestCore(String username, String password, String dockerTag) { + this.USERNAME = username; + this.PASSWORD = password; + this.DOCKER_TAG = dockerTag; + } + + @AfterClass + public static void afterClass() { + // Make sure all tempFiles are removed + int counter = 0; + while (!tempFiles.isEmpty()) { + for (Iterator i = tempFiles.iterator(); i.hasNext(); ) { + try { + if (new File(i.next()).delete()) { + i.remove(); + } + } catch (Exception ex) { + counter++; + ex.printStackTrace(); + // Prevent infinity loops + if (counter > 100) { + throw new Error("Could not remove all temp mapping files."); + } + } + } + } + } + + protected static String replaceDSNInMappingFile(String path, String connectionString) { try { // Read mapping file String mapping = new String(Files.readAllBytes(Paths.get(Utils.getFile(path, null).getAbsolutePath())), StandardCharsets.UTF_8); @@ -36,7 +86,7 @@ public abstract class DBTestCore extends TestCore { } catch (IOException ex) { throw new Error(ex.getMessage()); } - }*/ + } protected static String createTempMappingFile(String path) { try { @@ -77,7 +127,9 @@ protected static void deleteTempMappingFile(String absolutePath) { private static String writeMappingFile(String mapping, String path) { try { - String fileName = Integer.toString(Math.abs(mapping.hashCode())) + "tempMapping.ttl"; + // when multiple tests are running with the same mapping, they can remove each other's mapping files + // adding a random number prevents this behaviour + String fileName = Math.abs(new Random().nextInt()) + mapping.hashCode() + "tempMapping.ttl"; Path file = Paths.get(fileName); Files.write(file, Arrays.asList(mapping.split("\n"))); @@ -90,4 +142,15 @@ private static String writeMappingFile(String mapping, String path) { } } + protected void prepareDatabase(String path, String username, String password) { + try (Connection conn = DriverManager.getConnection(dbURL, username, password)) { + ScriptRunner runner = new ScriptRunner(conn); + Reader reader = new BufferedReader(new FileReader(path)); + runner.setLogWriter(null); // ScriptRunner will output the contents of the SQL file to System.out by default + + runner.runScript(reader); + } catch (SQLException | FileNotFoundException e) { + throw new RuntimeException(e); + } + } } diff --git a/src/test/java/be/ugent/rml/Mapper_MySQL_R2RML_Test.java b/src/test/java/be/ugent/rml/Mapper_MySQL_R2RML_Test.java index 6f505a06..2034e55e 100644 --- a/src/test/java/be/ugent/rml/Mapper_MySQL_R2RML_Test.java +++ b/src/test/java/be/ugent/rml/Mapper_MySQL_R2RML_Test.java @@ -1,13 +1,11 @@ package be.ugent.rml; -import ch.vorburger.exec.ManagedProcessException; -import org.junit.AfterClass; import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +import org.slf4j.LoggerFactory; import java.util.Arrays; import java.util.HashMap; @@ -16,42 +14,13 @@ import static be.ugent.rml.TestStrictMode.*; // Adapted from Mapper_MySQL_Test to include connection options for R2RML mapping files. -@RunWith(Parameterized.class) -public class Mapper_MySQL_R2RML_Test extends MySQLTestCore{ - - private static String CONNECTIONSTRING; - +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +public class Mapper_MySQL_R2RML_Test extends MySQLTestCore { @BeforeClass - public static void before() throws Exception { - int portNumber = Utils.getFreePortNumber(); - CONNECTIONSTRING = getConnectionString(portNumber); - mysqlDB = setUpMySQLDBInstance(portNumber); - - // add RDB connection options - mappingOptions = new HashMap<>(); - mappingOptions.put("jdbcDSN", CONNECTIONSTRING); - mappingOptions.put("username", "root"); - mappingOptions.put("password", ""); + public static void beforeClass() { + logger = LoggerFactory.getLogger(Mapper_MySQL_R2RML_Test.class); } - @AfterClass - public static void after() throws ManagedProcessException { - stopDBs(); - } - - @Parameterized.Parameter(0) - public String testCaseName; - - @Parameterized.Parameter(1) - public Class expectedException; - - @Parameterized.Parameter(2) - public TestStrictMode testStrictMode; - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Parameterized.Parameters(name = "{index}: mySQL_{0}") public static Iterable data() { return Arrays.asList(new Object[][]{ {"R2RMLTC0000", null, BOTH}, @@ -130,8 +99,20 @@ public static Iterable data() { }); } - @Test - public void doMapping() throws Exception { + @BeforeAll + public void beforeAll() { + // add RDB connection options + mappingOptions = new HashMap<>(); + mappingOptions.put("jdbcDriver", "com.mysql.jdbc.Driver"); + mappingOptions.put("username", "root"); + mappingOptions.put("password", ""); + mappingOptions.put("jdbcDSN", dbURL); + } + + @ParameterizedTest(name = "{index}: mySQL_{0}") + @MethodSource("data") + public void doMapping(String testCaseName, Class expectedException, TestStrictMode testStrictMode) throws Exception { + prepareDatabase(String.format("src/test/resources/test-cases-R2RML/%s-MySQL/resource.sql", testCaseName), USERNAME, PASSWORD); if (testStrictMode.equals(BOTH) || testStrictMode.equals(BEST_EFFORT_ONLY)) { // test the best-effort mode of the mapper mappingTest(testCaseName, expectedException, StrictMode.BEST_EFFORT); @@ -142,17 +123,13 @@ public void doMapping() throws Exception { } } - private void mappingTest(String testCaseName, Class expectedException, StrictMode strictMode) throws Exception { - String resourcePath = "test-cases-R2RML/" + testCaseName + "-MySQL/resource.sql"; + private void mappingTest(String testCaseName, Class expectedException, StrictMode strictMode) { String mappingPath = "./test-cases-R2RML/" + testCaseName + "-MySQL/mapping.ttl"; String outputPath = "test-cases-R2RML/" + testCaseName + "-MySQL/output.nq"; // Create a temporary copy of the mapping file String tempMappingPath = createTempMappingFile(mappingPath); - // Get SQL resource - mysqlDB.source(resourcePath, "test"); - // mapping String parentPath = getParentPath(getClass(), outputPath); diff --git a/src/test/java/be/ugent/rml/Mapper_MySQL_Test.java b/src/test/java/be/ugent/rml/Mapper_MySQL_Test.java index ce6fcaa5..c7294d7b 100644 --- a/src/test/java/be/ugent/rml/Mapper_MySQL_Test.java +++ b/src/test/java/be/ugent/rml/Mapper_MySQL_Test.java @@ -1,51 +1,23 @@ package be.ugent.rml; -import ch.vorburger.exec.ManagedProcessException; -import org.junit.AfterClass; import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +import org.slf4j.LoggerFactory; import java.util.Arrays; -import java.util.HashMap; import static be.ugent.rml.MyFileUtils.getParentPath; import static be.ugent.rml.TestStrictMode.*; -@RunWith(Parameterized.class) +@TestInstance(TestInstance.Lifecycle.PER_CLASS) public class Mapper_MySQL_Test extends MySQLTestCore { - - private static String CONNECTIONSTRING; - @BeforeClass - public static void before() throws Exception { - int portNumber = Utils.getFreePortNumber(); - CONNECTIONSTRING = getConnectionString(portNumber); - mysqlDB = setUpMySQLDBInstance(portNumber); - mappingOptions = new HashMap<>(); + public static void beforeClass() { + logger = LoggerFactory.getLogger(Mapper_MySQL_Test.class); } - @AfterClass - public static void after() throws ManagedProcessException { - stopDBs(); - } - - @Parameterized.Parameter(0) - public String testCaseName; - - @Parameterized.Parameter(1) - public Class expectedException; - - @Parameterized.Parameter(2) - public TestStrictMode testStrictMode; - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Parameterized.Parameters(name = "{index}: mySQL_{0}") public static Iterable data() { return Arrays.asList(new Object[][]{ // scenarios: @@ -125,8 +97,10 @@ public static Iterable data() { }); } - @Test - public void doMapping() throws Exception { + @ParameterizedTest(name = "{index}: mySQL_{0}") + @MethodSource("data") + public void doMapping(String testCaseName, Class expectedException, TestStrictMode testStrictMode) throws Exception { + prepareDatabase(String.format("src/test/resources/test-cases/%s-MySQL/resource.sql", testCaseName), USERNAME, PASSWORD); if (testStrictMode.equals(BOTH) || testStrictMode.equals(BEST_EFFORT_ONLY)) { // test the best-effort mode of the mapper mappingTest(testCaseName, expectedException, StrictMode.BEST_EFFORT); @@ -137,16 +111,12 @@ public void doMapping() throws Exception { } } - private void mappingTest(String testCaseName, Class expectedException, StrictMode strictMode) throws Exception { - String resourcePath = "test-cases/" + testCaseName + "-MySQL/resource.sql"; + private void mappingTest(String testCaseName, Class expectedException, StrictMode strictMode) { String mappingPath = "./test-cases/" + testCaseName + "-MySQL/mapping.ttl"; String outputPath = "test-cases/" + testCaseName + "-MySQL/output.nq"; // Create a temporary copy of the mapping file and replace source details - String tempMappingPath = CreateTempMappingFileAndReplaceDSN(mappingPath, CONNECTIONSTRING); - - // Get SQL resource - mysqlDB.source(resourcePath); + String tempMappingPath = CreateTempMappingFileAndReplaceDSN(mappingPath, dbURL); // mapping String parentPath = getParentPath(getClass(), outputPath); diff --git a/src/test/java/be/ugent/rml/Mapper_OracleDB_Test.java b/src/test/java/be/ugent/rml/Mapper_OracleDB_Test.java index 8c60983f..eab71e0f 100644 --- a/src/test/java/be/ugent/rml/Mapper_OracleDB_Test.java +++ b/src/test/java/be/ugent/rml/Mapper_OracleDB_Test.java @@ -1,33 +1,32 @@ package be.ugent.rml; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; +import org.junit.After; +import org.junit.BeforeClass; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; +import org.slf4j.LoggerFactory; +import org.testcontainers.containers.OracleContainer; +import org.testcontainers.utility.DockerImageName; -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; -import java.sql.*; import java.util.Arrays; -import java.util.Scanner; -@RunWith(Parameterized.class) -public class Mapper_OracleDB_Test extends DBTestCore { +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class Mapper_OracleDB_Test extends DBTestCore { + public Mapper_OracleDB_Test() { - protected static String CONNECTIONSTRING = "jdbc:oracle:thin:rmlmapper_test/test@//193.190.127.195:1521/XE"; + super("rmlmapper_test", "test", "gvenzl/oracle-xe:latest"); + super.container = new OracleContainer(DockerImageName.parse(DOCKER_TAG)) + .withUsername(USERNAME) + .withPassword(PASSWORD) + .withEnv("runID", Integer.toString(this.hashCode())) + .withEnv("NLS_LANG", "American_America.WE8ISO8859P1"); - @Parameterized.Parameter(0) - public String testCaseName; - - @Parameterized.Parameter(1) - public Class expectedException; - - @Rule - public ExpectedException thrown = ExpectedException.none(); + super.container.start(); + super.dbURL = super.container.getJdbcUrl(); + } - @Parameterized.Parameters(name = "{index}: OracleDB_{0}") public static Iterable data() { return Arrays.asList(new Object[][]{ // scenarios: @@ -96,42 +95,35 @@ public static Iterable data() { }); } - @Test - public void doMapping() throws Exception { + @BeforeClass + public static void beforeClass() { + logger = LoggerFactory.getLogger(Mapper_OracleDB_Test.class); + } + + @After + public void afterTest() { + container.stop(); // for oracle, a fresh container is the easiest way of purging any previous data + container.start(); + } + + @AfterAll + public void afterAll() { + container.stop(); + } + + @ParameterizedTest(name = "{index}: OracleDB_{0}") + @MethodSource("data") + public void doMapping(String testCaseName, Class expectedException) throws Exception { + prepareDatabase(String.format("src/test/resources/test-cases/%s-OracleDB/resource.sql", testCaseName), USERNAME, PASSWORD); mappingTest(testCaseName, expectedException); } - private void mappingTest(String testCaseName, Class expectedException) throws Exception { - String resourcePath = "test-cases/" + testCaseName + "-OracleDB/resource.sql"; + private void mappingTest(String testCaseName, Class expectedException) { String mappingPath = "./test-cases/" + testCaseName + "-OracleDB/mapping.ttl"; String outputPath = "test-cases/" + testCaseName + "-OracleDB/output.nq"; // Create a temporary copy of the mapping file and replace source details - String tempMappingPath = CreateTempMappingFileAndReplaceDSN(mappingPath, CONNECTIONSTRING); - - File resourceFile = Utils.getFile(resourcePath, null); - InputStream resourceStream = new FileInputStream(resourceFile); - //String resourceStr = IOUtils.toString(resourceStream, StandardCharsets.UTF_8); - - //System.out.println(resourceStr); - - Connection connection = DriverManager.getConnection(CONNECTIONSTRING); - - String dropTablesQuery = "select table_name from user_tables"; - Statement selectTablesStmt = connection.createStatement(); - ResultSet rs = selectTablesStmt.executeQuery(dropTablesQuery); - - while (rs.next()) { - System.out.println(rs.getString("TABLE_NAME")); - Statement dropTableStmt = connection.createStatement(); - dropTableStmt.executeQuery("drop table " + rs.getString("TABLE_NAME")); - } - - //Statement stmt = connection.createStatement(); - //stmt.executeQuery(resourceStr); - - // Load data in database - importSQL(connection, resourceStream); + String tempMappingPath = CreateTempMappingFileAndReplaceDSN(mappingPath, dbURL); // mapping if (expectedException == null) { @@ -142,24 +134,4 @@ private void mappingTest(String testCaseName, Class expectedException) throws Ex deleteTempMappingFile(tempMappingPath); } - - private void importSQL(Connection conn, InputStream in) throws SQLException { - - try (Scanner s = new Scanner(in); - Statement st = conn.createStatement()) { - s.useDelimiter("(;\n?)"); - while (s.hasNext()) { - String line = s.next(); - if (line.startsWith("/*!") && line.endsWith("*/")) { - int i = line.indexOf(' '); - line = line.substring(i + 1, line.length() - " */".length()); - } - - if (line.trim().length() > 0) { - System.out.println(line); - st.execute(line); - } - } - } - } } diff --git a/src/test/java/be/ugent/rml/Mapper_Postgres_CSV_Test.java b/src/test/java/be/ugent/rml/Mapper_Postgres_CSV_Test.java index f6274a0e..d5716343 100644 --- a/src/test/java/be/ugent/rml/Mapper_Postgres_CSV_Test.java +++ b/src/test/java/be/ugent/rml/Mapper_Postgres_CSV_Test.java @@ -1,12 +1,9 @@ package be.ugent.rml; -import org.junit.AfterClass; import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; import org.slf4j.LoggerFactory; import java.util.Arrays; @@ -14,34 +11,14 @@ import static be.ugent.rml.MyFileUtils.getParentPath; import static be.ugent.rml.TestStrictMode.*; - -@RunWith(Parameterized.class) +@TestInstance(TestInstance.Lifecycle.PER_CLASS) public class Mapper_Postgres_CSV_Test extends PostgresTestCore { @BeforeClass - public static void before() { + public static void beforeClass() { logger = LoggerFactory.getLogger(Mapper_Postgres_CSV_Test.class); - startDBs(); - } - - @AfterClass - public static void after() { - stopDBs(); } - @Parameterized.Parameter(0) - public String testCaseName; - - @Parameterized.Parameter(1) - public Class expectedException; - - @Parameterized.Parameter(2) - public TestStrictMode testStrictMode; - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Parameterized.Parameters(name = "{index}: Postgres_CSV_Test_{0}") public static Iterable data() { return Arrays.asList(new Object[][]{ // scenarios: @@ -58,7 +35,7 @@ public static Iterable data() { {"RMLTC0002h", Error.class, BOTH}, {"RMLTC0002i", Error.class, BOTH}, {"RMLTC0002j", null, BOTH}, - {"RMLTC0003a", Error.class, BOTH}, + {"RMLTC0003a", null, BOTH}, {"RMLTC0003b", null, BOTH}, {"RMLTC0003c", null, BOTH}, {"RMLTC0004a", null, BOTH}, @@ -115,11 +92,12 @@ public static Iterable data() { {"RMLTC0020b", null, BEST_EFFORT_ONLY}, {"RMLTC1027", null, BOTH}, }); - } - @Test - public void doMapping() throws Exception { + + @ParameterizedTest(name = "{index}: Postgres_CSV_Test_{0}") + @MethodSource("data") + public void doMapping(String testCaseName, Class expectedException, TestStrictMode testStrictMode) throws Exception { if (testStrictMode.equals(BOTH) || testStrictMode.equals(BEST_EFFORT_ONLY)) { // test the best-effort mode of the mapper mappingTest(testCaseName, expectedException, StrictMode.BEST_EFFORT); @@ -130,17 +108,14 @@ public void doMapping() throws Exception { } } - private void mappingTest(String testCaseName, Class expectedException, StrictMode strictMode) throws Exception { + private void mappingTest(String testCaseName, Class expectedException, StrictMode strictMode) { + prepareDatabase(String.format("src/test/resources/test-cases/%s-PostgreSQL/resource.sql", testCaseName), USERNAME, PASSWORD); - String resourcePath = "test-cases/" + testCaseName + "-PostgreSQL/resource.sql"; String mappingPath = "./test-cases/" + testCaseName + "-PostgreSQL/mapping.ttl"; String outputPath = "test-cases/" + testCaseName + "-PostgreSQL/output.nq"; // Create a temporary copy of the mapping file and replace source details - String tempMappingPath = CreateTempMappingFileAndReplaceDSN(mappingPath, CONNECTIONSTRING); - - // Execute SQL - executeSQL(remoteDB.connectionString, resourcePath); + String tempMappingPath = CreateTempMappingFileAndReplaceDSN(mappingPath, dbURL); // mapping String parentPath = getParentPath(getClass(), outputPath); diff --git a/src/test/java/be/ugent/rml/Mapper_Postgres_R2RML_Test.java b/src/test/java/be/ugent/rml/Mapper_Postgres_R2RML_Test.java index 59d472fb..8ddc4dcd 100644 --- a/src/test/java/be/ugent/rml/Mapper_Postgres_R2RML_Test.java +++ b/src/test/java/be/ugent/rml/Mapper_Postgres_R2RML_Test.java @@ -1,12 +1,10 @@ package be.ugent.rml; -import org.junit.AfterClass; import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; import org.slf4j.LoggerFactory; import java.util.Arrays; @@ -15,22 +13,8 @@ import static be.ugent.rml.MyFileUtils.getParentPath; import static be.ugent.rml.TestStrictMode.*; -@RunWith(Parameterized.class) +@TestInstance(TestInstance.Lifecycle.PER_CLASS) public class Mapper_Postgres_R2RML_Test extends PostgresTestCore { - - @Parameterized.Parameter(0) - public String testCaseName; - - @Parameterized.Parameter(1) - public Class expectedException; - - @Parameterized.Parameter(2) - public TestStrictMode testStrictMode; - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Parameterized.Parameters(name = "{index}: PostgreSQL_{0}") public static Iterable data() { return Arrays.asList(new Object[][]{ {"R2RMLTC0000", null, BOTH}, @@ -105,25 +89,25 @@ public static Iterable data() { } @BeforeClass - public static void before() { + public static void beforeClass() { logger = LoggerFactory.getLogger(Mapper_Postgres_R2RML_Test.class); - startDBs(); + } + @BeforeAll + public void before() { // add RDB connection options mappingOptions = new HashMap<>(); - mappingOptions.put("jdbcDSN", CONNECTIONSTRING); mappingOptions.put("jdbcDriver", "org.postgresql.Driver"); mappingOptions.put("username", "postgres"); mappingOptions.put("password", ""); + mappingOptions.put("jdbcDSN", dbURL); } - @AfterClass - public static void after() { - stopDBs(); - } + @ParameterizedTest(name = "{index}: PostgreSQL_{0}") + @MethodSource("data") + public void doMapping(String testCaseName, Class expectedException, TestStrictMode testStrictMode) throws Exception { + prepareDatabase(String.format("src/test/resources/test-cases-R2RML/%s-PostgreSQL/resource.sql", testCaseName), USERNAME, PASSWORD); - @Test - public void doMapping() throws Exception { if (testStrictMode.equals(BOTH) || testStrictMode.equals(BEST_EFFORT_ONLY)) { // test the best-effort mode of the mapper mappingTest(testCaseName, expectedException, StrictMode.BEST_EFFORT); @@ -134,18 +118,13 @@ public void doMapping() throws Exception { } } - private void mappingTest(String testCaseName, Class expectedException, StrictMode strictMode) throws Exception { - - String resourcePath = "test-cases-R2RML/" + testCaseName + "-PostgreSQL/resource.sql"; - String mappingPath = "./test-cases-R2RML/" + testCaseName + "-PostgreSQL/mapping.ttl"; - String outputPath = "test-cases-R2RML/" + testCaseName + "-PostgreSQL/output.nq"; + private void mappingTest(String testCaseName, Class expectedException, StrictMode strictMode) { + String mappingPath = String.format("./test-cases-R2RML/%s-PostgreSQL/mapping.ttl", testCaseName); + String outputPath = String.format("test-cases-R2RML/%s-PostgreSQL/output.nq", testCaseName); // Create a temporary copy of the mapping file String tempMappingPath = createTempMappingFile(mappingPath); - // Execute SQL - executeSQL(remoteDB.connectionString, resourcePath); - // mapping String parentPath = getParentPath(getClass(), outputPath); diff --git a/src/test/java/be/ugent/rml/Mapper_Postgres_XML_Test.java b/src/test/java/be/ugent/rml/Mapper_Postgres_XML_Test.java index 16fae9ef..b5591f48 100644 --- a/src/test/java/be/ugent/rml/Mapper_Postgres_XML_Test.java +++ b/src/test/java/be/ugent/rml/Mapper_Postgres_XML_Test.java @@ -1,96 +1,21 @@ package be.ugent.rml; -import com.spotify.docker.client.DockerClient; -import com.spotify.docker.client.exceptions.DockerException; -import org.junit.AfterClass; import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.slf4j.Logger; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; import org.slf4j.LoggerFactory; -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.sql.Connection; -import java.sql.DriverManager; import java.util.Arrays; -import java.util.HashSet; -import java.util.Iterator; -@RunWith(Parameterized.class) -public class Mapper_Postgres_XML_Test extends TestCore { - - private static final Boolean LOCAL_TESTING = !Boolean.valueOf(System.getenv("CI")); - - private static Logger logger = LoggerFactory.getLogger(Mapper_Postgres_XML_Test.class); - - private static String CONNECTIONSTRING = LOCAL_TESTING ? - "jdbc:postgresql://dia.test.iminds.be:8970/postgres?user=postgres&password=YourSTRONG!Passw0rd" : - "jdbc:postgresql://postgres/postgres?user=postgres&password=YourSTRONG!Passw0rd"; - - private static HashSet tempFiles = new HashSet<>(); - - private static DockerDBInfo remoteDB; - - private static class DockerDBInfo { - String connectionString; - String containerID; - DockerClient docker; - - DockerDBInfo(String connectionString) { - this.connectionString = connectionString; - } - } - +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +public class Mapper_Postgres_XML_Test extends PostgresTestCore { @BeforeClass - public static void startDBs() { - remoteDB = new DockerDBInfo(CONNECTIONSTRING); // see .gitlab-ci.yml file + public static void beforeClass() { + logger = LoggerFactory.getLogger(Mapper_Postgres_XML_Test.class); } - @AfterClass - public static void stopDBs() { - if (!LOCAL_TESTING) { - closeDocker(remoteDB); - } - - // Make sure all tempFiles are removed - int counter = 0; - while (!tempFiles.isEmpty()) { - for (Iterator i = tempFiles.iterator(); i.hasNext(); ) { - try { - if (new File(i.next()).delete()) { - i.remove(); - } - } catch (Exception ex) { - counter++; - ex.printStackTrace(); - // Prevent infinity loops - if (counter > 100) { - throw new Error("Could not remove all temp mapping files."); - } - } - } - } - } - - @Parameterized.Parameter(0) - public String testCaseName; - - @Parameterized.Parameter(1) - public Class expectedException; - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Parameterized.Parameters(name = "{index}: Postgres_XML_{0}") public static Iterable data() { return Arrays.asList(new Object[][]{ // scenarios: @@ -156,93 +81,24 @@ public static Iterable data() { // {"RMLTC0020a", null}, // {"RMLTC0020b", null}, }); - - } - - @Test - public void doMapping() throws Exception { - - //setup expected exception - if (expectedException != null) { - thrown.expect(expectedException); - } - - mappingTest(testCaseName); } - private void mappingTest(String testCaseName) throws Exception { + @ParameterizedTest(name = "{index}: Postgres_XML_{0}") + @MethodSource("data") + public void doMapping(String testCaseName, Class expectedException) throws Exception { + prepareDatabase(String.format("src/test/resources/test-cases/%s-PostgreSQL-XML/resource.sql", testCaseName), USERNAME, PASSWORD); - String resourcePath = "test-cases/" + testCaseName + "-PostgreSQL-XML/resource.sql"; String mappingPath = "./test-cases/" + testCaseName + "-PostgreSQL-XML/mapping.ttl"; String outputPath = "test-cases/" + testCaseName + "-PostgreSQL-XML/output.nq"; - String tempMappingPath = replaceDSNInMappingFile(mappingPath, CONNECTIONSTRING); - - // Execute SQL - executeSQL(remoteDB.connectionString, resourcePath); - - // mapping - doMapping(tempMappingPath, outputPath); - deleteTempMappingFile(tempMappingPath); - - } - - // Utils ----------------------------------------------------------------------------------------------------------- - - private static String replaceDSNInMappingFile(String path, String connectionString) { - try { - // Read mapping file - String mapping = new String(Files.readAllBytes(Paths.get(Utils.getFile(path, null).getAbsolutePath())), StandardCharsets.UTF_8); - - // Replace "PORT" in mapping file by new port - mapping = mapping.replace("CONNECTIONDSN", connectionString); - - // Write to temp mapping file - - String fileName = Integer.toString(Math.abs(path.hashCode())) + "tempMapping.ttl"; - Path file = Paths.get(fileName); - Files.write(file, Arrays.asList(mapping.split("\n"))); - - String absolutePath = Paths.get(Utils.getFile(fileName, null).getAbsolutePath()).toString(); - tempFiles.add(absolutePath); + String tempMappingPath = CreateTempMappingFileAndReplaceDSN(mappingPath, dbURL); - return absolutePath; - - } catch (IOException ex) { - throw new Error(ex.getMessage()); - } - } - - private static void deleteTempMappingFile(String absolutePath) { - File file = new File(absolutePath); - if (file.delete()) { - tempFiles.remove(absolutePath); + if (expectedException == null) { + doMapping(tempMappingPath, outputPath); + } else { + doMappingExpectError(tempMappingPath); } - } - - private static void closeDocker(DockerDBInfo dockerDBInfo) { - if (dockerDBInfo != null && dockerDBInfo.docker != null) { - try { - // Kill container - dockerDBInfo.docker.killContainer(dockerDBInfo.containerID); - // Remove container - dockerDBInfo.docker.removeContainer(dockerDBInfo.containerID); - - // Close the docker client - dockerDBInfo.docker.close(); - } catch (DockerException | InterruptedException ex) { - logger.warn("Could not kill the database container with connection string: {}!", dockerDBInfo.connectionString, ex); - } - } - } - - private static void executeSQL(String connectionString, String sqlFile) throws Exception { - // Execute SQL - String sql = new String(Files.readAllBytes(Paths.get(Utils.getFile(sqlFile, null).getAbsolutePath())), StandardCharsets.UTF_8); - sql = sql.replaceAll("\n", ""); - final Connection conn = DriverManager.getConnection(connectionString); - conn.createStatement().execute(sql); - conn.close(); + deleteTempMappingFile(tempMappingPath); } } diff --git a/src/test/java/be/ugent/rml/Mapper_SPARQL_Test.java b/src/test/java/be/ugent/rml/Mapper_SPARQL_Test.java index d974131c..9041fe09 100644 --- a/src/test/java/be/ugent/rml/Mapper_SPARQL_Test.java +++ b/src/test/java/be/ugent/rml/Mapper_SPARQL_Test.java @@ -13,7 +13,7 @@ import java.nio.file.Paths; import java.util.*; -import static be.ugent.rml.MySQLTestCore.deleteTempMappingFile; +import static be.ugent.rml.DBTestCore.deleteTempMappingFile; @RunWith(Parameterized.class) public class Mapper_SPARQL_Test extends TestCore { diff --git a/src/test/java/be/ugent/rml/Mapper_SQLServer_Test.java b/src/test/java/be/ugent/rml/Mapper_SQLServer_Test.java index 4581d333..e30ecfbf 100644 --- a/src/test/java/be/ugent/rml/Mapper_SQLServer_Test.java +++ b/src/test/java/be/ugent/rml/Mapper_SQLServer_Test.java @@ -1,107 +1,35 @@ package be.ugent.rml; -import com.spotify.docker.client.DockerClient; -import com.spotify.docker.client.exceptions.DockerException; -import org.junit.AfterClass; import org.junit.BeforeClass; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.slf4j.Logger; +import org.junit.jupiter.api.TestInstance; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; import org.slf4j.LoggerFactory; +import org.testcontainers.containers.MSSQLServerContainer; +import org.testcontainers.utility.DockerImageName; -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; import java.util.Arrays; -import java.util.HashSet; -import java.util.Iterator; -@RunWith(Parameterized.class) -public class Mapper_SQLServer_Test extends TestCore { +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +public class Mapper_SQLServer_Test extends DBTestCore { - private static final Boolean LOCAL_TESTING = !Boolean.valueOf(System.getenv("CI")); + protected Mapper_SQLServer_Test() { + super("sa", "YourSTRONG!Passw0rd;", "mcr.microsoft.com/mssql/server:latest"); + super.container = new MSSQLServerContainer<>(DockerImageName.parse(DOCKER_TAG)) + .acceptLicense() + .withPassword(PASSWORD) + .withEnv("runID", Integer.toString(this.hashCode())); - private static Logger logger = LoggerFactory.getLogger(Mapper_SQLServer_Test.class); - - private static String CONNECTIONSTRING = LOCAL_TESTING ? - "jdbc:sqlserver://dia.test.iminds.be:8971;user=sa;password=YourSTRONG!Passw0rd;databaseName=TestDB;" : - "jdbc:sqlserver://sqlserver;user=sa;password=YourSTRONG!Passw0rd;databaseName=TestDB;"; - - private static HashSet tempFiles = new HashSet<>(); - - private static DockerDBInfo remoteDB; - - private static class DockerDBInfo { - String connectionString; - String containerID; - DockerClient docker; - - DockerDBInfo(String connectionString) { - this.connectionString = connectionString; - } + super.container.start(); + super.dbURL = super.container.getJdbcUrl(); } @BeforeClass - public static void startDBs() { - remoteDB = new DockerDBInfo(CONNECTIONSTRING); // see .gitlab-ci.yml file - - // Creates testing db - try { - // Can't set DB yet in connection string --> remove here - final Connection conn = DriverManager.getConnection(remoteDB.connectionString.substring(0, remoteDB.connectionString.lastIndexOf("databaseName="))); - conn.createStatement().execute("CREATE DATABASE TestDB"); - conn.close(); - } catch (SQLException ex) { - // Doesn't matter - } + public static void beforeClass() { + logger = LoggerFactory.getLogger(Mapper_SQLServer_Test.class); } - @AfterClass - public static void stopDBs() { - if (!LOCAL_TESTING) { - closeDocker(remoteDB); - } - - // Make sure all tempFiles are removed - int counter = 0; - while (!tempFiles.isEmpty()) { - for (Iterator i = tempFiles.iterator(); i.hasNext(); ) { - try { - if (new File(i.next()).delete()) { - i.remove(); - } - } catch (Exception ex) { - counter++; - ex.printStackTrace(); - // Prevent infinity loops - if (counter > 100) { - throw new Error("Could not remove all temp mapping files."); - } - } - } - } - } - - @Parameterized.Parameter(0) - public String testCaseName; - - @Parameterized.Parameter(1) - public Class expectedException; - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Parameterized.Parameters(name = "{index}: SQLServer_{0}") public static Iterable data() { return Arrays.asList(new Object[][]{ // scenarios: @@ -169,94 +97,23 @@ public static Iterable data() { } - @Test - public void doMapping() throws Exception { - - //setup expected exception - if (expectedException != null) { - thrown.expect(expectedException); - } + @ParameterizedTest(name = "{index}: SQLServer_{0}") + @MethodSource("data") + public void doMapping(String testCaseName, Class expectedException) throws Exception { + prepareDatabase(String.format("src/test/resources/test-cases/%s-SQLServer/resource.sql", testCaseName), USERNAME, PASSWORD); - mappingTest(testCaseName); - } - - private void mappingTest(String testCaseName) throws Exception { - - String resourcePath = "test-cases/" + testCaseName + "-SQLServer/resource.sql"; String mappingPath = "./test-cases/" + testCaseName + "-SQLServer/mapping.ttl"; String outputPath = "test-cases/" + testCaseName + "-SQLServer/output.nq"; - String tempMappingPath = replaceDSNInMappingFile(mappingPath, CONNECTIONSTRING); - - // Execute SQL - executeSQL(remoteDB.connectionString, resourcePath); + String tempMappingPath = replaceDSNInMappingFile(mappingPath, dbURL); // mapping - doMapping(tempMappingPath, outputPath); - deleteTempMappingFile(tempMappingPath); - - } - - // Utils ----------------------------------------------------------------------------------------------------------- - - private static String replaceDSNInMappingFile(String path, String connectionString) { - try { - // Read mapping file - String mapping = new String(Files.readAllBytes(Paths.get(Utils.getFile(path, null).getAbsolutePath())), StandardCharsets.UTF_8); - - // Replace "PORT" in mapping file by new port - mapping = mapping.replace("CONNECTIONDSN", connectionString); - - // Write to temp mapping file - - String fileName = Integer.toString(Math.abs(path.hashCode())) + "tempMapping.ttl"; - Path file = Paths.get(fileName); - Files.write(file, Arrays.asList(mapping.split("\n"))); - - String absolutePath = Paths.get(Utils.getFile(fileName, null).getAbsolutePath()).toString(); - tempFiles.add(absolutePath); - - return absolutePath; - - } catch (IOException ex) { - throw new Error(ex.getMessage()); - } - } - - private static void deleteTempMappingFile(String absolutePath) { - File file = new File(absolutePath); - if (file.delete()) { - tempFiles.remove(absolutePath); + if (expectedException == null) { + doMapping(tempMappingPath, outputPath); + } else { + doMappingExpectError(tempMappingPath); } - } - private static void closeDocker(DockerDBInfo dockerDBInfo) { - if (dockerDBInfo != null && dockerDBInfo.docker != null) { - try { - // Kill container - dockerDBInfo.docker.killContainer(dockerDBInfo.containerID); - - // Remove container - dockerDBInfo.docker.removeContainer(dockerDBInfo.containerID); - - // Close the docker client - dockerDBInfo.docker.close(); - } catch (DockerException | InterruptedException ex) { - logger.warn("Could not kill the database container with connection string: {}!", dockerDBInfo.connectionString, ex); - } - } - } - - private static void executeSQL(String connectionString, String sqlFile) throws Exception { - // Execute SQL - String sql = new String(Files.readAllBytes(Paths.get(Utils.getFile(sqlFile, null).getAbsolutePath())), StandardCharsets.UTF_8); - sql = sql.replaceAll("\n", ""); - String[] statements = sql.split(";"); - final Connection conn = DriverManager.getConnection(connectionString); - for (String statement : statements) { - conn.createStatement().execute(statement + ";"); - } - conn.close(); + deleteTempMappingFile(tempMappingPath); } - } diff --git a/src/test/java/be/ugent/rml/MySQLTestCore.java b/src/test/java/be/ugent/rml/MySQLTestCore.java index 9a5eb48f..8992223a 100644 --- a/src/test/java/be/ugent/rml/MySQLTestCore.java +++ b/src/test/java/be/ugent/rml/MySQLTestCore.java @@ -1,56 +1,24 @@ package be.ugent.rml; -import ch.vorburger.exec.ManagedProcessException; -import ch.vorburger.mariadb4j.DB; -import ch.vorburger.mariadb4j.DBConfigurationBuilder; - -import java.io.File; -import java.util.Iterator; - +import org.testcontainers.containers.MySQLContainer; +import org.testcontainers.utility.DockerImageName; public abstract class MySQLTestCore extends DBTestCore { - - protected static String CONNECTIONSTRING_TEMPLATE = "jdbc:mysql://localhost:%d/test"; - - protected static DB mysqlDB; - - protected static String getConnectionString(int portNumber) { - return String.format(CONNECTIONSTRING_TEMPLATE, portNumber); + protected MySQLTestCore(String tag) { + super("root", "", tag); + super.container = new MySQLContainer<>(DockerImageName.parse(tag)) + .withUsername(USERNAME) + .withPassword(PASSWORD) + .withEnv("allowPublicKeyRetrieval", "true") + .withEnv("useSSL", "false") + .withEnv("runID", Integer.toString(this.hashCode())) + .withConfigurationOverride("mysql_override"); + + super.container.start(); + super.dbURL = super.container.getJdbcUrl(); } - protected static DB setUpMySQLDBInstance(int portNumber) throws ManagedProcessException { - DBConfigurationBuilder configBuilder = DBConfigurationBuilder.newBuilder(); - configBuilder.setPort(portNumber); - configBuilder.addArg("--user=root"); - configBuilder.addArg("--sql-mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ANSI_QUOTES"); - DB mysqlDB = DB.newEmbeddedDB(configBuilder.build()); - mysqlDB.start(); - - return mysqlDB; - } - - protected static void stopDBs() throws ManagedProcessException { - if (mysqlDB != null) { - mysqlDB.stop(); - } - - // Make sure all tempFiles are removed - int counter = 0; - while (!tempFiles.isEmpty()) { - for (Iterator i = tempFiles.iterator(); i.hasNext(); ) { - try { - if (new File(i.next()).delete()) { - i.remove(); - } - } catch (Exception ex) { - counter++; - ex.printStackTrace(); - // Prevent infinity loops - if (counter > 100) { - throw new Error("Could not remove all temp mapping files."); - } - } - } - } + protected MySQLTestCore() { + this("mysql:latest"); } } diff --git a/src/test/java/be/ugent/rml/PostgresTestCore.java b/src/test/java/be/ugent/rml/PostgresTestCore.java index 9032b2e6..7a69c20b 100644 --- a/src/test/java/be/ugent/rml/PostgresTestCore.java +++ b/src/test/java/be/ugent/rml/PostgresTestCore.java @@ -1,100 +1,23 @@ package be.ugent.rml; -import com.spotify.docker.client.DockerClient; -import com.spotify.docker.client.exceptions.DockerException; -import org.slf4j.Logger; - -import java.io.File; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.sql.Connection; -import java.sql.DriverManager; -import java.util.Iterator; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.utility.DockerImageName; public abstract class PostgresTestCore extends DBTestCore { - - protected static Logger logger; - - protected static final Boolean LOCAL_TESTING = !Boolean.valueOf(System.getenv("CI")); - - protected static String CONNECTIONSTRING = LOCAL_TESTING ? - "jdbc:postgresql://dia.test.iminds.be:8970/postgres?user=postgres&password=YourSTRONG!Passw0rd" : - "jdbc:postgresql://postgres/postgres?user=postgres&password=YourSTRONG!Passw0rd"; - - protected static DockerDBInfo remoteDB; - - protected static class DockerDBInfo { - String connectionString; - String containerID; - DockerClient docker; - - public DockerDBInfo(DockerClient docker, String connectionString, String containerID) { - this.docker = docker; - this.connectionString = connectionString; - this.containerID = containerID; - } - - public DockerDBInfo(String connectionString) { - this(null, connectionString, null); - } - } - - protected static void startDBs() { - remoteDB = new DockerDBInfo(CONNECTIONSTRING); // see .gitlab-ci.yml file - } - - protected static void stopDBs() { - if (!LOCAL_TESTING) { - closeDocker(remoteDB); - } - - // Make sure all tempFiles are removed - int counter = 0; - while (!tempFiles.isEmpty()) { - for (Iterator i = tempFiles.iterator(); i.hasNext(); ) { - try { - if (new File(i.next()).delete()) { - i.remove(); - } - } catch (Exception ex) { - counter++; - ex.printStackTrace(); - // Prevent infinity loops - if (counter > 100) { - throw new Error("Could not remove all temp mapping files."); - } - } - } - } - } - - - // Utils ----------------------------------------------------------------------------------------------------------- - - protected static void closeDocker(DockerDBInfo dockerDBInfo) { - if (dockerDBInfo != null && dockerDBInfo.docker != null) { - try { - // Kill container - dockerDBInfo.docker.killContainer(dockerDBInfo.containerID); - - // Remove container - dockerDBInfo.docker.removeContainer(dockerDBInfo.containerID); - - // Close the docker client - dockerDBInfo.docker.close(); - } catch (DockerException | InterruptedException ex) { - logger.warn("Could not kill the database container with connection string: {}!", dockerDBInfo.connectionString, ex); - } - } + public PostgresTestCore() { + this("postgres:latest"); } - protected static void executeSQL(String connectionString, String sqlFile) throws Exception { - // Execute SQL - String sql = new String(Files.readAllBytes(Paths.get(Utils.getFile(sqlFile, null).getAbsolutePath())), StandardCharsets.UTF_8); - sql = sql.replaceAll("\n", ""); - final Connection conn = DriverManager.getConnection(connectionString); - conn.createStatement().execute(sql); - conn.close(); + public PostgresTestCore(String tag) { + super("postgres", "", tag); + super.container = new PostgreSQLContainer<>(DockerImageName.parse(tag)) + .withUsername(USERNAME) + .withPassword(PASSWORD) + .withEnv("POSTGRES_HOST_AUTH_METHOD", "trust") + .withEnv("runID", Integer.toString(this.hashCode())) // to start a different container for each run + .withDatabaseName("test"); + + super.container.start(); + super.dbURL = super.container.getJdbcUrl(); } } diff --git a/src/test/java/be/ugent/rml/TestCore.java b/src/test/java/be/ugent/rml/TestCore.java index f0881286..41fe9605 100644 --- a/src/test/java/be/ugent/rml/TestCore.java +++ b/src/test/java/be/ugent/rml/TestCore.java @@ -324,7 +324,7 @@ void doMappingExpectError(String mapPath, StrictMode strictMode) { executor.execute(null).get(new NamedNode("rmlmapper://default.store")); } catch (Exception e) { // I expected you! - logger.warn(e.getMessage(), e); + logger.debug(e.getMessage(), e); return; } diff --git a/src/test/resources/container-license-acceptance.txt b/src/test/resources/container-license-acceptance.txt new file mode 100644 index 00000000..f17e683d --- /dev/null +++ b/src/test/resources/container-license-acceptance.txt @@ -0,0 +1 @@ +mcr.microsoft.com/mssql/server:latest \ No newline at end of file diff --git a/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml index 6c518707..528c275b 100644 --- a/src/test/resources/logback-test.xml +++ b/src/test/resources/logback-test.xml @@ -10,4 +10,7 @@ + + + diff --git a/src/test/resources/mysql_override/mysql_config.cnf b/src/test/resources/mysql_override/mysql_config.cnf new file mode 100644 index 00000000..ca67dbc6 --- /dev/null +++ b/src/test/resources/mysql_override/mysql_config.cnf @@ -0,0 +1,5 @@ +[mysqld] +sql-mode="ANSI_QUOTES" +[user] +user=root +password= \ No newline at end of file diff --git a/src/test/resources/test-cases/RMLTC0000-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0000-SQLServer/resource.sql index a5df5fb8..4f4d7183 100644 --- a/src/test/resources/test-cases/RMLTC0000-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0000-SQLServer/resource.sql @@ -1,6 +1,5 @@ -USE TestDB; -EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' -EXEC sp_msforeachtable 'DROP TABLE ?' +EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'; +EXEC sp_msforeachtable 'DROP TABLE ?'; CREATE TABLE student ( "Name" VARCHAR(50) diff --git a/src/test/resources/test-cases/RMLTC0001a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0001a-SQLServer/resource.sql index 391b8d53..b8b37a19 100644 --- a/src/test/resources/test-cases/RMLTC0001a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0001a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' diff --git a/src/test/resources/test-cases/RMLTC0001b-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0001b-SQLServer/resource.sql index 391b8d53..b8b37a19 100644 --- a/src/test/resources/test-cases/RMLTC0001b-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0001b-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' diff --git a/src/test/resources/test-cases/RMLTC0002a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0002a-SQLServer/resource.sql index 45bd58c0..abf96bab 100644 --- a/src/test/resources/test-cases/RMLTC0002a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0002a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' diff --git a/src/test/resources/test-cases/RMLTC0002b-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0002b-SQLServer/resource.sql index 7403a330..133d9c4e 100644 --- a/src/test/resources/test-cases/RMLTC0002b-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0002b-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' diff --git a/src/test/resources/test-cases/RMLTC0002c-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0002c-SQLServer/resource.sql index 7403a330..133d9c4e 100644 --- a/src/test/resources/test-cases/RMLTC0002c-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0002c-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' diff --git a/src/test/resources/test-cases/RMLTC0002d-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0002d-SQLServer/resource.sql index 312631e3..786c3779 100644 --- a/src/test/resources/test-cases/RMLTC0002d-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0002d-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' diff --git a/src/test/resources/test-cases/RMLTC0002e-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0002e-SQLServer/resource.sql index 7403a330..133d9c4e 100644 --- a/src/test/resources/test-cases/RMLTC0002e-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0002e-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' diff --git a/src/test/resources/test-cases/RMLTC0002f-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0002f-SQLServer/resource.sql index b9bad140..259301b4 100644 --- a/src/test/resources/test-cases/RMLTC0002f-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0002f-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS TestDB.Student; CREATE TABLE Student ( ID INTEGER, diff --git a/src/test/resources/test-cases/RMLTC0002g-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0002g-SQLServer/resource.sql index 7403a330..133d9c4e 100644 --- a/src/test/resources/test-cases/RMLTC0002g-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0002g-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' diff --git a/src/test/resources/test-cases/RMLTC0002h-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0002h-SQLServer/resource.sql index 1673b883..53ace85d 100644 --- a/src/test/resources/test-cases/RMLTC0002h-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0002h-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' CREATE TABLE student ( diff --git a/src/test/resources/test-cases/RMLTC0002i-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0002i-SQLServer/resource.sql index 7403a330..133d9c4e 100644 --- a/src/test/resources/test-cases/RMLTC0002i-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0002i-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' diff --git a/src/test/resources/test-cases/RMLTC0002j-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0002j-SQLServer/resource.sql index 7403a330..133d9c4e 100644 --- a/src/test/resources/test-cases/RMLTC0002j-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0002j-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' diff --git a/src/test/resources/test-cases/RMLTC0003a-PostgreSQL/mapping.ttl b/src/test/resources/test-cases/RMLTC0003a-PostgreSQL/mapping.ttl index 991b0a20..3c5758af 100644 --- a/src/test/resources/test-cases/RMLTC0003a-PostgreSQL/mapping.ttl +++ b/src/test/resources/test-cases/RMLTC0003a-PostgreSQL/mapping.ttl @@ -36,6 +36,6 @@ FROM "student" <#DB_source> a d2rq:Database; d2rq:jdbcDSN "CONNECTIONDSN"; # the "jbdc:mysql:// part is ignored d2rq:jdbcDriver "com.mysql.cj.jdbc.Driver"; # this is ignored - d2rq:username "root"; + d2rq:username "postgres"; d2rq:password "" . diff --git a/src/test/resources/test-cases/RMLTC0003a-PostgreSQL/output.nq b/src/test/resources/test-cases/RMLTC0003a-PostgreSQL/output.nq index e69de29b..898147de 100644 --- a/src/test/resources/test-cases/RMLTC0003a-PostgreSQL/output.nq +++ b/src/test/resources/test-cases/RMLTC0003a-PostgreSQL/output.nq @@ -0,0 +1,2 @@ + "10"^^. + . diff --git a/src/test/resources/test-cases/RMLTC0003a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0003a-SQLServer/resource.sql index 13f10776..8d0d97f4 100644 --- a/src/test/resources/test-cases/RMLTC0003a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0003a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' diff --git a/src/test/resources/test-cases/RMLTC0003b-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0003b-SQLServer/resource.sql index 13f10776..8d0d97f4 100644 --- a/src/test/resources/test-cases/RMLTC0003b-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0003b-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' diff --git a/src/test/resources/test-cases/RMLTC0003c-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0003c-SQLServer/resource.sql index 13f10776..8d0d97f4 100644 --- a/src/test/resources/test-cases/RMLTC0003c-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0003c-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' diff --git a/src/test/resources/test-cases/RMLTC0004a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0004a-SQLServer/resource.sql index 6424aeaa..704dcf45 100644 --- a/src/test/resources/test-cases/RMLTC0004a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0004a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student_sport; CREATE TABLE student_sport ( "Student" VARCHAR(50), diff --git a/src/test/resources/test-cases/RMLTC0004b-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0004b-SQLServer/resource.sql index f38006ab..67e5510f 100644 --- a/src/test/resources/test-cases/RMLTC0004b-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0004b-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student; CREATE TABLE student ( "Name" VARCHAR(50) diff --git a/src/test/resources/test-cases/RMLTC0005a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0005a-SQLServer/resource.sql index 64a717bb..ce136218 100644 --- a/src/test/resources/test-cases/RMLTC0005a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0005a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS IOUs; CREATE TABLE IOUs ( diff --git a/src/test/resources/test-cases/RMLTC0005b-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0005b-SQLServer/resource.sql index 660f8c86..32767803 100644 --- a/src/test/resources/test-cases/RMLTC0005b-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0005b-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS IOUs; CREATE TABLE IOUs ( fname VARCHAR(20), diff --git a/src/test/resources/test-cases/RMLTC0006a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0006a-SQLServer/resource.sql index 976627c7..a930f3e7 100644 --- a/src/test/resources/test-cases/RMLTC0006a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0006a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student; CREATE TABLE student ( "ID" INTEGER, diff --git a/src/test/resources/test-cases/RMLTC0007a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0007a-SQLServer/resource.sql index 976627c7..a930f3e7 100644 --- a/src/test/resources/test-cases/RMLTC0007a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0007a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student; CREATE TABLE student ( "ID" INTEGER, diff --git a/src/test/resources/test-cases/RMLTC0007b-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0007b-SQLServer/resource.sql index 976627c7..a930f3e7 100644 --- a/src/test/resources/test-cases/RMLTC0007b-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0007b-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student; CREATE TABLE student ( "ID" INTEGER, diff --git a/src/test/resources/test-cases/RMLTC0007c-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0007c-SQLServer/resource.sql index 976627c7..a930f3e7 100644 --- a/src/test/resources/test-cases/RMLTC0007c-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0007c-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student; CREATE TABLE student ( "ID" INTEGER, diff --git a/src/test/resources/test-cases/RMLTC0007d-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0007d-SQLServer/resource.sql index 976627c7..a930f3e7 100644 --- a/src/test/resources/test-cases/RMLTC0007d-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0007d-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student; CREATE TABLE student ( "ID" INTEGER, diff --git a/src/test/resources/test-cases/RMLTC0007e-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0007e-SQLServer/resource.sql index 976627c7..a930f3e7 100644 --- a/src/test/resources/test-cases/RMLTC0007e-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0007e-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student; CREATE TABLE student ( "ID" INTEGER, diff --git a/src/test/resources/test-cases/RMLTC0007f-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0007f-SQLServer/resource.sql index 976627c7..a930f3e7 100644 --- a/src/test/resources/test-cases/RMLTC0007f-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0007f-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student; CREATE TABLE student ( "ID" INTEGER, diff --git a/src/test/resources/test-cases/RMLTC0007g-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0007g-SQLServer/resource.sql index 976627c7..a930f3e7 100644 --- a/src/test/resources/test-cases/RMLTC0007g-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0007g-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student; CREATE TABLE student ( "ID" INTEGER, diff --git a/src/test/resources/test-cases/RMLTC0007h-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0007h-SQLServer/resource.sql index b97bc250..6263542f 100644 --- a/src/test/resources/test-cases/RMLTC0007h-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0007h-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student; CREATE TABLE student ( "ID" INTEGER, diff --git a/src/test/resources/test-cases/RMLTC0008a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0008a-SQLServer/resource.sql index e9b41d95..d2680107 100644 --- a/src/test/resources/test-cases/RMLTC0008a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0008a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student; CREATE TABLE student ( "ID" INTEGER, diff --git a/src/test/resources/test-cases/RMLTC0008b-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0008b-SQLServer/resource.sql index e9b41d95..d2680107 100644 --- a/src/test/resources/test-cases/RMLTC0008b-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0008b-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student; CREATE TABLE student ( "ID" INTEGER, diff --git a/src/test/resources/test-cases/RMLTC0008c-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0008c-SQLServer/resource.sql index e9b41d95..d2680107 100644 --- a/src/test/resources/test-cases/RMLTC0008c-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0008c-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student; CREATE TABLE student ( "ID" INTEGER, diff --git a/src/test/resources/test-cases/RMLTC0009a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0009a-SQLServer/resource.sql index 2b79a5d4..e091357e 100644 --- a/src/test/resources/test-cases/RMLTC0009a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0009a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student; CREATE TABLE student ( "ID" INTEGER, diff --git a/src/test/resources/test-cases/RMLTC0009b-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0009b-SQLServer/resource.sql index ac6eca67..5ed71c4c 100644 --- a/src/test/resources/test-cases/RMLTC0009b-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0009b-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student; CREATE TABLE student ( diff --git a/src/test/resources/test-cases/RMLTC0009c-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0009c-SQLServer/resource.sql index ad1775c0..d8ba9270 100644 --- a/src/test/resources/test-cases/RMLTC0009c-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0009c-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS Student; DROP TABLE IF EXISTS Sport; diff --git a/src/test/resources/test-cases/RMLTC0009d-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0009d-SQLServer/resource.sql index ad1775c0..d8ba9270 100644 --- a/src/test/resources/test-cases/RMLTC0009d-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0009d-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS Student; DROP TABLE IF EXISTS Sport; diff --git a/src/test/resources/test-cases/RMLTC0010a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0010a-SQLServer/resource.sql index 8c20c7bc..12f1652d 100644 --- a/src/test/resources/test-cases/RMLTC0010a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0010a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS country_info; CREATE TABLE country_info ( diff --git a/src/test/resources/test-cases/RMLTC0010b-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0010b-SQLServer/resource.sql index 8c20c7bc..12f1652d 100644 --- a/src/test/resources/test-cases/RMLTC0010b-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0010b-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS country_info; CREATE TABLE country_info ( diff --git a/src/test/resources/test-cases/RMLTC0010c-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0010c-SQLServer/resource.sql index 8c20c7bc..12f1652d 100644 --- a/src/test/resources/test-cases/RMLTC0010c-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0010c-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS country_info; CREATE TABLE country_info ( diff --git a/src/test/resources/test-cases/RMLTC0011a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0011a-SQLServer/resource.sql index 0002c8ec..d0c695d5 100644 --- a/src/test/resources/test-cases/RMLTC0011a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0011a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' diff --git a/src/test/resources/test-cases/RMLTC0011b-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0011b-SQLServer/resource.sql index d7644c70..acdc4aa1 100644 --- a/src/test/resources/test-cases/RMLTC0011b-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0011b-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS student_sport; DROP TABLE IF EXISTS student; DROP TABLE IF EXISTS sport; diff --git a/src/test/resources/test-cases/RMLTC0012a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0012a-SQLServer/resource.sql index fecf09a9..524a1c7b 100644 --- a/src/test/resources/test-cases/RMLTC0012a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0012a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS IOUs; DROP TABLE IF EXISTS Lives; diff --git a/src/test/resources/test-cases/RMLTC0012b-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0012b-SQLServer/resource.sql index 03379770..2761bf68 100644 --- a/src/test/resources/test-cases/RMLTC0012b-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0012b-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS persons; CREATE TABLE persons ( diff --git a/src/test/resources/test-cases/RMLTC0012c-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0012c-SQLServer/resource.sql index 8fab5e6f..46e386f7 100644 --- a/src/test/resources/test-cases/RMLTC0012c-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0012c-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS IOUs; DROP TABLE IF EXISTS Lives; diff --git a/src/test/resources/test-cases/RMLTC0012d-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0012d-SQLServer/resource.sql index 8fab5e6f..46e386f7 100644 --- a/src/test/resources/test-cases/RMLTC0012d-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0012d-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS IOUs; DROP TABLE IF EXISTS Lives; diff --git a/src/test/resources/test-cases/RMLTC0012e-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0012e-SQLServer/resource.sql index 8fab5e6f..46e386f7 100644 --- a/src/test/resources/test-cases/RMLTC0012e-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0012e-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS IOUs; DROP TABLE IF EXISTS Lives; diff --git a/src/test/resources/test-cases/RMLTC0013a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0013a-SQLServer/resource.sql index dd278769..ec0d73e0 100644 --- a/src/test/resources/test-cases/RMLTC0013a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0013a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS Person; CREATE TABLE Person ( diff --git a/src/test/resources/test-cases/RMLTC0014d-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0014d-SQLServer/resource.sql index d39327c0..cad65fc9 100644 --- a/src/test/resources/test-cases/RMLTC0014d-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0014d-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all' EXEC sp_msforeachtable 'DROP TABLE ?' diff --git a/src/test/resources/test-cases/RMLTC0015a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0015a-SQLServer/resource.sql index a0a684ef..5640c8f8 100644 --- a/src/test/resources/test-cases/RMLTC0015a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0015a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS Country; CREATE TABLE Country ( diff --git a/src/test/resources/test-cases/RMLTC0015b-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0015b-SQLServer/resource.sql index a0a684ef..5640c8f8 100644 --- a/src/test/resources/test-cases/RMLTC0015b-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0015b-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS Country; CREATE TABLE Country ( diff --git a/src/test/resources/test-cases/RMLTC0016a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0016a-SQLServer/resource.sql index e1607220..833db0a0 100644 --- a/src/test/resources/test-cases/RMLTC0016a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0016a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS Patient; CREATE TABLE Patient ( diff --git a/src/test/resources/test-cases/RMLTC0016b-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0016b-SQLServer/resource.sql index e1607220..833db0a0 100644 --- a/src/test/resources/test-cases/RMLTC0016b-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0016b-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS Patient; CREATE TABLE Patient ( diff --git a/src/test/resources/test-cases/RMLTC0016c-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0016c-SQLServer/resource.sql index e1607220..833db0a0 100644 --- a/src/test/resources/test-cases/RMLTC0016c-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0016c-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS Patient; CREATE TABLE Patient ( diff --git a/src/test/resources/test-cases/RMLTC0016d-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0016d-SQLServer/resource.sql index e1607220..833db0a0 100644 --- a/src/test/resources/test-cases/RMLTC0016d-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0016d-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS Patient; CREATE TABLE Patient ( diff --git a/src/test/resources/test-cases/RMLTC0018a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0018a-SQLServer/resource.sql index 971a3ad4..154f7071 100644 --- a/src/test/resources/test-cases/RMLTC0018a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0018a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS Student; CREATE TABLE Student ( diff --git a/src/test/resources/test-cases/RMLTC0019a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0019a-SQLServer/resource.sql index 2ff708ef..ae78dc8a 100644 --- a/src/test/resources/test-cases/RMLTC0019a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0019a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS Employee; CREATE TABLE Employee ( diff --git a/src/test/resources/test-cases/RMLTC0019b-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0019b-SQLServer/resource.sql index 2ff708ef..ae78dc8a 100644 --- a/src/test/resources/test-cases/RMLTC0019b-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0019b-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS Employee; CREATE TABLE Employee ( diff --git a/src/test/resources/test-cases/RMLTC0020a-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0020a-SQLServer/resource.sql index 959a905b..0bee3169 100644 --- a/src/test/resources/test-cases/RMLTC0020a-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0020a-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS Student; CREATE TABLE Student ( diff --git a/src/test/resources/test-cases/RMLTC0020b-SQLServer/resource.sql b/src/test/resources/test-cases/RMLTC0020b-SQLServer/resource.sql index 959a905b..0bee3169 100644 --- a/src/test/resources/test-cases/RMLTC0020b-SQLServer/resource.sql +++ b/src/test/resources/test-cases/RMLTC0020b-SQLServer/resource.sql @@ -1,4 +1,3 @@ -USE TestDB; DROP TABLE IF EXISTS Student; CREATE TABLE Student ( diff --git a/test.sh b/test.sh index 2dd74106..4f537015 100755 --- a/test.sh +++ b/test.sh @@ -71,7 +71,7 @@ if [ $? -eq 0 ]; then log "Running all Oracle tests." cp pom.xml pom-oracle.xml - dep="\t\t\n\t\t\tcom.oracle\n\t\t\tojdbc8\n\t\t\t12.2.0.1\n\t\t" + dep="\t\t\n\t\t\tcom.oracle.database.jdbc\n\t\t\tojdbc8\n\t\t\t21.6.0.0.1\n\t\t" temp=$(echo $dep | sed 's/\//\\\//g') sed -i "/<\/dependencies>/ s/.*/${temp}\n&/" pom-oracle.xml # This doesn't work with sed on Mac. Install GNU sed via brew.