You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by ns...@apache.org on 2022/03/08 21:07:11 UTC

[thrift] branch master updated: THRIFT-5536 Fix cross language tests

This is an automated email from the ASF dual-hosted git repository.

nsuke pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/thrift.git


The following commit(s) were added to refs/heads/master by this push:
     new 7594da8  THRIFT-5536 Fix cross language tests
7594da8 is described below

commit 7594da8d7ac8d3525aa736d8fef89e465c63533e
Author: Aki Sukegawa <ns...@apache.org>
AuthorDate: Mon Mar 7 00:28:26 2022 -0500

    THRIFT-5536 Fix cross language tests
---
 build/docker/README.md                |  2 +-
 build/docker/ubuntu-bionic/Dockerfile | 30 ++++++++++++++++--------------
 build/docker/ubuntu-xenial/Dockerfile | 30 ++++++++++++++++++------------
 debian/control                        |  2 +-
 test/erl/src/test_thrift_server.erl   |  6 +++++-
 test/go/src/bin/testclient/main.go    |  1 +
 test/go/src/bin/testserver/main.go    |  1 +
 7 files changed, 43 insertions(+), 29 deletions(-)

diff --git a/build/docker/README.md b/build/docker/README.md
index f676479..f07faaa 100644
--- a/build/docker/README.md
+++ b/build/docker/README.md
@@ -176,7 +176,7 @@ Last updated: October 1, 2017
 | d         | 2.087.0       | 2.087.0       |       |
 | dart      | 2.0.0         | 2.4.0         |       |
 | delphi    |               |               | Not in CI |
-| erlang    | 18.3          | 22.0          |       |
+| erlang    | OTP-18        | OTP-23        |       |
 | go        | 1.15.10       | 1.16.2        |       |
 | haxe      | 3.2.1         | 3.4.4         | THRIFT-4352: avoid 3.4.2 |
 | java      | 1.8.0_191     | 11.0.3        |       |
diff --git a/build/docker/ubuntu-bionic/Dockerfile b/build/docker/ubuntu-bionic/Dockerfile
index 08c45df..0e11d2a 100644
--- a/build/docker/ubuntu-bionic/Dockerfile
+++ b/build/docker/ubuntu-bionic/Dockerfile
@@ -43,10 +43,6 @@ RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > /et
     chown root:root /etc/apt/trusted.gpg.d/microsoft.gpg && \
     chown root:root /etc/apt/sources.list.d/microsoft-prod.list
 
-# erlang
-RUN wget -O- https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc | apt-key add - && \
-    echo "deb https://packages.erlang-solutions.com/ubuntu bionic contrib" | tee /etc/apt/sources.list.d/erlang.list
-
 # node.js
 RUN curl -sL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - && \
     echo "deb https://deb.nodesource.com/node_10.x bionic main" | tee /etc/apt/sources.list.d/nodesource.list
@@ -80,6 +76,8 @@ RUN mkdir -p /usr/local/adobe/flex/4.6 && \
     unzip flex_sdk_4.6.zip
 ENV FLEX_HOME /usr/local/adobe/flex/4.6
 
+# TODO: "apt-get install" without "apt-get update" in the same "RUN" step can cause cache issues if modified later.
+# See https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run
 RUN apt-get install -y --no-install-recommends \
 `# C++ dependencies` \
       libboost-all-dev \
@@ -119,12 +117,15 @@ RUN apt-get install -y --no-install-recommends \
       aspnetcore-runtime-6.0 \
       dotnet-apphost-pack-6.0
 
-RUN apt-get install -y --no-install-recommends \
-`# Erlang dependencies` \
-      erlang && \
-    wget https://s3.amazonaws.com/rebar3/rebar3 -O /usr/bin/rebar3 && \
-    chmod 755 /usr/bin/rebar3 && \
+# Erlang dependencies
+ARG ERLANG_OTP_VERSION=23.3.4.11
+ARG ERLANG_REBAR_VERSION=3.18.0
+RUN apt-get update && apt-get install -y --no-install-recommends libncurses5-dev && \
+    curl -ssLo /usr/local/bin/kerl https://raw.githubusercontent.com/kerl/kerl/master/kerl && chmod +x /usr/local/bin/kerl && \
+    kerl build $ERLANG_OTP_VERSION && kerl install $ERLANG_OTP_VERSION /usr/local/lib/otp/ && . /usr/local/lib/otp/activate && \
+    curl -ssLo /usr/local/bin/rebar3 https://github.com/erlang/rebar3/releases/download/${ERLANG_REBAR_VERSION}/rebar3 && chmod +x /usr/local/bin/rebar3 && \
     rebar3 --version
+ENV PATH /usr/local/lib/otp/bin:$PATH
 
 RUN apt-get install -y --no-install-recommends \
 `# GlibC dependencies` \
@@ -262,11 +263,12 @@ RUN apt-get install -y --no-install-recommends \
     dpkg -i cppcheck_1.83-2_amd64.deb && \
     rm cppcheck_1.83-2_amd64.deb
 
-# Clean up
-RUN rm -rf /var/cache/apt/* && \
-    rm -rf /var/lib/apt/lists/* && \
-    rm -rf /tmp/* && \
-    rm -rf /var/tmp/*
+# NOTE: this does not reduce the image size but adds an additional layer.
+# # Clean up
+# RUN rm -rf /var/cache/apt/* && \
+#     rm -rf /var/lib/apt/lists/* && \
+#     rm -rf /tmp/* && \
+#     rm -rf /var/tmp/*
 
 ENV THRIFT_ROOT /thrift
 RUN mkdir -p $THRIFT_ROOT/src
diff --git a/build/docker/ubuntu-xenial/Dockerfile b/build/docker/ubuntu-xenial/Dockerfile
index 5033d77..1428fac 100644
--- a/build/docker/ubuntu-xenial/Dockerfile
+++ b/build/docker/ubuntu-xenial/Dockerfile
@@ -74,6 +74,8 @@ ENV PATH /usr/lib/llvm-3.8/bin:$PATH
 
 ### languages
 
+# TODO: "apt-get install" without "apt-get update" in the same "RUN" step can cause cache issues if modified later.
+# See https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#run
 RUN apt-get install -y --no-install-recommends \
 `# C++ dependencies` \
       libboost-dev \
@@ -118,13 +120,16 @@ RUN apt-get install -y --no-install-recommends \
       aspnetcore-runtime-6.0 \
       dotnet-apphost-pack-6.0
 
-RUN apt-get install -y --no-install-recommends \
-`# Erlang dependencies` \
-      erlang-base \
-      erlang-eunit \
-      erlang-dev \
-      erlang-tools \
-      rebar
+# Erlang dependencies
+ARG ERLANG_OTP_VERSION=18.3.4.11
+ARG ERLANG_REBAR_VERSION=3.13.2
+RUN apt-get update && apt-get install -y --no-install-recommends automake libncurses5-dev && \
+    curl https://raw.githubusercontent.com/kerl/kerl/master/kerl -o /usr/local/bin/kerl && chmod +x /usr/local/bin/kerl && \
+    kerl build $ERLANG_OTP_VERSION && kerl install $ERLANG_OTP_VERSION /usr/local/lib/otp/ && . /usr/local/lib/otp/activate && \
+    curl https://s3.amazonaws.com/rebar3/rebar3 -o /usr/local/bin/rebar3 && chmod +x /usr/local/bin/rebar3 && \
+    curl -ssLo /usr/local/bin/rebar3 https://github.com/erlang/rebar3/releases/download/${ERLANG_REBAR_VERSION}/rebar3 && chmod +x /usr/local/bin/rebar3 && \
+    rebar3 --version
+ENV PATH /usr/local/lib/otp/bin:$PATH
 
 RUN apt-get install -y --no-install-recommends \
 `# GlibC dependencies` \
@@ -246,11 +251,12 @@ RUN apt-get install -y --no-install-recommends \
     locale-gen de_DE.UTF-8 && \
     update-locale
 
-# Clean up
-RUN rm -rf /var/cache/apt/* && \
-    rm -rf /var/lib/apt/lists/* && \
-    rm -rf /tmp/* && \
-    rm -rf /var/tmp/*
+# NOTE: this does not reduce the image size but adds an additional layer.
+# # Clean up
+# RUN rm -rf /var/cache/apt/* && \
+#     rm -rf /var/lib/apt/lists/* && \
+#     rm -rf /tmp/* && \
+#     rm -rf /var/tmp/*
 
 ENV DOTNET_CLI_TELEMETRY_OPTOUT 1
 ENV THRIFT_ROOT /thrift
diff --git a/debian/control b/debian/control
index 0910a94..b7f0b96 100644
--- a/debian/control
+++ b/debian/control
@@ -2,7 +2,7 @@ Source: thrift
 Section: devel
 Priority: extra
 Build-Depends: dotnet-runtime-6.0, dotnet-sdk-6.0, debhelper (>= 9), build-essential, python-dev, ant,
-    erlang-base, ruby-dev | ruby1.9.1-dev, ruby-bundler ,autoconf, automake,
+    ruby-dev | ruby1.9.1-dev, ruby-bundler ,autoconf, automake,
     pkg-config, libtool, bison, flex, libboost-dev | libboost1.56-dev | libboost1.63-all-dev,
     python-all, python-setuptools, python-all-dev, python-all-dbg,
     python3-all, python3-setuptools, python3-all-dev, python3-all-dbg,
diff --git a/test/erl/src/test_thrift_server.erl b/test/erl/src/test_thrift_server.erl
index dad8dec..145feac 100644
--- a/test/erl/src/test_thrift_server.erl
+++ b/test/erl/src/test_thrift_server.erl
@@ -19,7 +19,7 @@
 
 -module(test_thrift_server).
 
--export([start/0, start/1, start_link/2, handle_function/2]).
+-export([start/0, start/1, start_link/2, handle_function/2, handle_error/2]).
 
 -include("thrift_constants.hrl").
 -include("gen-erl/thrift_test_types.hrl").
@@ -231,3 +231,7 @@ handle_function(testOneway, {Seconds}) ->
     io:format("testOneway: ~p~n", [Seconds]),
     timer:sleep(1000 * Seconds),
     ok.
+
+% This is not mandatory but improving test logs.
+handle_error(Arg1, Arg2) ->
+  io:format("handle_error is called: ~p ~p~n", [Arg1, Arg2]).
diff --git a/test/go/src/bin/testclient/main.go b/test/go/src/bin/testclient/main.go
index f0ce052..b711958 100644
--- a/test/go/src/bin/testclient/main.go
+++ b/test/go/src/bin/testclient/main.go
@@ -34,6 +34,7 @@ var host = flag.String("host", "localhost", "Host to connect")
 var port = flag.Int64("port", 9090, "Port number to connect")
 var domain_socket = flag.String("domain-socket", "", "Domain Socket (e.g. /tmp/thrifttest.thrift), instead of host and port")
 var transport = flag.String("transport", "buffered", "Transport: buffered, framed, http, zlib")
+var _ = flag.Bool("zlib", false, "For compatibility. Ignored.")
 var protocol = flag.String("protocol", "binary", "Protocol: binary, compact, json")
 var ssl = flag.Bool("ssl", false, "Encrypted Transport using SSL")
 var testloops = flag.Int("testloops", 1, "Number of Tests")
diff --git a/test/go/src/bin/testserver/main.go b/test/go/src/bin/testserver/main.go
index 011a71d..60a764f 100644
--- a/test/go/src/bin/testserver/main.go
+++ b/test/go/src/bin/testserver/main.go
@@ -33,6 +33,7 @@ var host = flag.String("host", "localhost", "Host to connect")
 var port = flag.Int64("port", 9090, "Port number to connect")
 var domain_socket = flag.String("domain-socket", "", "Domain Socket (e.g. /tmp/ThriftTest.thrift), instead of host and port")
 var transport = flag.String("transport", "buffered", "Transport: buffered, framed, http, zlib")
+var _ = flag.Bool("zlib", false, "For compatibility. Ignored.")
 var protocol = flag.String("protocol", "binary", "Protocol: binary, compact, json, header")
 var ssl = flag.Bool("ssl", false, "Encrypted Transport using SSL")
 var certPath = flag.String("certPath", "keys", "Directory that contains SSL certificates")