如何在GitLab CI中启动配置超时的PostgreSQL服务
如何在GitLab CI中配置PostgreSQL的lock_timeout参数
背景
我正在测试并发行为,需要验证长耗时计算场景下的代码,因此需配置PostgreSQL的超时参数。本地已经通过docker-compose完成了相关配置,对应的测试用例也已通过,但不清楚如何在GitLab CI配置文件中实现相同设置。
本地docker-compose配置
services: postgres: image: postgres:14.8 command: [ "postgres", "-c", "log_statement=all", "-c", "log_destination=stderr", "-c", "lock_timeout=3s" ] ports: - "5432:5432"
验证测试用例(已通过)
@SpringBootTest(classes = PostgreSQLConfigurationTest.GenericConfiguration.class) public class PostgreSQLConfigurationTest { @Autowired private JdbcTemplate jdbcTemplate; @Test void shouldLockTimeoutSetTo3s() { String sql = "SHOW lock_timeout"; String lockTimeout = jdbcTemplate.queryForObject(sql, String.class); assertEquals("3s", lockTimeout, "lock_timeout attendu valant " + lockTimeout); } @SpringBootApplication public static class GenericConfiguration { } }
当前GitLab CI配置
check: services: - name: postgres:14.3 alias: postgresql
解决方案
在GitLab CI的PostgreSQL服务配置中,通过command字段添加和本地docker-compose相同的启动参数即可,修改后的配置如下:
check: services: - name: postgres:14.3 alias: postgresql command: [ "postgres", "-c", "log_statement=all", "-c", "log_destination=stderr", "-c", "lock_timeout=3s" ]
配置完成后,GitLab CI环境中的PostgreSQL服务会和本地保持一致的参数设置,你的测试用例也能正常验证lock_timeout是否生效。
内容的提问来源于stack exchange,提问作者Benjamin Jalon
相关产品推荐
相关产品推荐

