Added IndicationMessage
[ric-app/hw.git] / Dockerfile-Unit-Tests
1 #/*
2 ##==================================================================================
3 ##
4 ##        Copyright (c) 2019-2020 AT&T Intellectual Property.
5 ##
6 ##   Licensed under the Apache License, Version 2.0 (the "License");
7 ##   you may not use this file except in compliance with the License.
8 ##   You may obtain a copy of the License at
9 ##
10 ##       http://www.apache.org/licenses/LICENSE-2.0
11 ##
12 ##   Unless required by applicable law or agreed to in writing, software
13 ##   distributed under the License is distributed on an "AS IS" BASIS,
14 ##   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 ##   See the License for the specific language governing permissions and
16 ##   limitations under the License.
17 ##==================================================================================
18 ## */
19
20 ARG SCHEMA_PATH=schemas
21 ARG STAGE_DIR=/tmp/helloworld-xapp
22
23 #==================================================================================
24 FROM nexus3.o-ran-sc.org:10001/ubuntu:18.04 as ricbuild
25
26 # to override repo base, pass in repo argument when running docker build:
27 # docker build --build-arg REPOBASE=http://abc.def.org . ....
28 ARG REPOBASE=https://gerrit.oran-osc.org/r
29 ARG SCHEMA_FILE
30 ARG SCHEMA_PATH
31 ARG STAGE_DIR
32
33 # Install necessary packages
34 WORKDIR ${STAGE_DIR}
35 RUN apt-get update  \
36      && apt-get install -y \
37      cmake \
38      git \
39      build-essential \
40      automake \
41      autoconf-archive \
42      autoconf \
43      pkg-config \
44      gawk \
45      libtool \
46      wget \
47      zlib1g-dev \
48      libffi-dev \
49      && apt-get clean
50
51 # Install mdclog using debian package hosted at packagecloud.io
52 ARG MDC_VER=0.0.4-1
53 RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/mdclog_${MDC_VER}_amd64.deb/download.deb
54 RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/mdclog-dev_${MDC_VER}_amd64.deb/download.deb
55 RUN dpkg -i mdclog_${MDC_VER}_amd64.deb
56 RUN dpkg -i mdclog-dev_${MDC_VER}_amd64.deb
57
58 # Install RMr using debian package hosted at packagecloud.io
59 ARG RMR_VER=4.0.2
60 RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rmr_${RMR_VER}_amd64.deb/download.deb
61 RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rmr-dev_${RMR_VER}_amd64.deb/download.deb
62 RUN dpkg -i rmr_${RMR_VER}_amd64.deb
63 RUN dpkg -i rmr-dev_${RMR_VER}_amd64.deb
64
65 ##Iinstall Google test
66
67 WORKDIR ${STAGE_DIR}
68 RUN apt-get install -y libgtest-dev
69 RUN cd /usr/src/gtest \
70     && cmake CMakeLists.txt \
71     && make \
72     && cp *.a /usr/local/lib
73
74 #Install RNIB libraries
75 ARG RNIB_VER=1.0.0
76 RUN wget -nv --content-disposition https://packagecloud.io/o-ran-sc/release/packages/debian/stretch/rnib_${RNIB_VER}_all.deb/download.deb
77 RUN dpkg -i rnib_${RNIB_VER}_all.deb
78
79
80 ## Install SDL Libraries
81 WORKDIR ${STAGE_DIR}
82 RUN apt-get install -y cpputest
83 RUN apt-get remove -y libboost-all-dev
84 RUN apt-get install -y  libboost-all-dev
85 RUN apt-get install -y libhiredis-dev
86
87 RUN git clone https://gerrit.o-ran-sc.org/r/ric-plt/dbaas
88 RUN cd dbaas/redismodule && \
89     ./autogen.sh && \
90     ./configure && \
91     make all && \
92     make install
93
94 WORKDIR ${STAGE_DIR}
95 RUN git clone https://gerrit.o-ran-sc.org/r/ric-plt/sdl
96 RUN cd sdl && \
97     ./autogen.sh && \
98     ./configure && \
99     make all && \
100     make install
101
102
103 WORKDIR ${STAGE_DIR}
104 ## Install rapidjson
105
106 RUN git clone https://github.com/Tencent/rapidjson && \
107     cd rapidjson && \
108     mkdir build && \
109     cd build && \
110     cmake -DCMAKE_INSTALL_PREFIX=/usr/local .. && \
111     make install && \
112     cd ${STAGE_DIR} && \
113     rm -rf rapidjson
114
115 ##-----------------------------------
116 # Now install the program
117 #------------------------------------
118 COPY ./ ${STAGE_DIR}
119 RUN ls -al
120
121 RUN export CPATH=$CPATH:/usr/local/include && \ 
122     cd test && \
123     make clean && \
124     make install 
125
126 COPY ${SCHEMA_PATH}/* /etc/xapp/
127 COPY init/init_script.py /etc/xapp/init_script.py
128 COPY init/routes.txt /etc/xapp/routes.txt
129
130 #---------------------------------------------
131 # #Build the final version
132
133 FROM ubuntu:18.04
134
135 ARG SCHEMA_PATH
136 ARG STAGE_DIR
137
138 ## copy just the needed libraries install it into the final image
139 COPY --from=ricbuild ${STAGE_DIR}/*.deb /tmp/
140 COPY --from=ricbuild /usr/local/lib/librmr_si* /usr/local/lib/
141 COPY --from=ricbuild /usr/local/lib/libgtest* /usr/local/lib/
142 COPY --from=ricbuild /usr/local/lib/libsdl* /usr/local/lib/
143 COPY --from=ricbuild /usr/local/libexec/redismodule/libredis* /usr/local/libexec/redismodule/
144 RUN dpkg -i /tmp/*.deb
145 RUN apt-get update && \
146     apt-get install -y libcurl3 python3 && \
147     apt-get install -y libboost-all-dev cpputest libhiredis-dev valgrind && \
148     apt-get clean
149 COPY --from=ricbuild /etc/xapp/* /etc/xapp/
150 COPY --from=ricbuild /usr/local/bin/hw_unit_tests /usr/local/bin/hw_unit_tests
151 COPY --from=ricbuild /usr/local/include/rnib/*.h /usr/local/include/rnib/
152 COPY --from=ricbuild /usr/local/include/rnib/rnibreader.a /usr/local/include/rnib/
153
154
155 RUN ldconfig
156
157
158 ##ENV  PYTHONHOME=/opt/python3 \
159 ##     PYTHONPATH=/opt/python3 \
160 ENV  RMR_RTG_SVC="9999" \
161      RMR_SEED_RT="/etc/xapp/routes.txt" \
162      LD_LIBRARY_PATH="/usr/local/lib:/usr/local/libexec" \
163      CONFIG_FILE=/opt/ric/config/config-file.json \
164      EXE_FILE=/usr/local/bin/hw_unit_tests     
165       
166
167 CMD python3 /etc/xapp/init_script.py $CONFIG_FILE $EXE_FILE