Skip to content

Commit

Permalink
Small improvements to tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dimabarbul committed Nov 17, 2023
1 parent a40a966 commit 83762ed
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 24 deletions.
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019 Contributors to the Eclipse Foundation
* Copyright (c) 2023 Contributors to the Eclipse Foundation
*
* See the NOTICE file(s) distributed with this work for additional
* information regarding copyright ownership.
Expand All @@ -16,6 +16,7 @@

import java.nio.ByteBuffer;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
Expand All @@ -34,6 +35,7 @@
import org.eclipse.ditto.base.model.headers.DittoHeaders;
import org.eclipse.ditto.connectivity.api.BaseClientState;
import org.eclipse.ditto.connectivity.model.*;
import org.eclipse.ditto.connectivity.model.mqtt.IllegalSessionExpiryIntervalSecondsException;
import org.eclipse.ditto.connectivity.model.mqtt.ReceiveMaximum;
import org.eclipse.ditto.connectivity.model.mqtt.SessionExpiryInterval;
import org.eclipse.ditto.connectivity.model.signals.commands.modify.CloseConnection;
Expand Down Expand Up @@ -74,14 +76,22 @@
@RunWith(Parameterized.class)
public final class MqttClientActorIT {

@Parameterized.Parameters(name = "MQTT version {0}")
public static Collection<MqttVersion> mqttVersions() {
return List.of(MqttVersion.MQTT_3_1_1, MqttVersion.MQTT_5_0);
@Parameterized.Parameters(name = "MQTT version: {0}, separate publisher client: {1}")
public static Collection<Object[]> parameters() {
return Arrays.asList(new Object[][] {
{ MqttVersion.MQTT_3_1_1, true },
{ MqttVersion.MQTT_3_1_1, false },
{ MqttVersion.MQTT_5_0, true },
{ MqttVersion.MQTT_5_0, false },
});
}

@Parameterized.Parameter
@Parameterized.Parameter(0)
public static MqttVersion mqttVersion;

@Parameterized.Parameter(1)
public static Boolean separatePublisherClient;

@ClassRule
public static final DittoTracingInitResource DITTO_TRACING_INIT_RESOURCE =
DittoTracingInitResource.disableDittoTracing();
Expand All @@ -101,6 +111,15 @@ public static Collection<MqttVersion> mqttVersions() {
// https://github.com/eclipse-ditto/ditto/issues/1767
private static final int TIMEOUT_BEFORE_PUBLISH = 3;
private static final int MESSAGES_FROM_PREVIOUS_SESSION_TIMEOUT = 3;
private static final SessionExpiryInterval SESSION_EXPIRY_INTERVAL;

static {
try {
SESSION_EXPIRY_INTERVAL = SessionExpiryInterval.of(Duration.ofSeconds(60));
} catch (IllegalSessionExpiryIntervalSecondsException e) {
throw new RuntimeException(e);
}
}

private static Config actorsTestConfig;

Expand Down Expand Up @@ -131,13 +150,6 @@ private void cleanPreviousSession() {
mqttClient.cleanSession();
}

/*private static DittoMongoClient provideClientWrapper() {
return MongoClientWrapper.getBuilder()
.connectionString(
"mongodb://" + MONGO_RESOURCE.getBindIp() + ":" + MONGO_RESOURCE.getPort() + "/testSearchDB")
.build();
}*/

@After
public void after() {
// if (mongoClient != null) {
Expand Down Expand Up @@ -241,7 +253,7 @@ public void testPersistentSession() {
final var underTest = getMqttClientActor(getConnection(new String[] { TOPIC_NAME }));
// create session for ditto client ID
final var dittoMqttClient = getMqttClient(CLIENT_ID_DITTO);
dittoMqttClient.connect(GenericMqttConnect.newInstance(false, KeepAliveInterval.defaultKeepAlive(), SessionExpiryInterval.defaultSessionExpiryInterval(), ReceiveMaximum.defaultReceiveMaximum()));
dittoMqttClient.connect(GenericMqttConnect.newInstance(false, KeepAliveInterval.defaultKeepAlive(), SESSION_EXPIRY_INTERVAL, ReceiveMaximum.defaultReceiveMaximum()));
dittoMqttClient.subscribe(GenericMqttSubscribe.of(Set.of(
GenericMqttSubscription.newInstance(MqttTopicFilter.of(TOPIC_NAME), MqttQos.EXACTLY_ONCE))));
dittoMqttClient.disconnect();
Expand Down Expand Up @@ -271,7 +283,7 @@ public void testPersistentSessionMessageFromTopicWhichIsNoLongerSubscribed() {
final var underTest = getMqttClientActor(getConnection(new String[] { TOPIC_NAME }));
// create session for ditto client ID with subscription to 2 topics
final var dittoMqttClient = getMqttClient(CLIENT_ID_DITTO);
dittoMqttClient.connect(GenericMqttConnect.newInstance(false, KeepAliveInterval.defaultKeepAlive(), SessionExpiryInterval.defaultSessionExpiryInterval(), ReceiveMaximum.defaultReceiveMaximum()));
dittoMqttClient.connect(GenericMqttConnect.newInstance(false, KeepAliveInterval.defaultKeepAlive(), SESSION_EXPIRY_INTERVAL, ReceiveMaximum.defaultReceiveMaximum()));
dittoMqttClient.subscribe(GenericMqttSubscribe.of(Set.of(
GenericMqttSubscription.newInstance(MqttTopicFilter.of(TOPIC_NAME), MqttQos.EXACTLY_ONCE),
GenericMqttSubscription.newInstance(MqttTopicFilter.of(ANOTHER_TOPIC_NAME), MqttQos.EXACTLY_ONCE))));
Expand Down Expand Up @@ -313,7 +325,7 @@ private static Connection getConnection(final String[]... sourcesTopics) {
.specificConfig(Map.of(
"clientId", CLIENT_ID_DITTO,
"cleanSession", "false",
"separatePublisherClient", "false"))
"separatePublisherClient", String.valueOf(separatePublisherClient)))
.setSources(Arrays.stream(sourcesTopics)
.map(topics -> ConnectivityModelFactory.newSourceBuilder()
.authorizationContext(AUTHORIZATION_CONTEXT)
Expand Down
3 changes: 0 additions & 3 deletions connectivity/service/src/test/resources/test.conf
Expand Up @@ -310,9 +310,6 @@ ditto {

}

tracing {
enabled = false
}
}

pekko {
Expand Down
Expand Up @@ -17,7 +17,7 @@
import java.util.Objects;

import com.github.dockerjava.api.model.AccessMode;
import com.github.dockerjava.api.model.PortBinding;
import com.google.common.base.MoreObjects;
import org.eclipse.ditto.internal.utils.test.docker.ContainerFactory;

import com.github.dockerjava.api.command.CreateContainerCmd;
Expand Down Expand Up @@ -59,10 +59,8 @@ static MosquittoContainerFactory of(final String configResourceName) {

@Override
protected CreateContainerCmd configureContainer(CreateContainerCmd createContainerCmd) {
final var hostConfig = HostConfig.newHostConfig()
.withBinds(new Bind(CONFIG_RESOURCES_PATH, new Volume(CONFIG_CONTAINER_PATH), AccessMode.ro))
.withPortBindings(PortBinding.parse(String.valueOf(MOSQUITTO_INTERNAL_PORT)));
return createContainerCmd
.withHostConfig(hostConfig);
final var hostConfig = MoreObjects.firstNonNull(createContainerCmd.getHostConfig(), HostConfig.newHostConfig())
.withBinds(new Bind(CONFIG_RESOURCES_PATH, new Volume(CONFIG_CONTAINER_PATH), AccessMode.ro));
return createContainerCmd.withHostConfig(hostConfig);
}
}

0 comments on commit 83762ed

Please sign in to comment.