第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何通過測試容器啟動(dòng) Informix?

如何通過測試容器啟動(dòng) Informix?

互換的青春 2023-03-09 14:17:17
我對在我的項(xiàng)目中使用測試容器非常感興趣。但是,我很難將其設(shè)置為與 Informix 一起使用。請注意,我可以使用 Docker-for-Mac 啟動(dòng)一個(gè) informix 容器,它將構(gòu)建并啟動(dòng)。雖然不確定它是否可以與測試容器一起使用。我希望它會(huì)。這是我到目前為止所擁有的測試類package com.example.demo;import com.github.dockerjava.api.command.CreateContainerCmd;import org.junit.AfterClass;import org.junit.BeforeClass;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringRunner;import org.testcontainers.containers.GenericContainer;import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;import org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy;import org.testcontainers.containers.wait.strategy.WaitAllStrategy;import java.time.Duration;import static org.junit.Assert.assertEquals;@RunWith(SpringRunner.class)@SpringBootTestpublic class DemoApplicationTests {  private static GenericContainer informix;  @BeforeClass  public static void init() {    informix = new GenericContainer("ibmcom/informix-innovator-c")        .withExposedPorts(9088)        .withEnv("LICENSE", "accept")        .withPrivilegedMode(true)        .withCreateContainerCmdModifier(command -> ((CreateContainerCmd)command).withTty(Boolean.TRUE))        .waitingFor(new WaitAllStrategy().withStrategy(new LogMessageWaitStrategy().withRegEx(".*listener on port.*\n"))            .withStrategy(new HostPortWaitStrategy())            .withStartupTimeout(Duration.ofMinutes(2)));    informix.start();  }  @AfterClass  public static void destroy(){    informix.close();  }  @Test  public void testDemo() {    int foo = 1;    assertEquals(foo, 1);  }}容器啟動(dòng)然后永遠(yuǎn)掛起,永遠(yuǎn)不會(huì)進(jìn)入測試
查看完整描述

1 回答

?
哆啦的時(shí)光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊

Informix 的 docker 鏡像配置錯(cuò)誤。在 docker 容器中啟動(dòng)的服務(wù)器只會(huì)監(jiān)聽主機(jī)名,而不是本地主機(jī)。Testcontainers 使用“l(fā)ocalhost”作為網(wǎng)絡(luò)接口來連接到您的容器。因此,當(dāng)您使用.withExposedPorts(9088)該端口時(shí),該端口實(shí)際上并未暴露在 TestContainers 可以連接到的網(wǎng)絡(luò)接口上。


這就是為什么即使您等待日志消息,您仍然很可能遇到問題,您也在端口上等待并且它永遠(yuǎn)不可用。


好消息是,這個(gè)問題現(xiàn)在已經(jīng)修復(fù),可以通過下載最新的 Informix docker 鏡像來使用


ibmcom/informix-developer-database:latest獲取最新的 14.10 docker 鏡像


下面是我運(yùn)行的代碼,用于驗(yàn)證新圖像是否與 TestContainers 一起更好地工作。

public class DockerTest {

    GenericContainer<?>container  = new GenericContainer<>("ibmcom/informix-developer-database:latest")

        .withExposedPorts(9088, 9089, 27017, 27018, 27883).withEnv("LICENSE", "accept");

@Test

public void testIfxContainer() throws Exception {

    container.start();

    System.out.println("Informix started");

    //test the connection

    try(Connection c = DriverManager.getConnection("jdbc:informix-sqli:localhost:"  + container.getFirstMappedPort() + "/sysmaster:user=informix;password=your-password")) {

      try(Statement s = c.createStatement(); ResultSet rs = s.executeQuery("SELECT FIRST 10 tabname from systables");) {

        while(rs.next()) {

          System.out.println(r.getString(1));

        }

      }

    }

  }

}


查看完整回答
反對 回復(fù) 2023-03-09
  • 1 回答
  • 0 關(guān)注
  • 182 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)