diff --git a/fda-query-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java b/fda-query-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java index 8fb923dff3c2f606bee4ea6ba5a8be1167520e4c..28c32629815e1504b08c5556e6ceebe5c3c6ef24 100644 --- a/fda-query-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java +++ b/fda-query-service/rest-service/src/test/java/at/tuwien/BaseUnitTest.java @@ -1029,6 +1029,7 @@ public abstract class BaseUnitTest { public final static String QUERY_1_DOI = "1111/1"; public final static Long QUERY_1_CONTAINER_ID = CONTAINER_1_ID; public final static Long QUERY_1_DATABASE_ID = DATABASE_1_ID; + public final static Long QUERY_1_RESULT_NUMBER = 2L; public final static String QUERY_1_QUERY_HASH = "a3b8ac39e38167d14cf3a9c20a69e4b6954d049525390b973a2c23064953a992"; public final static String QUERY_1_RESULT_HASH = "8358c8ade4849d2094ab5bb29127afdae57e6bb5acb1db7af603813d406c467a"; public final static Instant QUERY_1_CREATED = Instant.ofEpochSecond(1677648377); @@ -1040,6 +1041,7 @@ public abstract class BaseUnitTest { .query(QUERY_1_STATEMENT) .queryHash(QUERY_1_QUERY_HASH) .resultHash(QUERY_1_RESULT_HASH) + .resultNumber(QUERY_1_RESULT_NUMBER) .created(QUERY_1_CREATED) .createdBy(USER_1_USERNAME) .isPersisted(QUERY_1_PERSISTED) @@ -1078,6 +1080,7 @@ public abstract class BaseUnitTest { public final static String QUERY_2_QUERY_HASH = "a2d2dd94ebc7653bb5a3b55dd8ed5e91d3d13c225c6855a1eb4eb7ca14c36ced"; public final static Long QUERY_2_CONTAINER_ID = CONTAINER_2_ID; public final static Long QUERY_2_DATABASE_ID = DATABASE_2_ID; + public final static Long QUERY_2_RESULT_NUMBER = 2L; public final static String QUERY_2_RESULT_HASH = "ff3f7cbe1b96d296957f6e39e55b8b1b577fa3d205d4795af99594cfd20cb80d"; public final static Instant QUERY_2_CREATED = Instant.now().minus(2, MINUTES); public final static Instant QUERY_2_EXECUTION = Instant.now().minus(1, MINUTES); @@ -1088,9 +1091,12 @@ public abstract class BaseUnitTest { .query(QUERY_2_STATEMENT) .queryHash(QUERY_2_QUERY_HASH) .resultHash(QUERY_2_RESULT_HASH) + .resultNumber(QUERY_2_RESULT_NUMBER) .created(QUERY_2_CREATED) .createdBy(USER_1_USERNAME) .isPersisted(QUERY_2_PERSISTED) + .created(QUERY_2_CREATED) + .executed(QUERY_2_EXECUTION) .build(); public final static List<TableColumn> TABLE_1_COLUMNS = List.of(TableColumn.builder() @@ -2156,6 +2162,20 @@ public abstract class BaseUnitTest { .creator(USER_1) .build(); + public final static Table TABLE_4_NOCOLS = Table.builder() + .id(TABLE_4_ID) + .created(Instant.now()) + .internalName(TABLE_4_INTERNALNAME) + .description(TABLE_4_DESCRIPTION) + .name(TABLE_4_NAME) + .lastModified(TABLE_4_LAST_MODIFIED) + .tdbid(DATABASE_1_ID) + .queueName(TABLE_4_QUEUE_NAME) + .routingKey(TABLE_4_ROUTING_KEY) + .columns(List.of()) + .creator(USER_1) + .build(); + public final static List<TableColumn> TABLE_5_COLUMNS = List.of(TableColumn.builder() .id(COLUMN_5_1_ID) .ordinalPosition(COLUMN_5_1_ORDINALPOS) @@ -2448,7 +2468,6 @@ public abstract class BaseUnitTest { .build(); public final static Long QUERY_1_RESULT_ID = 1L; - public final static Long QUERY_1_RESULT_NUMBER = 2L; public final static List<Map<String, Object>> QUERY_1_RESULT_RESULT = List.of( new HashMap<>() {{ put("location", "Albury"); diff --git a/fda-query-service/rest-service/src/test/java/at/tuwien/config/MariaDbConfig.java b/fda-query-service/rest-service/src/test/java/at/tuwien/config/MariaDbConfig.java index 17a8cbf8e594bfb2337c6dd75f327c49c11582e9..8d00a9e77e0cb7674bdfd13d5d348244a08e0f92 100644 --- a/fda-query-service/rest-service/src/test/java/at/tuwien/config/MariaDbConfig.java +++ b/fda-query-service/rest-service/src/test/java/at/tuwien/config/MariaDbConfig.java @@ -18,9 +18,18 @@ public class MariaDbConfig { final String jdbc = "jdbc:mariadb://" + hostname + "/" + database; log.trace("connect to database {}", jdbc); final Connection connection = DriverManager.getConnection(jdbc, "root", "mariadb"); - final Statement statement = connection.createStatement(); - statement.execute("INSERT INTO qs_queries (created_by, query, query_normalized, is_persisted, query_hash, result_hash, result_number) " + - "VALUES ('" + username + "', '" + query.getQuery() + "', '" + query.getQuery() + "', true, '" + query.getQueryHash() + "', '" + query.getResultHash() + "', " + query.getResultNumber() + ")"); + final PreparedStatement prepareStatement = connection.prepareStatement("INSERT INTO qs_queries (created_by, query, query_normalized, is_persisted, query_hash, result_hash, result_number, created, executed) VALUES (?,?,?,?,?,?,?,?,?)"); + prepareStatement.setString(1, username); + prepareStatement.setString(2, query.getQuery()); + prepareStatement.setString(3, query.getQuery()); + prepareStatement.setBoolean(4, query.getIsPersisted()); + prepareStatement.setString(5, query.getQueryHash()); + prepareStatement.setString(6, query.getResultHash()); + prepareStatement.setLong(7, query.getResultNumber()); + prepareStatement.setTimestamp(8, Timestamp.from(query.getCreated())); + prepareStatement.setTimestamp(9, Timestamp.from(query.getExecuted())); + log.trace("prepared statement: {}", prepareStatement); + prepareStatement.executeUpdate(); connection.close(); } diff --git a/fda-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationTest.java b/fda-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationTest.java index 82879e674f7a107d1513dfde582f93b13a75063f..eb694845ebf851da701cce168c4f36a7178b1ae2 100644 --- a/fda-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationTest.java +++ b/fda-query-service/rest-service/src/test/java/at/tuwien/service/StoreServiceIntegrationTest.java @@ -146,6 +146,7 @@ public class StoreServiceIntegrationTest extends BaseUnitTest { when(databaseRepository.findByContainerIdAndDatabaseId(CONTAINER_1_ID, DATABASE_1_ID)) .thenReturn(Optional.of(DATABASE_1)); MariaDbConfig.insertQueryStore(CONTAINER_1_INTERNALNAME, DATABASE_1_INTERNALNAME, QUERY_1, USER_1_USERNAME); + MariaDbConfig.insertQueryStore(CONTAINER_1_INTERNALNAME, DATABASE_1_INTERNALNAME, QUERY_2, USER_1_USERNAME); /* test */ final List<Query> queries = storeService.findAll(CONTAINER_1_ID, DATABASE_1_ID, true, USER_1_PRINCIPAL); @@ -376,7 +377,7 @@ public class StoreServiceIntegrationTest extends BaseUnitTest { } @Test - public void findOne_notFound_fails() { + public void findOne_notFound_fails() throws SQLException { final Principal principal = new BasicUserPrincipal(USER_1_USERNAME); /* mock */ @@ -385,7 +386,7 @@ public class StoreServiceIntegrationTest extends BaseUnitTest { /* test */ assertThrows(QueryNotFoundException.class, () -> { - storeService.findOne(CONTAINER_1_ID, DATABASE_1_ID, QUERY_2_ID, principal); + storeService.findOne(CONTAINER_1_ID, DATABASE_1_ID, 9999L, principal); }); } @@ -393,13 +394,15 @@ public class StoreServiceIntegrationTest extends BaseUnitTest { public void deleteStaleQueries_succeeds() throws QueryStoreException, ImageNotSupportedException, SQLException { /* mock */ + MariaDbConfig.insertQueryStore(CONTAINER_1_INTERNALNAME, DATABASE_1_INTERNALNAME, QUERY_1, USER_1_USERNAME); + MariaDbConfig.insertQueryStore(CONTAINER_1_INTERNALNAME, DATABASE_1_INTERNALNAME, QUERY_2, USER_1_USERNAME); when(databaseRepository.findAll()) .thenReturn(List.of(DATABASE_1)); /* test */ storeService.deleteStaleQueries(); final List<Map<String, Object>> response = MariaDbConfig.listQueryStore(CONTAINER_1_INTERNALNAME, DATABASE_1_INTERNALNAME); - assertEquals(2, response.size()); + assertEquals(1, response.size()); } } diff --git a/fda-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java b/fda-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java index 87c8fa13f7008a0f129a1f04d3acf718826a27d2..b5a6c8c819d1294e459da0977cfb3c5c6b1d87ba 100644 --- a/fda-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java +++ b/fda-query-service/rest-service/src/test/java/at/tuwien/service/TableServiceIntegrationTest.java @@ -81,9 +81,13 @@ public class TableServiceIntegrationTest extends BaseUnitTest { final static String BIND = new File("./src/test/resources/weather").toPath().toAbsolutePath() + ":/docker-entrypoint-initdb.d"; @BeforeAll - public static void beforeAll() { + public static void beforeAll() throws InterruptedException { afterAll(); + /* create networks */ DockerConfig.createAllNetworks(); + /* start containers */ + DockerConfig.createContainer(BIND, CONTAINER_1, CONTAINER_1_ENV); + DockerConfig.startContainer(CONTAINER_1); } @AfterAll @@ -93,23 +97,19 @@ public class TableServiceIntegrationTest extends BaseUnitTest { } @BeforeEach - public void beforeEach() throws InterruptedException { - afterEach(); - DockerConfig.createContainer(BIND, CONTAINER_1, CONTAINER_1_ENV); - DockerConfig.startContainer(CONTAINER_1); - h2Utils.runScript("schema.sql"); + public void beforeEach() { /* metadata db */ + h2Utils.runScript("schema.sql"); imageRepository.save(IMAGE_1); containerRepository.save(CONTAINER_1); + tableRepository.save(TABLE_1_NOCOLS); + tableRepository.save(TABLE_2_NOCOLS); + tableRepository.save(TABLE_3_NOCOLS); + tableRepository.save(TABLE_4_NOCOLS); DATABASE_1.setTables(List.of()); databaseRepository.save(DATABASE_1); } - @AfterEach - public void afterEach() { - DockerConfig.removeAllContainers(); - } - @Test public void findHistory_anonymous_succeeds() throws UserNotFoundException, TableNotFoundException, QueryStoreException, DatabaseConnectionException, QueryMalformedException, DatabaseNotFoundException { diff --git a/fda-query-service/rest-service/src/test/resources/weather/3_queries.sql b/fda-query-service/rest-service/src/test/resources/weather/3_queries.sql deleted file mode 100644 index f50144176f689398b21971e58778d4cd688383b7..0000000000000000000000000000000000000000 --- a/fda-query-service/rest-service/src/test/resources/weather/3_queries.sql +++ /dev/null @@ -1,11 +0,0 @@ -INSERT INTO `qs_queries` (`created`, `executed`, `created_by`, `query`, `query_normalized`, `is_persisted`, - `query_hash`, `result_hash`, `result_number`) -VALUES ('2022-12-24 18:00:00', '2022-12-24 18:00:00', 'sclause', 'SELECT `present` FROM `bag`', - 'SELECT `present` FROM `bag`', false, 'e8aff3ca4caeb228b314e88f00be767407bc45656a96da208a4cea00b75cc8d8', - '5a9977bb0b8653f18a6542f098b72e696a3584433db156ceb26047ee4f6f7e2b', 3), - ('2022-12-24 18:00:01', '2022-12-24 18:00:01', 'sclause', 'SELECT `type`, `present` FROM `bag`', - 'SELECT `type`, `present` FROM `bag`', true, 'e8aff3ca4caeb228b314e88f00be767407bc45656a96da208a4cea00b75cc8d7', - '5a9977bb0b8653f18a6542f098b72e696a3584433db156ceb26047ee4f6f7e2a', 3), - (NOW(), NOW(), 'sclause', 'SELECT `id`, `present` FROM `bag`', - 'SELECT `id`, `present` FROM `bag`', false, 'e8aff3ca4caeb228b314e88f00be767407bc45656a96da208a4cea00b75cc8d9', - '5a9977bb0b8653f18a6542f098b72e696a3584433db156ceb26047ee4f6f7e2c', 3); \ No newline at end of file