RIC:1060: Change in PTL
[ric-plt/dbaas.git] / docker / Dockerfile.redis
index 98d4c26..b3f921a 100644 (file)
@@ -1,5 +1,5 @@
 #   Copyright (c) 2019 AT&T Intellectual Property.
-#   Copyright (c) 2019 Nokia.
+#   Copyright (c) 2019-2022 Nokia.
 #
 #   Licensed under the Apache License, Version 2.0 (the "License");
 #   you may not use this file except in compliance with the License.
 #   platform project (RICP).
 #
 
-FROM nexus3.o-ran-sc.org:10004/bldr-alpine3:6-a3.9-nng as build-env
+ARG SDLGO_TAG="v0.10.0"
+
+# 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
+ARG SDLGO_TAG
+
+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 --depth 1 --branch ${SDLGO_TAG} "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:6.2.14-alpine3.18 as build
 
-FROM redis:5.0.5-alpine3.9
+RUN apk --update add --upgrade --no-cache \
+    apk-tools \
+    openssl \
+    ssl_client \
+    musl-utils \
+    busybox
 
-RUN apk add curl
 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