-
-
Notifications
You must be signed in to change notification settings - Fork 29
Expand file tree
/
Copy pathLeagueDbTestContainers.java
More file actions
67 lines (59 loc) · 2.69 KB
/
LeagueDbTestContainers.java
File metadata and controls
67 lines (59 loc) · 2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package com.faforever.api.config;
import com.faforever.api.AbstractIntegrationTest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.autoconfigure.DataSourceProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.MariaDBContainer;
import org.testcontainers.containers.Network;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import javax.sql.DataSource;
@ConditionalOnProperty(value = "spring.league-datasource.url", havingValue = "jdbc:mariadb://testcontainers/faf-league?useSSL=false")
@Configuration
public class LeagueDbTestContainers {
private static final MariaDBContainer<?> leagueServiceDBContainer = new MariaDBContainer<>("mariadb:10.6");
private static final GenericContainer<?> leagueServiceContainer = new GenericContainer<>("faforever/faf-league-service:1.5.0");
private static final Network sharedNetwork = Network.newNetwork();
@Bean
@ConfigurationProperties("spring.league-datasource")
@Qualifier("leagueDataSourceProperties")
public DataSourceProperties leagueDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
public DataSource leagueDataSource(
@Qualifier("leagueDataSourceProperties") DataSourceProperties leagueDataSourceProperties
) {
leagueDataSourceProperties.setUrl(leagueServiceDBContainer.getJdbcUrl());
leagueDataSourceProperties.setUsername(leagueServiceDBContainer.getUsername());
leagueDataSourceProperties.setPassword(leagueServiceDBContainer.getPassword());
return leagueDataSourceProperties.initializeDataSourceBuilder().build();
}
static {
leagueServiceDBContainer
.withNetwork(sharedNetwork)
.withNetworkAliases("faf-league-db")
.withUsername("faf-league-service")
.withPassword("banana")
.withDatabaseName("faf-league")
.withReuse(true)
.start();
final Logger logger = LoggerFactory.getLogger(AbstractIntegrationTest.class);
Slf4jLogConsumer logConsumer = new Slf4jLogConsumer(logger);
leagueServiceContainer
.withNetwork(sharedNetwork)
.withEnv("DB_SERVER", "faf-league-db")
.withEnv("DB_LOGIN", "faf-league-service")
.withEnv("DB_PASSWORD", "banana")
.withEnv("DB_NAME", "faf-league")
.withEnv("AUTO_APPLY_MIGRATIONS", "1")
.withCommand()
.withLogConsumer(logConsumer)
.start();
}
}