# platform project (RICP).
#==================================================================================
-# The CI system creates and publishes the alarm-adapter Docker image
-# from the last step in this multi-stage build and applies
-# a Docker tag from the string in file container-tag.yaml
+FROM nexus3.o-ran-sc.org:10004/bldr-ubuntu18-c-go:4-u18.04-nng as ubuntu-alarmadapter
-#FROM golang:1.12.1 as alarmadapter
-FROM nexus3.o-ran-sc.org:10004/bldr-ubuntu18-c-go:3-u18.04-nng as alarmadapter
-
-RUN apt update && apt install -y iputils-ping net-tools curl
-
-# Install RMr shared library & development header files
-ARG RMRVERSION=3.2.4
-RUN wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/rmr_${RMRVERSION}_amd64.deb/download.deb && dpkg -i rmr_${RMRVERSION}_amd64.deb && rm -rf rmr_${RMRVERSION}_amd64.deb
-RUN wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/rmr-dev_${RMRVERSION}_amd64.deb/download.deb && dpkg -i rmr-dev_${RMRVERSION}_amd64.deb && rm -rf rmr-dev_${RMRVERSION}_amd64.deb
-
-ENV PATH="/usr/local/go/bin:${PATH}"
-ENV GOPATH /go
-
-RUN mkdir -p /go/bin
-RUN cd /go/bin \
- && wget --quiet https://github.com/go-swagger/go-swagger/releases/download/v0.19.0/swagger_linux_amd64 \
- && mv swagger_linux_amd64 swagger \
- && chmod +x swagger
+# Install utilities
+RUN apt update && apt install -y iputils-ping net-tools curl sudo
+# Install dependencies, compile and test the module
RUN mkdir -p /go/src/alarm-adapter
-WORKDIR "/go/src/alarm-adapter"
-COPY go.sum .
-COPY go.mod .
-
-RUN go mod download
-
COPY . /go/src/alarm-adapter
-WORKDIR "/go/src/alarm-adapter/adapter"
-# build and run UT
-RUN ldconfig
-RUN ./build_adapter.sh
+WORKDIR "/go/src/alarm-adapter/adapter"
+RUN ./build_adapter_ubuntu.sh
-# Final, executable container
-FROM ubuntu:16.04
+# Final, executable and deployable container
+FROM ubuntu:18.04
-COPY --from=alarmadapter /go/src/alarm-adapter/adapter/run_adapter.sh /
-COPY --from=alarmadapter /go/src/alarm-adapter/adapter/alarm-adapter /
-COPY --from=alarmadapter /go/src/alarm-adapter/config/* /
-COPY --from=alarmadapter /usr/local/include /usr/local/include
-COPY --from=alarmadapter /usr/local/lib /usr/local/lib
+COPY --from=ubuntu-alarmadapter /go/src/alarm-adapter/adapter/run_adapter.sh /
+COPY --from=ubuntu-alarmadapter /go/src/alarm-adapter/adapter/alarm-adapter /
+COPY --from=ubuntu-alarmadapter /go/src/alarm-adapter/config/* /
+COPY --from=ubuntu-alarmadapter /usr/local/lib /usr/local/lib
RUN ldconfig
+#!/bin/bash
+
#==================================================================================
# Copyright (c) 2020 AT&T Intellectual Property.
# Copyright (c) 2020 Nokia
# limitations under the License.
#==================================================================================
-set -e
-set -x
+set -eux
+
+echo "--> build_adapter_ubuntu.sh starts"
+
+# Install RMR from deb packages at packagecloud.io
+rmr=rmr_3.2.4_amd64.deb
+wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/$rmr/download.deb
+sudo dpkg -i $rmr
+rm $rmr
+rmrdev=rmr-dev_3.2.4_amd64.deb
+wget --content-disposition https://packagecloud.io/o-ran-sc/staging/packages/debian/stretch/$rmrdev/download.deb
+sudo dpkg -i $rmrdev
+rm $rmrdev
+
+# Required to find nng and rmr libs
+export LD_LIBRARY_PATH=/usr/local/lib
+
+# Go install, build, etc
+export GOPATH=$HOME/go
+export PATH=$GOPATH/bin:$PATH
+
+# xApp-framework stuff
+export CFG_FILE=../config/config-file.json
+export RMR_SEED_RT=../config/uta_rtg.rt
+
+GO111MODULE=on GO_ENABLED=0 GOOS=linux
# setup version tag
if [ -f container-tag.yaml ]
then
tag=$(grep "tag:" container-tag.yaml | awk '{print $2}')
else
- tag="-"
+ tag="no-tag-found"
fi
hash=$(git rev-parse --short HEAD || true)
-export GOPATH=$HOME/go
-export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
-export CFG_FILE=../config/config-file.json
-export RMR_SEED_RT=../config/uta_rtg.rt
-
-GO111MODULE=on GO_ENABLED=0 GOOS=linux
-
# Build
go build -a -installsuffix cgo -ldflags "-X main.Version=$tag -X main.Hash=$hash" -o alarm-adapter ./cmd/*.go
-# Run UT
-cd ../alarm && RMR_SEED_RT=../config/uta_rtg_lib.r go-acc ./
-#go test -v -p 1 -coverprofile cover.out ./cmd/ -c -o ./adapter_test && ./adapter_test
-#cd ../alarm && RMR_SEED_RT=../config/uta_rtg_lib.rt go test . -v -coverprofile cover.out
+# Execute UT and measure coverage for the Alarm Library
+cd ../alarm && RMR_SEED_RT=../config/uta_rtg_lib.rt go test . -v -coverprofile cover.out
+
+# And for the Alarm Adapter
+cd ../adapter && go test -v -p 1 -coverprofile cover.out ./cmd/ -c -o ./adapter_test && ./adapter_test
+
+echo "--> build_adapter_ubuntu.sh ends"
\ No newline at end of file
a := alarmer.NewAlarm(alarm.RIC_RT_DISTRIBUTION_FAILED, alarm.SeverityMajor, "Some App data", "eth 0 1")
assert.Nil(t, alarmer.Raise(a), "raise failed")
- VerifyAlarm(t, a, 1, 0)
+ VerifyAlarm(t, a, 1)
}
func TestAlarmClearedSucess(t *testing.T) {
a := alarmer.NewAlarm(alarm.RIC_RT_DISTRIBUTION_FAILED, alarm.SeverityMajor, "Some App data", "eth 0 1")
assert.Nil(t, alarmer.Raise(a), "raise failed")
- VerifyAlarm(t, a, 1, 0)
+ VerifyAlarm(t, a, 1)
// Now Clear the alarm and check alarm is removed
a = alarmer.NewAlarm(alarm.RIC_RT_DISTRIBUTION_FAILED, alarm.SeverityCleared, "Some App data", "eth 0 1")
b := alarmer.NewAlarm(alarm.TCP_CONNECTIVITY_LOST_TO_DBAAS, alarm.SeverityMinor, "Hello", "abcd 11")
assert.Nil(t, alarmer.Raise(b), "raise failed")
- VerifyAlarm(t, a, 2, 0)
- VerifyAlarm(t, b, 2, 1)
+ VerifyAlarm(t, a, 2)
+ VerifyAlarm(t, b, 2)
}
func TestMultipleAlarmsClearedSucess(t *testing.T) {
assert.Nil(t, alarmer.Raise(a), "raise failed")
assert.Nil(t, alarmer.Raise(a), "raise failed")
- VerifyAlarm(t, a, 1, 0)
+ VerifyAlarm(t, a, 1)
}
func TestInvalidAlarms(t *testing.T) {
assert.Equal(t, true, alarmAdapter.StatusCB())
}
-func VerifyAlarm(t *testing.T, a alarm.Alarm, count, idx int) string {
+func VerifyAlarm(t *testing.T, a alarm.Alarm, expectedCount int) string {
receivedAlert := waitForEvent()
- assert.Equal(t, len(alarmAdapter.activeAlarms), count)
-
- b := alarmAdapter.activeAlarms[idx]
- assert.Equal(t, b.ManagedObjectId, a.ManagedObjectId)
- assert.Equal(t, b.ApplicationId, a.ApplicationId)
- assert.Equal(t, b.SpecificProblem, a.SpecificProblem)
- assert.Equal(t, b.PerceivedSeverity, a.PerceivedSeverity)
- assert.Equal(t, b.AdditionalInfo, a.AdditionalInfo)
- assert.Equal(t, b.IdentifyingInfo, a.IdentifyingInfo)
+ assert.Equal(t, len(alarmAdapter.activeAlarms), expectedCount)
+ _, ok := alarmAdapter.IsMatchFound(a)
+ assert.True(t, ok)
return receivedAlert
}