blob: e623ab8a51476acede3d8a651c458ca9d3e1923a [file] [log] [blame]
Lott, Christopher (cl778h)b23d04b2020-02-13 09:41:21 -05001#!/bin/bash
2##############################################################################
3#
4# Copyright (c) 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# Installs libraries and builds E2 manager
21# Prerequisites:
22# Debian distro; e.g., Ubuntu
Lott, Christopher (cl778h)cfc37422020-03-16 08:41:05 -040023# NNG shared library
24# golang (go); tested with version 1.12
Lott, Christopher (cl778h)b23d04b2020-02-13 09:41:21 -050025# current working directory is E2Manager
26# running with sudo privs, which is default in Docker
27
Lott, Christopher (cl778h)b23d04b2020-02-13 09:41:21 -050028# Stop at first error and be verbose
29set -eux
30
31echo "--> e2mgr-build-ubuntu.sh"
32
Lott, Christopher (cl778h)b23d04b2020-02-13 09:41:21 -050033# Install RMR from deb packages at packagecloud.io
ss412g011bb912020-03-17 18:34:42 +020034rmr=rmr_3.5.1_amd64.deb
Lott, Christopher (cl778h)b23d04b2020-02-13 09:41:21 -050035wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/$rmr/download.deb
Lott, Christopher (cl778h)cfc37422020-03-16 08:41:05 -040036sudo dpkg -i $rmr
Lott, Christopher (cl778h)b23d04b2020-02-13 09:41:21 -050037rm $rmr
ss412g011bb912020-03-17 18:34:42 +020038rmrdev=rmr-dev_3.5.1_amd64.deb
Lott, Christopher (cl778h)b23d04b2020-02-13 09:41:21 -050039wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/$rmrdev/download.deb
Lott, Christopher (cl778h)cfc37422020-03-16 08:41:05 -040040sudo dpkg -i $rmrdev
Lott, Christopher (cl778h)b23d04b2020-02-13 09:41:21 -050041rm $rmrdev
42
43# required to find nng and rmr libs
44export LD_LIBRARY_PATH=/usr/local/lib
45
46# go installs tools like go-acc to $HOME/go/bin
47# ubuntu minion path lacks go
48export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin
49
50# install the go coverage tool helper
51go get -v github.com/ory/go-acc
52
53cd 3rdparty/asn1codec \
54 && make \
55 && cd ../..
56
57go build -v app/main.go
58
59# Execute UT and measure coverage
Lott, Christopher (cl778h)cfc37422020-03-16 08:41:05 -040060# cgocheck=2 enables expensive checks that should not miss any errors,
61# but will cause your program to run slower.
62# clobberfree=1 causes the garbage collector to clobber the memory content
63# of an object with bad content when it frees the object.
64# gcstoptheworld=1 disables concurrent garbage collection, making every
65# garbage collection a stop-the-world event.
66# Setting gcstoptheworld=2 also disables concurrent sweeping after the
67# garbage collection finishes.
68# Setting allocfreetrace=1 causes every allocation to be profiled and a
69# stack trace printed on each object's allocation and free.
Lott, Christopher (cl778h)b23d04b2020-02-13 09:41:21 -050070export GODEBUG=cgocheck=2,clobberfree=1,gcstoptheworld=2,allocfreetrace=0
71export RIC_ID="bbbccc-abcd0e/20"
72# Static route table is provided in git repo
73export RMR_SEED_RT=$(pwd)/router_test.txt
74# writes to coverage.txt by default
75# SonarCloud accepts the text format
76go-acc $(go list ./... | grep -vE '(/mocks|/tests|/e2managererrors|/enums)' )
77
Lott, Christopher (cl778h)cfc37422020-03-16 08:41:05 -040078# TODO: drop rewrite of path prefix when SonarScanner is extended
Lott, Christopher (cl778h)b23d04b2020-02-13 09:41:21 -050079# rewrite the module name to a directory name in the coverage report
80# https://jira.sonarsource.com/browse/SONARSLANG-450
81sed -i -e 's/^e2mgr/E2Manager/' coverage.txt
82
83echo "--> e2mgr-build-ubuntu.sh ends"