Fix parallel MQTT itests execution (#8617)
* Improve exception handling of the embedded MQTT broker so the port can be reconfigured when it is already bound and it properly unlocks files * Rework MQTT integration tests so they each run the embedded broker on their own reserved port Signed-off-by: Wouter Born <github@maindrain.net>
This commit is contained in:
@@ -92,4 +92,27 @@
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>build-helper-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>reserve-network-port</id>
|
||||
<goals>
|
||||
<goal>reserve-network-port</goal>
|
||||
</goals>
|
||||
<phase>process-resources</phase>
|
||||
<configuration>
|
||||
<portNames>
|
||||
<portName>mqttembeddedbroker.port</portName>
|
||||
</portNames>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
|
||||
@@ -26,4 +26,14 @@ public class Constants {
|
||||
* </pre>
|
||||
*/
|
||||
public static final String CLIENTID = "embedded-mqtt-broker";
|
||||
|
||||
/**
|
||||
* The broker persistent identifier used for identifying configurations.
|
||||
*/
|
||||
public static final String PID = "org.openhab.core.mqttembeddedbroker";
|
||||
|
||||
/**
|
||||
* The configuration key used for configuring the embedded broker port.
|
||||
*/
|
||||
public static final String PORT = "port";
|
||||
}
|
||||
|
||||
@@ -79,8 +79,8 @@ import io.netty.handler.ssl.SslContextBuilder;
|
||||
*
|
||||
* @author David Graeff - Initial contribution
|
||||
*/
|
||||
@Component(immediate = true, service = EmbeddedBrokerService.class, configurationPid = "org.openhab.core.mqttembeddedbroker", //
|
||||
property = org.osgi.framework.Constants.SERVICE_PID + "=org.openhab.core.mqttembeddedbroker")
|
||||
@Component(immediate = true, service = EmbeddedBrokerService.class, configurationPid = Constants.PID, //
|
||||
property = org.osgi.framework.Constants.SERVICE_PID + "=" + Constants.PID)
|
||||
@ConfigurableService(category = "MQTT", label = "MQTT Embedded Broker", description_uri = "mqtt:mqttembeddedbroker")
|
||||
@NonNullByDefault
|
||||
public class EmbeddedBrokerService
|
||||
@@ -309,7 +309,12 @@ public class EmbeddedBrokerService
|
||||
// retry starting broker, if it fails again, don't catch exception
|
||||
server.startServer(new MemoryConfig(properties), null, sslContextCreator, authentificator, authorizer);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.warn("Failed to start embedded MQTT server: {}", e.getMessage());
|
||||
server.stopServer();
|
||||
return;
|
||||
}
|
||||
|
||||
this.server = server;
|
||||
server.addInterceptHandler(metrics);
|
||||
ScheduledExecutorService s = new ScheduledThreadPoolExecutor(1);
|
||||
|
||||
Reference in New Issue
Block a user