aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Solovev <ivan.solovev@qt.io>2023-07-20 16:31:58 +0200
committerIvan Solovev <ivan.solovev@qt.io>2023-08-11 13:51:48 +0000
commit92d30a74f7d2a4e133cee96d2490f8cd1af1fc8d (patch)
treed73e71a2c93a73608c431e695a59c827cbc065de
parentb3f6c5b223d1f2d3c79a7605f92cfa11992ff81c (diff)
Update californium docker container
The californium docker container was based on californium 1.0.0, which is a very old release. This results in some SSL-related errors when running the Qt CoAP tests in the CI. This patch updates the docker container. Instead of a custom fork of a californium server, we use 3.8.0 release tag, and apply a custom patch locally. A similar docker container is already uploaded to DockerHub and used in Qt CoAP examples. Task-number: QTBUG-114798 Change-Id: I07346f69a6790b4ae648e073440d68f28668cdd0 Reviewed-by: Sona Kurazyan <kurazyan.sona@gmail.com> Reviewed-by: Dimitrios Apostolou <jimis@qt.io> (cherry picked from commit 2ed9f566c1d3c6de17302a072527dd4b8a8ef28a)
-rw-r--r--coin/provisioning/common/shared/testserver/californium/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/californium/qt_changes.patch43
-rwxr-xr-xcoin/provisioning/common/shared/testserver/docker_images.sh13
3 files changed, 53 insertions, 7 deletions
diff --git a/coin/provisioning/common/shared/testserver/californium/Dockerfile b/coin/provisioning/common/shared/testserver/californium/Dockerfile
index 041c3ef4..81d27f9b 100644
--- a/coin/provisioning/common/shared/testserver/californium/Dockerfile
+++ b/coin/provisioning/common/shared/testserver/californium/Dockerfile
@@ -1,5 +1,5 @@
FROM qt_ubuntu_18.04
-ARG packages="avahi-daemon maven default-jdk"
+ARG packages="avahi-daemon maven default-jdk patch"
RUN apt-get update && apt-get -y install $packages
# Get californium-based CoAP test server
@@ -7,6 +7,8 @@ WORKDIR /root/src
ADD californium-*.tar.gz .
RUN mv californium-* californium
WORKDIR /root/src/californium
+ADD qt_changes.patch ./
+RUN patch -p1 < qt_changes.patch
RUN mvn clean install -q -DskipTests
WORKDIR /
diff --git a/coin/provisioning/common/shared/testserver/californium/qt_changes.patch b/coin/provisioning/common/shared/testserver/californium/qt_changes.patch
new file mode 100644
index 00000000..732c0daa
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/californium/qt_changes.patch
@@ -0,0 +1,43 @@
+diff -ruN californium_3.8.0/demo-apps/cf-plugtest-server/src/main/java/org/eclipse/californium/plugtests/PlugtestServer.java californium/demo-apps/cf-plugtest-server/src/main/java/org/eclipse/californium/plugtests/PlugtestServer.java
+--- californium_3.8.0/demo-apps/cf-plugtest-server/src/main/java/org/eclipse/californium/plugtests/PlugtestServer.java 2023-07-21 11:16:21.142201240 +0200
++++ californium/demo-apps/cf-plugtest-server/src/main/java/org/eclipse/californium/plugtests/PlugtestServer.java 2023-07-21 11:16:51.074210378 +0200
+@@ -100,6 +100,14 @@
+ import org.eclipse.californium.unixhealth.NetSocketHealthLogger;
+ import org.eclipse.californium.unixhealth.NetStatLogger;
+
++import org.eclipse.californium.scandium.DTLSConnector;
++import org.eclipse.californium.scandium.config.DtlsConnectorConfig;
++import org.eclipse.californium.scandium.dtls.pskstore.AdvancedSinglePskStore;
++import org.eclipse.californium.core.network.CoapEndpoint;
++
++import java.net.InetSocketAddress;
++import java.net.InetAddress;
++
+ import picocli.CommandLine;
+ import picocli.CommandLine.ArgGroup;
+ import picocli.CommandLine.Command;
+@@ -437,7 +445,23 @@
+ // server.addEndpoint(new CoAPEndpoint(new InetSocketAddress("127.0.0.1", port)));
+ // server.addEndpoint(new CoAPEndpoint(new InetSocketAddress("2a01:c911:0:2010::10", port)));
+ // server.addEndpoint(new CoAPEndpoint(new InetSocketAddress("10.200.1.2", port)));
+- server.addEndpoints(config);
++ // server.addEndpoints(config);
++
++ CoapEndpoint.Builder endpointBuilder = new CoapEndpoint.Builder();
++ endpointBuilder.setPort(5683);
++ server.addEndpoint(endpointBuilder.build());
++
++ AdvancedSinglePskStore pskStore = new AdvancedSinglePskStore("Client_identity", "secretPSK".getBytes());
++
++ DtlsConnectorConfig.Builder builder = new DtlsConnectorConfig.Builder(new Configuration());
++ builder.setAddress(new InetSocketAddress(5684));
++ builder.setAdvancedPskStore(pskStore);
++ DTLSConnector dtlsConnector = new DTLSConnector(builder.build());
++
++ endpointBuilder = new CoapEndpoint.Builder();
++ endpointBuilder.setConnector(dtlsConnector);
++ server.addEndpoint(endpointBuilder.build());
++
+ if (server.getEndpoints().isEmpty()) {
+ System.err.println("no endpoint available!");
+ System.exit(ERR_INIT_FAILED);
diff --git a/coin/provisioning/common/shared/testserver/docker_images.sh b/coin/provisioning/common/shared/testserver/docker_images.sh
index 8c731c52..13e60abb 100755
--- a/coin/provisioning/common/shared/testserver/docker_images.sh
+++ b/coin/provisioning/common/shared/testserver/docker_images.sh
@@ -89,13 +89,14 @@ DownloadURL \
FreeCoAP-0.7.tar.gz
mv FreeCoAP-0.7.tar.gz "$SERVER_PATH/freecoap/"
-# Custom fork of Eclipse Californium with changes not upstream
+# Eclipse Californium 3.8.0, requires to apply a custom patch from
+# $SERVER_PATH/californium/ before usage
DownloadURL \
- http://ci-files01-hki.intra.qt.io/input/docker/californium-secure-test-server.tar.gz \
- https://github.com/sonakur/californium/archive/secure-test-server.tar.gz \
- 0ee7f5d4366b9e31f6d2d42e389cb7a66d2db54987b700a38a3a31e8f38a7a19 \
- californium-secure-test-server.tar.gz
-mv californium-secure-test-server.tar.gz "$SERVER_PATH/californium/"
+ http://ci-files01-hki.intra.qt.io/input/docker/californium-3.8.0.tar.gz \
+ https://github.com/eclipse-californium/californium/archive/refs/tags/3.8.0.tar.gz \
+ 24f8ca393f26c922739462e4586b8ced1ff75f99bfa795defa34a967b5a4a5a0 \
+ californium-3.8.0.tar.gz
+mv californium-3.8.0.tar.gz "$SERVER_PATH/californium/"
echo 'Building the docker images...'