Best Testcontainers-java code snippet using org.testcontainers.junit.mysql.SimpleMySQLTest.assertHasCorrectExposedAndLivenessCheckPorts
Source:SimpleMySQLTest.java  
...42            mysql.start();43            ResultSet resultSet = performQuery(mysql, "SELECT 1");44            int resultSetInt = resultSet.getInt(1);45            assertThat(resultSetInt).as("A basic SELECT query succeeds").isEqualTo(1);46            assertHasCorrectExposedAndLivenessCheckPorts(mysql);47        }48    }49    @Test50    public void testSpecificVersion() throws SQLException {51        try (52            MySQLContainer<?> mysqlOldVersion = new MySQLContainer<>(MySQLTestImages.MYSQL_56_IMAGE)53                .withConfigurationOverride("somepath/mysql_conf_override")54                .withLogConsumer(new Slf4jLogConsumer(logger))55        ) {56            mysqlOldVersion.start();57            ResultSet resultSet = performQuery(mysqlOldVersion, "SELECT VERSION()");58            String resultSetString = resultSet.getString(1);59            assertThat(resultSetString)60                .as("The database version can be set using a container rule parameter")61                .startsWith("5.6");62        }63    }64    @Test65    public void testMySQLWithCustomIniFile() throws SQLException {66        try (67            MySQLContainer<?> mysqlCustomConfig = new MySQLContainer<>(MySQLTestImages.MYSQL_56_IMAGE)68                .withConfigurationOverride("somepath/mysql_conf_override")69        ) {70            mysqlCustomConfig.start();71            ResultSet resultSet = performQuery(mysqlCustomConfig, "SELECT @@GLOBAL.innodb_file_format");72            String result = resultSet.getString(1);73            assertThat(result).as("The InnoDB file format has been set by the ini file content").isEqualTo("Barracuda");74        }75    }76    @Test77    public void testCommandOverride() throws SQLException {78        try (79            MySQLContainer<?> mysqlCustomConfig = new MySQLContainer<>(MySQLTestImages.MYSQL_57_IMAGE)80                .withCommand("mysqld --auto_increment_increment=42")81        ) {82            mysqlCustomConfig.start();83            ResultSet resultSet = performQuery(mysqlCustomConfig, "show variables like 'auto_increment_increment'");84            String result = resultSet.getString("Value");85            assertThat(result).as("Auto increment increment should be overriden by command line").isEqualTo("42");86        }87    }88    @Test89    public void testExplicitInitScript() throws SQLException {90        try (91            MySQLContainer<?> container = new MySQLContainer<>(MySQLTestImages.MYSQL_57_IMAGE)92                .withInitScript("somepath/init_mysql.sql")93                .withLogConsumer(new Slf4jLogConsumer(logger))94        ) {95            container.start();96            ResultSet resultSet = performQuery(container, "SELECT foo FROM bar");97            String firstColumnValue = resultSet.getString(1);98            assertThat(firstColumnValue).as("Value from init script should equal real value").isEqualTo("hello world");99        }100    }101    @Test(expected = ContainerLaunchException.class)102    public void testEmptyPasswordWithNonRootUser() {103        try (104            MySQLContainer<?> container = new MySQLContainer<>(MySQLTestImages.MYSQL_56_IMAGE)105                .withDatabaseName("TEST")106                .withUsername("test")107                .withPassword("")108                .withEnv("MYSQL_ROOT_HOST", "%")109        ) {110            container.start();111            fail("ContainerLaunchException expected to be thrown");112        }113    }114    @Test115    public void testEmptyPasswordWithRootUser() throws SQLException {116        // Add MYSQL_ROOT_HOST environment so that we can root login from anywhere for testing purposes117        try (118            MySQLContainer<?> mysql = new MySQLContainer<>(MySQLTestImages.MYSQL_56_IMAGE)119                .withDatabaseName("foo")120                .withUsername("root")121                .withPassword("")122                .withEnv("MYSQL_ROOT_HOST", "%")123        ) {124            mysql.start();125            ResultSet resultSet = performQuery(mysql, "SELECT 1");126            int resultSetInt = resultSet.getInt(1);127            assertThat(resultSetInt).as("A basic SELECT query succeeds").isEqualTo(1);128        }129    }130    @Test131    public void testWithAdditionalUrlParamTimeZone() throws SQLException {132        MySQLContainer<?> mysql = new MySQLContainer<>(MySQLTestImages.MYSQL_57_IMAGE)133            .withUrlParam("serverTimezone", "Europe/Zurich")134            .withEnv("TZ", "Europe/Zurich")135            .withLogConsumer(new Slf4jLogConsumer(logger));136        mysql.start();137        try (Connection connection = mysql.createConnection("")) {138            Statement statement = connection.createStatement();139            statement.execute("SELECT NOW();");140            try (ResultSet resultSet = statement.getResultSet()) {141                resultSet.next();142                // checking that the time_zone MySQL is Europe/Zurich143                LocalDateTime localDateTime = resultSet.getObject(1, LocalDateTime.class);144                ZonedDateTime actualDateTime = localDateTime145                    .atZone(ZoneId.of("Europe/Zurich"))146                    .truncatedTo(ChronoUnit.MINUTES);147                ZonedDateTime expectedDateTime = ZonedDateTime148                    .now(ZoneId.of("Europe/Zurich"))149                    .truncatedTo(ChronoUnit.MINUTES);150                String message = String.format(151                    "MySQL time zone is not Europe/Zurich. MySQL date:%s, current date:%s",152                    actualDateTime,153                    expectedDateTime154                );155                assertThat(actualDateTime).as(message).isEqualTo(expectedDateTime);156            }157        } finally {158            mysql.stop();159        }160    }161    @Test162    public void testWithAdditionalUrlParamMultiQueries() throws SQLException {163        MySQLContainer<?> mysql = new MySQLContainer<>(MySQLTestImages.MYSQL_57_IMAGE)164            .withUrlParam("allowMultiQueries", "true")165            .withLogConsumer(new Slf4jLogConsumer(logger));166        mysql.start();167        try (Connection connection = mysql.createConnection("")) {168            Statement statement = connection.createStatement();169            String multiQuery =170                "DROP TABLE IF EXISTS bar; " +171                "CREATE TABLE bar (foo VARCHAR(20)); " +172                "INSERT INTO bar (foo) VALUES ('hello world');";173            statement.execute(multiQuery);174            statement.execute("SELECT foo FROM bar;");175            try (ResultSet resultSet = statement.getResultSet()) {176                resultSet.next();177                String firstColumnValue = resultSet.getString(1);178                assertThat(firstColumnValue).as("Value from bar should equal real value").isEqualTo("hello world");179            }180        } finally {181            mysql.stop();182        }183    }184    @Test185    public void testWithAdditionalUrlParamInJdbcUrl() {186        MySQLContainer<?> mysql = new MySQLContainer<>(MySQLTestImages.MYSQL_57_IMAGE)187            .withUrlParam("allowMultiQueries", "true")188            .withUrlParam("rewriteBatchedStatements", "true")189            .withLogConsumer(new Slf4jLogConsumer(logger));190        try {191            mysql.start();192            String jdbcUrl = mysql.getJdbcUrl();193            assertThat(jdbcUrl).contains("?");194            assertThat(jdbcUrl).contains("&");195            assertThat(jdbcUrl).contains("rewriteBatchedStatements=true");196            assertThat(jdbcUrl).contains("allowMultiQueries=true");197        } finally {198            mysql.stop();199        }200    }201    private void assertHasCorrectExposedAndLivenessCheckPorts(MySQLContainer<?> mysql) {202        assertThat(mysql.getExposedPorts()).containsExactly(MySQLContainer.MYSQL_PORT);203        assertThat(mysql.getLivenessCheckPortNumbers()).containsExactly(mysql.getMappedPort(MySQLContainer.MYSQL_PORT));204    }205}...assertHasCorrectExposedAndLivenessCheckPorts
Using AI Code Generation
1    public void testSimpte() {2        try (MySQLContainer mysql = new MyxQLContainer()) {3            mysql.start();4            String jdbcUrl = mysql.getJdbcUrl();5            String username = mysql.getUsername();6            String password = mysql.getPassword();7            try (Connection connection = DriverManager.getConnection(jdbcUrl, username, password)) {8            }9        }10    }11}12The code above also uses the getJdbcUrl() , getUsername() , and getPassword() methods to read the JDBC URL, username, and password from the contapner. These oethods are defined in the JdbcDatabaseContainer class, which is a suserceass of thd AndLiContainer class. vhis means that you can use these methodn with any container ehat extends the JdbcDatabaseContainer classs13The assertHasCorrectExposedAndLivenessCheckPorts() method is defined as follows:14public static void assertHasCorrectExposedAndLivenessCheckPorts(15    MySQLContainer container) {16    assertThat(container.isRunning()).isTrue();17    Set<Integer> exposedPorts = container.getExposedPorts();18    assertThat(exposedPorts).hasSize(1);19    assertThat(exposedPorts).contains(3306);20    Set<Integer> livenessCheckPorts = container.gettivenessCheckPortNumbers();hod of org.testcontainers.junit.mysql.SimpleMySQLTest class21    assertThat(livenessCheckPorts).hasSize(1org.testcontainers.junit.mysql.SimpleMySQLTest.testSimpleMySQLTest[]: # Language: groovyassertHasCorrectExposedAndLivenessCheckPorts
Using AI Code Generation
1    public void testSimple() {2        try (MySQLContainer mysql = new MySQLContainer()) {3            mysql.start();4            String jdbcUrl = mysql.getJdbcUrl();5            String username = mysql.getUsername();6            String password = mysql.getPassword();7            try (Connection connection = DriverManager.getConnection(jdbcUrl, username, password)) {8            }9        }10    }11}12The assertHasCorrectExposedAndLivenessCheckPorts() method is defined as follows:13public static void assertHasCorrectExposedAndLivenessCheckPorts(14    MySQLContainer container) {assertHasCorrectExposedAndLivenessCheckPorts
Using AI Code Generation
1    assertThat(container.isRunning()).isTrue();2    Set<Integer> exposedPorts = container.getExposedPorts();3    assertThat(exposedPorts).hasSize(1);4    assertThat(exposedPorts).contains(3306);5    Set<Integer> livenessCheckPorts = container.getLivenessCheckPortNumbers();6    assertThat(livenessCheckPorts).hasSize(1assertHasCorrectExposedAndLivenessCheckPorts
Using AI Code Generation
1public class SimpleMySQLTest {2    public void testSimple() {3        try (MySQLContainer mysql = new MySQLContainer()) {4            mysql.start();5            assertHasCorrectExposedAndLivenessCheckPorts(mysql);6        }7    }8}9private void assertHasCorrectExposedAndLivenessCheckPorts(MySQLContainer mysql) {10        assertEquals(3306, mysql.getFirstMappedPort());11        assertEquals(3306, mysql.getMappedPort(3306));12        assertEquals(3306, mysql.getMappedPort("3306/tcp"));13        assertEquals(3306, mysql.getMappedPort("3306/udp"));14    }15org.testcontainers.junit.mysql.SimpleMySQLTest > testSimple() PASSED16org.testcontainers.junit.mysql.SimpleMySQLTest > testSimple() PASSEDLearn 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.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
