com.mongodb.MongoSocketOpenException с универсальным контейнером - PullRequest
0 голосов
/ 16 октября 2019

Я хочу протестировать свой код с Java-объектом "GenericContainer", но у меня есть следующее исключение:

com.mongodb.MongoSocketOpenException: исключение, открывающее сокет в com.mongodb.internal.connection.SocketStream.open (SocketStream.java:70) в com.mongodb.internal.connection.InternalStreamConnection.open (InternalStreamConnection.java:128) в com.mongodb.internal.connection.DefaultServerMonitor $ ServerMonitorRunnable.run1.jpg: DefaultServer) в java.base / java.lang.Thread.run (Thread.java:834) Вызывается: java.net.ConnectException: отказ в соединении (соединение отклонено) в java.base / java.net.PlainSocketImpl.socketConnect (собственный метод) в java.base / java.net.AbstractPlainSocketImpl.doConnect (AbstractPlainSocketImpl.java:399) в java.base / java.net.AbstractPlainSocketImpl.connectToAddress (AbstractPlainSocketImpl.java:242) в java.baseconnect (AbstractPlainSocketImpl.java:224) в java.base / java.net.SocksSocketImpl.connect (SocksSocketImpl.java:403) в java.base / java.net.Socket.connect (Socket.java:591) в com.mongodb.internal.connection.SocketStreamHelper.initialize (SocketStreamHelper.java:64) в com.mongodb.internal.connection.SocketStream.initializeSocket (SocketStream.java:79) на com.mongodb.internal.connection.SocketStream.open (SocketStream.java:65) ... 3 пропущенных общих кадра

Мой код:

import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.ServerAddress;
import java.time.Duration;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.AfterEach;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;

@Slf4j
public abstract class AbstractContainerBaseTest {
    protected static final String MONGO_DB_NAME = "db_name";

    private final int port = 27017;

    private final GenericContainer mongo = new GenericContainer<>("mongo:4.0.8").withExposedPorts(port).withStartupTimeout(Duration.ofSeconds(1180L));

    protected MongoClient mongoClient;

    protected void init() {
        MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
        int maxConnectionIdleTime = 60000;
        builder.maxConnectionIdleTime(maxConnectionIdleTime);

        mongo.start();
        mongo.waitingFor(Wait.forListeningPort()
             .withStartupTimeout(Duration.ofSeconds(180L)));

        ServerAddress serverAddress = new ServerAddress(mongo.getContainerIpAddress(), mongo.getMappedPort(port));

        mongoClient = new MongoClient(serverAddress, builder.build());
    }

    @AfterEach
    protected void close() {
        mongo.stop();
    }
}

И зависимость GenericContainer от maven:

    <dependency>
        <groupId>org.testcontainers</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>1.11.3</version>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>javax.annotation</groupId>
                <artifactId>javax.annotation-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

Кто-то может мне помочь с этим?

Спасибо, advence.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...