How to use getStartupTimeoutSeconds method of org.testcontainers.containers.JdbcDatabaseContainer class

Best Testcontainers-java code snippet using org.testcontainers.containers.JdbcDatabaseContainer.getStartupTimeoutSeconds

Source:JdbcDatabaseContainer.java Github

copy

Full Screen

...94 protected void waitUntilContainerStarted() {95 // Repeatedly try and open a connection to the DB and execute a test query96 logger().info("Waiting for database connection to become available at {} using query '{}'",97 getJdbcUrl(), getTestQueryString());98 Unreliables.retryUntilSuccess(getStartupTimeoutSeconds(), TimeUnit.SECONDS, () -> {99 if (!isRunning()) {100 throw new ContainerLaunchException("Container failed to start");101 }102 try (Connection connection = createConnection("")) {103 try (Statement statement = connection.createStatement()) {104 boolean success = statement.execute(JdbcDatabaseContainer.this.getTestQueryString());105 if (success) {106 logger().info("Obtained a connection to container ({})",107 JdbcDatabaseContainer.this.getJdbcUrl());108 return null;109 } else {110 throw new SQLException("Failed to execute test query:" + getTestQueryString());111 }112 }113 }114 });115 }116 /**117 * Obtain an instance of the correct JDBC driver for this particular database container type.118 *119 * @return a JDBC Driver120 */121 public Driver getJdbcDriverInstance() {122 synchronized (DRIVER_LOAD_MUTEX) {123 if (driver == null) {124 try {125 driver = (Driver) Class.forName(this.getDriverClassName()).newInstance();126 } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {127 throw new RuntimeException("Could not get Driver", e);128 }129 }130 }131 return driver;132 }133 /**134 * Creates a connection to the underlying containerized database instance.135 *136 * @param queryString query string parameters that should be appended to the JDBC connection URL.137 * The '?' character must be included138 * @return a Connection139 * @throws SQLException if there is a repeated failure to create the connection140 */141 public Connection createConnection(String queryString) throws SQLException {142 final Properties info = new Properties();143 info.put("user", this.getUsername());144 info.put("password", this.getPassword());145 final String url = constructUrlForConnection(queryString);146 final Driver jdbcDriverInstance = getJdbcDriverInstance();147 try {148 return Unreliables.retryUntilSuccess(getConnectTimeoutSeconds(), TimeUnit.SECONDS, () ->149 DB_CONNECT_RATE_LIMIT.getWhenReady(() ->150 jdbcDriverInstance.connect(url, info)));151 } catch (Exception e) {152 throw new SQLException("Could not create new connection", e);153 }154 }155 public DataSource getDataSource() {156 if (dataSource == null) {157 dataSource = createDataSource();158 }159 return dataSource;160 }161 private DataSource createDataSource() {162 HikariConfig hikariConfig = new HikariConfig();163 hikariConfig.setJdbcUrl(getJdbcUrl());164 hikariConfig.setUsername(getUsername());165 hikariConfig.setPassword(getPassword());166 return new HikariDataSource(hikariConfig);167 }168 /**169 * Template method for constructing the JDBC URL to be used for creating {@link Connection}s.170 * This should be overridden if the JDBC URL and query string concatenation or URL string171 * construction needs to be different to normal.172 *173 * @param queryString query string parameters that should be appended to the JDBC connection URL.174 * The '?' character must be included175 * @return a full JDBC URL including queryString176 */177 protected String constructUrlForConnection(String queryString) {178 return getJdbcUrl() + queryString;179 }180 /**181 * @return startup time to allow, including image pull time, in seconds182 */183 protected int getStartupTimeoutSeconds() {184 return startupTimeoutSeconds;185 }186 /**187 * @return time to allow for the database to start and establish an initial connection, in seconds188 */189 private int getConnectTimeoutSeconds() {190 return connectTimeoutSeconds;191 }192}...

Full Screen

Full Screen

getStartupTimeoutSeconds

Using AI Code Generation

copy

Full Screen

1JdbcDatabaseContainer.getStartupTimeoutSeconds()2public int getStartupTimeoutSeconds()3Recommended Posts: Java | getStartupTimeout() method in JdbcDatabaseContainer class4Java | getJdbcUrl() method in JdbcDatabaseContainer class5Java | getDriverClassName() method in JdbcDatabaseContainer class6Java | getDatabaseName() method in JdbcDatabaseContainer class7Java | getTestQueryString() method in JdbcDatabaseContainer class8Java | getTestQueryString() method in JdbcDatabaseContainer class9Java | getDriverClassName() method in JdbcDatabaseContainer class10Java | getDatabaseName() method in JdbcDatabaseContainer class11Java | getJdbcUrl() method in JdbcDatabaseContainer class12Java | getStartupTimeout() method in JdbcDatabaseContainer class13Java | getDriverClassName() method in JdbcDatabaseContainer class14Java | getDatabaseName() method in JdbcDatabaseContainer class15Java | getJdbcUrl() method in JdbcDatabaseContainer class16Java | getStartupTimeout() method in JdbcDatabaseContainer class17Java | getDriverClassName() method in JdbcDatabaseContainer class18Java | getDatabaseName() method in JdbcDatabaseContainer class19Java | getJdbcUrl() method in JdbcDatabaseContainer class20Java | getStartupTimeout() method in JdbcDatabaseContainer class21Java | getDriverClassName() method in JdbcDatabaseContainer class22Java | getDatabaseName() method in JdbcDatabaseContainer class23Java | getJdbcUrl() method in JdbcDatabaseContainer class

Full Screen

Full Screen

getStartupTimeoutSeconds

Using AI Code Generation

copy

Full Screen

1import org.testcontainers.containers.JdbcDatabaseContainer;2import org.testcontainers.containers.MySQLContainer;3MySQLContainer mySQLContainer = new MySQLContainer();4mySQLContainer.setStartupTimeoutSeconds(300);5mySQLContainer.start();6mySQLContainer.stop();7import org.testcontainers.containers.GenericContainer;8GenericContainer genericContainer = new GenericContainer("alpine:latest");9genericContainer.setStartupTimeout(Duration.ofSeconds(300));10genericContainer.start();11genericContainer.stop();12import org.testcontainers.containers.MySQLContainer;13System.setProperty("TESTCONTAINERS_STARTUP_TIMEOUT", "300000");14MySQLContainer mySQLContainer = new MySQLContainer();15mySQLContainer.start();16mySQLContainer.stop();17import org.testcontainers.containers.MySQLContainer;18System.setProperty("testcontainers.startup.timeout", "300000");19MySQLContainer mySQLContainer = new MySQLContainer();

Full Screen

Full Screen

getStartupTimeoutSeconds

Using AI Code Generation

copy

Full Screen

1public class JdbcDatabaseContainerStartupTimeoutTest { public static void main(String[] args) { PostgreSQLContainer postgres = new PostgreSQLContainer(); postgres.setStartupTimeoutSeconds(5); postgres.start(); } }2 at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:333)3 at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:317)4 at org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81)5 at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:315)6 at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:303)7 at org.testcontainers.containers.PostgreSQLContainer.start(PostgreSQLContainer.java:142)8 at com.testcontainers.JdbcDatabaseContainerStartupTimeoutTest.main(JdbcDatabaseContainerStartupTimeoutTest.java:12)9Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for container port to open (localhost ports: [5432] should be listening)10 at org.testcontainers.containers.wait.strategy.HostPortWaitStrategy.waitUntilReady(HostPortWaitStrategy.java:54)11 at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:35)12 at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:846)13 at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:328)

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful