# See the License for the specific language governing permissions and
# limitations under the License.
-FROM nexus3.o-ran-sc.org:10004/bldr-alpine3:5-a3.9 as build-env
+#
+# This source code is part of the near-RT RIC (RAN Intelligent Controller)
+# platform project (RICP).
+#
+
+
+# Alpine-linux based containers use musl implementation of libc which causes
+# valgrind to emit false positives. Therefore we run UT with valgrind in
+# a separate build stage that uses ubuntu container with GNU libc installed.
+#
+# NOTE: The valgrind false positive problem could also potentially be solved
+# with valgrind suppression files but that kind of approach may be fragile.
+FROM ubuntu:18.04 as cpputest-build
+
+RUN apt update && \
+ apt install -y \
+ automake \
+ autoconf \
+ cmake \
+ curl \
+ g++ \
+ gcc \
+ libtool \
+ make \
+ pkg-config \
+ valgrind \
+ lcov
+# Cpputest built-in memory checks generate false positives in valgrind.
+# This is solved by compiling cpputest with memory checking disabled.
+WORKDIR /cpputest
+RUN curl -L https://github.com/cpputest/cpputest/releases/download/v3.8/cpputest-3.8.tar.gz | \
+ tar --strip-components=1 -xzf -
+WORKDIR /cpputest/builddir
+RUN cmake -DMEMORY_LEAK_DETECTION=OFF .. && \
+ make install
COPY ./redismodule /redismodule
WORKDIR /redismodule
RUN ./autogen.sh && \
./configure && \
- make install -j
+ make test
+
+RUN ./autogen.sh && \
+ ./configure --disable-unit-test-memcheck && \
+ make test
+
+FROM nexus3.o-ran-sc.org:10002/o-ran-sc/bldr-alpine3-go:2.0.0 as build-env
+
+RUN apk add cpputest
+COPY ./redismodule /redismodule
+WORKDIR /redismodule
+RUN ./autogen.sh && \
+ ./configure --disable-unit-test-memcheck && \
+ make test && \
+ make install
+
+# Build sdlcli -tool
+RUN cd /go/src && \
+ git clone "https://gerrit.o-ran-sc.org/r/ric-plt/sdlgo" && \
+ cd sdlgo && \
+ go build -v -o /usr/local/bin/sdlcli cmd/sdlcli/main.go
+
+
+FROM redis:5.0.9-alpine3.11 as build
-FROM redis:5.0.5-alpine3.9
+RUN apk --update add --upgrade --no-cache \
+ apk-tools \
+ openssl \
+ ssl_client \
+ musl-utils \
+ busybox
COPY --from=build-env /usr/local/libexec/redismodule/libredismodule.so /usr/local/libexec/redismodule/libredismodule.so
+COPY --from=build-env /usr/local/bin/sdlcli /usr/local/bin/
WORKDIR /data