Skip to content
Snippets Groups Projects
Commit 46485f50 authored by Martin Weise's avatar Martin Weise
Browse files

fixed the problem of waiting for db to start up

Former-commit-id: 1093f506
parent 8abb11c7
Branches
Tags
1 merge request!42Fixed the query service tests
...@@ -61,12 +61,6 @@ services: ...@@ -61,12 +61,6 @@ services:
SPRING_PROFILES_ACTIVE: docker SPRING_PROFILES_ACTIVE: docker
ports: ports:
- 9095:9095 - 9095:9095
links:
- fda-discovery-service
- fda-database-service
- fda-container-service
- fda-query-service
- fda-table-service
depends_on: depends_on:
- fda-discovery-service - fda-discovery-service
logging: logging:
......
...@@ -30,6 +30,7 @@ public abstract class BaseUnitTest { ...@@ -30,6 +30,7 @@ public abstract class BaseUnitTest {
public final static String IMAGE_1_DRIVER = "org.postgresql.Driver"; public final static String IMAGE_1_DRIVER = "org.postgresql.Driver";
public final static String IMAGE_1_JDBC = "postgresql"; public final static String IMAGE_1_JDBC = "postgresql";
public final static Long IMAGE_1_SIZE = 12000L; public final static Long IMAGE_1_SIZE = 12000L;
public final static String IMAGE_1_LOGO = "AAAA";
public final static Instant IMAGE_1_BUILT = Instant.now().minus(40, HOURS); public final static Instant IMAGE_1_BUILT = Instant.now().minus(40, HOURS);
public final static List<ContainerImageEnvironmentItem> IMAGE_1_ENV = List.of(ContainerImageEnvironmentItem.builder() public final static List<ContainerImageEnvironmentItem> IMAGE_1_ENV = List.of(ContainerImageEnvironmentItem.builder()
.key("POSTGRES_USER") .key("POSTGRES_USER")
...@@ -64,6 +65,7 @@ public abstract class BaseUnitTest { ...@@ -64,6 +65,7 @@ public abstract class BaseUnitTest {
public final static String IMAGE_2_DRIVER = "redis.clients.Jedis"; public final static String IMAGE_2_DRIVER = "redis.clients.Jedis";
public final static String IMAGE_2_JDBC = "redis"; public final static String IMAGE_2_JDBC = "redis";
public final static Long IMAGE_2_SIZE = 24000L; public final static Long IMAGE_2_SIZE = 24000L;
public final static String IMAGE_2_LOGO = "BBBB";
public final static Instant IMAGE_2_BUILT = Instant.now().minus(9, DAYS); public final static Instant IMAGE_2_BUILT = Instant.now().minus(9, DAYS);
public final static List<ContainerImageEnvironmentItem> IMAGE_2_ENV = List.of(ContainerImageEnvironmentItem.builder() public final static List<ContainerImageEnvironmentItem> IMAGE_2_ENV = List.of(ContainerImageEnvironmentItem.builder()
.key("POSTGRES_USER") .key("POSTGRES_USER")
...@@ -99,6 +101,7 @@ public abstract class BaseUnitTest { ...@@ -99,6 +101,7 @@ public abstract class BaseUnitTest {
.size(IMAGE_1_SIZE) .size(IMAGE_1_SIZE)
.environment(IMAGE_1_ENV) .environment(IMAGE_1_ENV)
.defaultPort(IMAGE_1_PORT) .defaultPort(IMAGE_1_PORT)
.logo(IMAGE_1_LOGO)
.build(); .build();
public final static ImageDto IMAGE_1_DTO = ImageDto.builder() public final static ImageDto IMAGE_1_DTO = ImageDto.builder()
...@@ -112,6 +115,7 @@ public abstract class BaseUnitTest { ...@@ -112,6 +115,7 @@ public abstract class BaseUnitTest {
.size(BigInteger.valueOf(IMAGE_1_SIZE)) .size(BigInteger.valueOf(IMAGE_1_SIZE))
.environment(IMAGE_1_ENV_DTO) .environment(IMAGE_1_ENV_DTO)
.defaultPort(IMAGE_1_PORT) .defaultPort(IMAGE_1_PORT)
.logo(IMAGE_2_LOGO)
.build(); .build();
public final static ContainerImage IMAGE_2 = ContainerImage.builder() public final static ContainerImage IMAGE_2 = ContainerImage.builder()
...@@ -126,6 +130,7 @@ public abstract class BaseUnitTest { ...@@ -126,6 +130,7 @@ public abstract class BaseUnitTest {
.size(IMAGE_2_SIZE) .size(IMAGE_2_SIZE)
.environment(IMAGE_2_ENV) .environment(IMAGE_2_ENV)
.defaultPort(IMAGE_2_PORT) .defaultPort(IMAGE_2_PORT)
.logo(IMAGE_2_LOGO)
.build(); .build();
public final static ImageDto IMAGE_2_DTO = ImageDto.builder() public final static ImageDto IMAGE_2_DTO = ImageDto.builder()
...@@ -139,6 +144,7 @@ public abstract class BaseUnitTest { ...@@ -139,6 +144,7 @@ public abstract class BaseUnitTest {
.compiled(IMAGE_2_BUILT) .compiled(IMAGE_2_BUILT)
.environment(IMAGE_2_ENV_DTO) .environment(IMAGE_2_ENV_DTO)
.defaultPort(IMAGE_2_PORT) .defaultPort(IMAGE_2_PORT)
.logo(IMAGE_2_LOGO)
.build(); .build();
public final static Long CONTAINER_1_ID = 1L; public final static Long CONTAINER_1_ID = 1L;
......
...@@ -22,7 +22,7 @@ import static org.junit.jupiter.api.Assertions.*; ...@@ -22,7 +22,7 @@ import static org.junit.jupiter.api.Assertions.*;
/** /**
* Persistence Layer Tests * Persistence Layer Tests
*/ */
@DirtiesContext(methodMode = DirtiesContext.MethodMode.AFTER_METHOD) @DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
@ExtendWith(SpringExtension.class) @ExtendWith(SpringExtension.class)
@SpringBootTest @SpringBootTest
public class ImageServiceIntegrationTest extends BaseUnitTest { public class ImageServiceIntegrationTest extends BaseUnitTest {
......
...@@ -27,9 +27,8 @@ import org.springframework.util.SocketUtils; ...@@ -27,9 +27,8 @@ import org.springframework.util.SocketUtils;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.net.InetAddress; import java.io.IOException;
import java.net.InetSocketAddress; import java.net.*;
import java.net.ServerSocket;
import java.time.Instant; import java.time.Instant;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
...@@ -207,11 +206,6 @@ public class ContainerService { ...@@ -207,11 +206,6 @@ public class ContainerService {
log.warn("container already started {}", e.getMessage()); log.warn("container already started {}", e.getMessage());
throw new DockerClientException("container already started", e); throw new DockerClientException("container already started", e);
} }
try {
Thread.sleep(20 * 1000);
} catch (InterruptedException e) {
throw new DockerClientException("Interrupted", e);
}
log.info("Started container {}", containerId); log.info("Started container {}", containerId);
log.debug("Started container {}", container); log.debug("Started container {}", container);
return container.get(); return container.get();
......
...@@ -22,6 +22,7 @@ public abstract class BaseUnitTest { ...@@ -22,6 +22,7 @@ public abstract class BaseUnitTest {
public final static String IMAGE_1_DIALECT = "POSTGRES"; public final static String IMAGE_1_DIALECT = "POSTGRES";
public final static String IMAGE_1_DRIVER = "org.postgresql.Driver"; public final static String IMAGE_1_DRIVER = "org.postgresql.Driver";
public final static String IMAGE_1_JDBC = "postgresql"; public final static String IMAGE_1_JDBC = "postgresql";
public final static String IMAGE_1_LOGO = "AAAA";
public final static Integer IMAGE_1_PORT = 5432; public final static Integer IMAGE_1_PORT = 5432;
public final static Long IMAGE_1_SIZE = 12000L; public final static Long IMAGE_1_SIZE = 12000L;
public final static Instant IMAGE_1_CREATED = Instant.now(); public final static Instant IMAGE_1_CREATED = Instant.now();
...@@ -44,22 +45,28 @@ public abstract class BaseUnitTest { ...@@ -44,22 +45,28 @@ public abstract class BaseUnitTest {
public final static String IMAGE_2_DIALECT = "MARIADB"; public final static String IMAGE_2_DIALECT = "MARIADB";
public final static String IMAGE_2_DRIVER = "org.mariadb.jdbc.Driver"; public final static String IMAGE_2_DRIVER = "org.mariadb.jdbc.Driver";
public final static String IMAGE_2_JDBC = "mariadb"; public final static String IMAGE_2_JDBC = "mariadb";
public final static String IMAGE_2_LOGO = "BBBB";
public final static Integer IMAGE_2_PORT = 5432; public final static Integer IMAGE_2_PORT = 5432;
public final static Long IMAGE_2_SIZE = 14000L; public final static Long IMAGE_2_SIZE = 14000L;
public final static Instant IMAGE_2_CREATED = Instant.now(); public final static Instant IMAGE_2_CREATED = Instant.now();
public final static Instant IMAGE_2_UPDATED = Instant.now(); public final static Instant IMAGE_2_UPDATED = Instant.now();
public final static List<ContainerImageEnvironmentItem> IMAGE_2_ENVIRONMENT = List.of(ContainerImageEnvironmentItem.builder() public final static List<ContainerImageEnvironmentItem> IMAGE_2_ENVIRONMENT = List.of(ContainerImageEnvironmentItem.builder()
.type(ContainerImageEnvironmentItemType.USERNAME) .type(ContainerImageEnvironmentItemType.PASSWORD)
.key("MARIADB_ROOT_PASSWORD") .key("MARIADB_ROOT_PASSWORD")
.value("mariadb") .value("mariadb")
.build(), .build(),
ContainerImageEnvironmentItem.builder() ContainerImageEnvironmentItem.builder()
.type(ContainerImageEnvironmentItemType.USERNAME) .type(ContainerImageEnvironmentItemType.USERNAME)
.key("UZERNAME")
.value("root")
.build(),
ContainerImageEnvironmentItem.builder()
.type(ContainerImageEnvironmentItemType.OTHER)
.key("MARIADB_USER") .key("MARIADB_USER")
.value("mariadb") .value("mariadb")
.build(), .build(),
ContainerImageEnvironmentItem.builder() ContainerImageEnvironmentItem.builder()
.type(ContainerImageEnvironmentItemType.PASSWORD) .type(ContainerImageEnvironmentItemType.OTHER)
.key("MARIADB_PASSWORD") .key("MARIADB_PASSWORD")
.value("mariadb") .value("mariadb")
.build()); .build());
...@@ -107,6 +114,7 @@ public abstract class BaseUnitTest { ...@@ -107,6 +114,7 @@ public abstract class BaseUnitTest {
.created(IMAGE_1_CREATED) .created(IMAGE_1_CREATED)
.defaultPort(IMAGE_1_PORT) .defaultPort(IMAGE_1_PORT)
.compiled(IMAGE_1_UPDATED) .compiled(IMAGE_1_UPDATED)
.logo(IMAGE_1_LOGO)
.build(); .build();
public final static ContainerImage IMAGE_2 = ContainerImage.builder() public final static ContainerImage IMAGE_2 = ContainerImage.builder()
...@@ -122,6 +130,7 @@ public abstract class BaseUnitTest { ...@@ -122,6 +130,7 @@ public abstract class BaseUnitTest {
.created(IMAGE_2_CREATED) .created(IMAGE_2_CREATED)
.defaultPort(IMAGE_2_PORT) .defaultPort(IMAGE_2_PORT)
.compiled(IMAGE_2_UPDATED) .compiled(IMAGE_2_UPDATED)
.logo(IMAGE_2_LOGO)
.build(); .build();
public final static Container CONTAINER_1 = Container.builder() public final static Container CONTAINER_1 = Container.builder()
......
...@@ -174,6 +174,7 @@ public interface TableMapper { ...@@ -174,6 +174,7 @@ public interface TableMapper {
.toArray(Field[]::new))); .toArray(Field[]::new)));
/* constraints */ /* constraints */
final long count = Arrays.stream(data.getColumns()) final long count = Arrays.stream(data.getColumns())
.filter(Objects::nonNull)
.filter(ColumnCreateDto::getUnique) .filter(ColumnCreateDto::getUnique)
.count(); .count();
if (count > 0) { if (count > 0) {
......
...@@ -87,6 +87,11 @@ export default { ...@@ -87,6 +87,11 @@ export default {
} }
this.loading = false this.loading = false
}, },
sleep (ms) {
return new Promise((resolve) => {
setTimeout(resolve, ms)
})
},
async createDB () { async createDB () {
this.loading = true this.loading = true
let res let res
...@@ -125,21 +130,25 @@ export default { ...@@ -125,21 +130,25 @@ export default {
await new Promise(resolve => setTimeout(resolve, 2000)) await new Promise(resolve => setTimeout(resolve, 2000))
// create the DB // create the DB
for (let i = 0; i < 30; i++) {
try { try {
res = await this.$axios.post('/api/database/', { res = await this.$axios.post('/api/database/', {
name: this.database, name: this.database,
containerId, containerId,
description: this.description, description: this.description,
isPublic: this.isPublic isPublic: this.isPublic
}) }, { progress: false })
console.log(res) i = 31
} catch (err) { } catch (err) {
console.debug('wait', res)
await this.sleep(1000)
}
}
this.loading = false this.loading = false
if (res.status !== 201) {
this.$toast.error('Could not create database.') this.$toast.error('Could not create database.')
return return
} }
this.loading = false
this.$toast.success(`Database "${res.data.name}" created.`) this.$toast.success(`Database "${res.data.name}" created.`)
this.$emit('refresh') this.$emit('refresh')
} }
......
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
multiple></v-select> multiple></v-select>
</v-col> </v-col>
<v-col cols="auto" class="pl-2"> <v-col cols="auto" class="pl-2">
<v-checkbox v-model="c.primaryKey" label="Primary Key" /> <v-checkbox v-model="c.primaryKey" @click="setOthers(c)" label="Primary Key" />
</v-col> </v-col>
<v-col cols="auto" class="pl-10"> <v-col cols="auto" class="pl-10">
<v-checkbox v-model="c.nullAllowed" :disabled="c.primaryKey" label="Null Allowed" /> <v-checkbox v-model="c.nullAllowed" :disabled="c.primaryKey" label="Null Allowed" />
...@@ -192,13 +192,18 @@ export default { ...@@ -192,13 +192,18 @@ export default {
} }
this.loading = false this.loading = false
}, },
setOthers (column) {
column.nullAllowed = false
column.unique = true
},
async createTable () { async createTable () {
/* make enum values to array */ /* make enum values to array */
this.tableCreate.columns.forEach((column) => { this.tableCreate.columns.forEach((column) => {
if (column.enumValues == null) {
return
}
if (column.enumValues.length > 0) { if (column.enumValues.length > 0) {
column.enumValues = column.enumValues.split(',') column.enumValues = column.enumValues.split(',')
} else {
column.enumValues = null
} }
}) })
const createUrl = `/api/tables/api/database/${this.$route.params.db_id}/table` const createUrl = `/api/tables/api/database/${this.$route.params.db_id}/table`
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment