# See the License for the specific language governing permissions and
# limitations under the License.
-BUILD_DIR=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))
-ROOT_DIR:=$(abspath $(BUILD_DIR)/..)
-
-BUILD_PREFIX?="${USER}-"
+#------------------------------------------------------------------------------
+#
+#-------------------------------------------------------------------- ----------
+ROOT_DIR:=$(dir $(abspath $(lastword $(MAKEFILE_LIST))))
+BUILD_DIR:=$(abspath $(ROOT_DIR)/build)
-XAPP_MGR:=appmgr
-XAPP_MGR_DOCKER:=${BUILD_PREFIX}appmgr
+PACKAGEURL:="gerrit.oran-osc.org/r/ric-plt/appmgr"
+HELMVERSION:=v2.13.0-rc.1
-GOSRC := $(abspath $(BUILD_DIR)/../src)
-GOFILES := $(GOSRC)/*.go
+#------------------------------------------------------------------------------
+#
+#-------------------------------------------------------------------- ----------
COVEROUT := $(abspath $(BUILD_DIR)/cover.out)
COVERHTML := $(abspath $(BUILD_DIR)/cover.html)
+GOOS=$(shell go env GOOS)
GOCMD=go
GOBUILD=$(GOCMD) build -a -installsuffix cgo
GORUN=$(GOCMD) run -a -installsuffix cgo
GOTEST=$(GOCMD) test -v -coverprofile $(COVEROUT)
GOGET=$(GOCMD) get
-HELMVERSION:=v2.13.0-rc.1
+GOFILES := $(shell find $(ROOT_DIR) -name '*.go' -not -name '*_test.go') go.mod go.sum
+GOFILES_NO_VENDOR := $(shell find $(ROOT_DIR) -path ./vendor -prune -o -name "*.go" -not -name '*_test.go' -print)
+
+CMDS:=$(BUILD_DIR)/appmgr
#------------------------------------------------------------------------------
#
#-------------------------------------------------------------------- ----------
-.PHONY: FORCE build deps run unit-test test-pkg test clean docker-base-build docker-base-clean docker-build docker-run docker-clean docker-test-build docker-test-run-unittest docker-test-run-sanity docker-test-run docker-test-clean
-
-.DEFAULT: build
+ .DEFAULT: build
default: build
+.PHONY: FORCE
+
FORCE:
#------------------------------------------------------------------------------
#
#------------------------------------------------------------------------------
-XAPP_MGR_DOCKER:=$(shell echo $(XAPP_MGR_DOCKER) | tr '[:upper:]' '[:lower:]')
+$(CMDS): $(GOFILES)
+ GO111MODULE=on GO_ENABLED=0 GOOS=linux $(GOBUILD) -o $@ ./cmd/$(shell basename "$@")
-#XAPP_MGR_DOCKER:=$(subst /,_,${XAPP_MGR_DOCKER})
-#------------------------------------------------------------------------------
-#
-#------------------------------------------------------------------------------
+$(addsuffix _test,$(CMDS)): $(GOFILES)
+ GO111MODULE=on GO_ENABLED=0 GOOS=linux $(GOTEST) -c -o $@ ./cmd/$(patsubst %_test,%, $(shell basename "$@"))
+ timeout -s KILL 5s $@ -test.coverprofile $(COVEROUT)
+ go tool cover -html=$(COVEROUT) -o $(COVERHTML)
-$(BUILD_DIR)$(XAPP_MGR): deps ${wildcard $(GOFILES)}
- GO_ENABLED=0 GOOS=linux $(GOBUILD) -o $(BUILD_DIR)$(XAPP_MGR) $(GOFILES)
-build: $(BUILD_DIR)$(XAPP_MGR)
+build: $(CMDS)
-deps: ${wildcard $(GOFILES)}
- cd $(GOSRC) && $(GOGET)
-run: $(BUILD_DIR)$(XAPP_MGR)
- $(BUILD_DIR)$(XAPP_MGR) -host-addr="localhost:8080" -helm-host="localhost:31807" -helm-chart="./"
+test: $(addsuffix _test,$(CMDS))
+
+
+test-fmt: $(GOFILES_NO_VENDOR)
+ @(RESULT="$$(gofmt -l $^)"; test -z "$${RESULT}" || (echo -e "gofmt failed:\n$${RESULT}" && false) )
+
+
+fmt: $(GOFILES_NO_VENDOR)
+ gofmt -w -s $^
-unit-test:
- cd $(GOSRC) && $(GOTEST)
- go tool cover -html=$(COVEROUT) -o $(COVERHTML)
clean:
@echo " > Cleaning build cache"
- @-rm -rf $(XAPP_MGR) 2> /dev/null
+ @-rm -rf $(CMDS)* 2> /dev/null
go clean 2> /dev/null
#------------------------------------------------------------------------------
#
#------------------------------------------------------------------------------
-DCKR_BUILD_OPTS:=${DCKR_BUILD_OPTS} --network=host --build-arg HELMVERSION=${HELMVERSION}
+BUILD_PREFIX?="${USER}-"
+
+DCKR_FILE:=docker/Dockerfile
+
+DCKR_NAME:=${BUILD_PREFIX}appmgr
+DCKR_NAME:=$(shell echo $(DCKR_NAME) | tr '[:upper:]' '[:lower:]')
+DCKR_NAME:=$(subst /,_,${DCKR_NAME})
+
+DCKR_BUILD_OPTS:=${DCKR_BUILD_OPTS} --network=host --build-arg HELMVERSION=${HELMVERSION} --build-arg PACKAGEURL=${PACKAGEURL}
DCKR_RUN_OPTS:=${DCKR_RUN_OPTS} --rm -i
DCKR_RUN_OPTS:=${DCKR_RUN_OPTS}$(shell test -t 0 && echo ' -t')
#
#------------------------------------------------------------------------------
docker-name:
- @echo $(XAPP_MGR_DOCKER)
+ @echo $(DCKR_NAME)
docker-build:
- docker build --target release ${DCKR_BUILD_OPTS} -t $(XAPP_MGR_DOCKER) -f Dockerfile ../.
+ docker build --target release ${DCKR_BUILD_OPTS} -t $(DCKR_NAME) -f $(DCKR_FILE) .
docker-run:
- docker run ${DCKR_RUN_OPTS} -v /opt/ric:/opt/ric -p 8080:8080 $(XAPP_MGR_DOCKER)
+ docker run ${DCKR_RUN_OPTS} -v /opt/ric:/opt/ric -p 8080:8080 $(DCKR_NAME)
docker-clean:
- docker rmi $(XAPP_MGR_DOCKER)
+ docker rmi $(DCKR_NAME)
#------------------------------------------------------------------------------
#------------------------------------------------------------------------------
docker-test-build:
- docker build --target test_unit ${DCKR_BUILD_OPTS} -t ${XAPP_MGR_DOCKER}-test_unit -f Dockerfile ../.
- docker build --target test_sanity ${DCKR_BUILD_OPTS} -t ${XAPP_MGR_DOCKER}-test_sanity -f Dockerfile ../.
+ docker build --target test_unit ${DCKR_BUILD_OPTS} -t ${DCKR_NAME}-test_unit -f $(DCKR_FILE) .
+ docker build --target test_sanity ${DCKR_BUILD_OPTS} -t ${DCKR_NAME}-test_sanity -f $(DCKR_FILE) .
+ docker build --target test_fmt ${DCKR_BUILD_OPTS} -t ${DCKR_NAME}-test_fmt -f $(DCKR_FILE) .
docker-test-run-unit:
- docker run ${DCKR_RUN_OPTS} ${XAPP_MGR_DOCKER}-test_unit
+ @( \
+ RETVAL=0;\
+ docker network create --driver bridge ${DCKR_NAME}-test_unit_network;\
+ docker run ${DCKR_RUN_OPTS} -d --name ${DCKR_NAME}-test_unit_redis --network ${DCKR_NAME}-test_unit_network redis;\
+ docker run ${DCKR_RUN_OPTS} --name ${DCKR_NAME}-test_unit_run --network ${DCKR_NAME}-test_unit_network -e DBAAS_SERVICE_HOST=${DCKR_NAME}-test_unit_redis ${DCKR_NAME}-test_unit;\
+ RETVAL=$$?;\
+ docker stop ${DCKR_NAME}-test_unit_redis;\
+ docker network rm ${DCKR_NAME}-test_unit_network;\
+ exit $${RETVAL};\
+ )
-docker-test-run-sanity:
- docker run ${DCKR_RUN_OPTS} ${XAPP_MGR_DOCKER}-test_sanity
-docker-test-run: docker-test-run-sanity docker-test-run-unit
+docker-test-run-fmt:
+ docker run ${DCKR_RUN_OPTS} ${DCKR_NAME}-test_fmt
+
+docker-test-run-sanity:
+ docker run ${DCKR_RUN_OPTS} ${DCKR_NAME}-test_sanity
docker-test-clean:
- docker rmi -f ${XAPP_MGR_DOCKER}-test_unit
- docker rmi -f ${XAPP_MGR_DOCKER}-test_sanity
+ docker rmi -f ${DCKR_NAME}-test_unit
+ docker rmi -f ${DCKR_NAME}-test_sanity
+ docker rmi -f ${DCKR_NAME}-test_fmt