Loading src/pathcomp/.gitlab-ci.yml +10 −7 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ build pathcomp-backend: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY script: # This first build tags the builder resulting image to prevent being removed by dangling image removal command - docker build -t "${IMAGE_NAME}-backend:builder" --target builder -f ./src/$IMAGE_NAME/backend/Dockerfile . - docker build -t "${IMAGE_NAME}-backend:$IMAGE_TAG-builder" --target builder -f ./src/$IMAGE_NAME/backend/Dockerfile . - docker build -t "${IMAGE_NAME}-backend:$IMAGE_TAG" -f ./src/$IMAGE_NAME/backend/Dockerfile . - docker tag "${IMAGE_NAME}-backend:$IMAGE_TAG" "$CI_REGISTRY_IMAGE/${IMAGE_NAME}-backend:$IMAGE_TAG" - docker push "$CI_REGISTRY_IMAGE/${IMAGE_NAME}-backend:$IMAGE_TAG" Loading Loading @@ -83,11 +83,14 @@ unit test pathcomp-backend: - if docker container ls | grep ${IMAGE_NAME}-backend; then docker rm -f ${IMAGE_NAME}-backend; else echo "${IMAGE_NAME}-backend image is not in the system"; fi script: - docker pull "$CI_REGISTRY_IMAGE/${IMAGE_NAME}-backend:$IMAGE_TAG" - docker run --name ${IMAGE_NAME}-backend -d -p 8081:8081 -v "$PWD/src/${IMAGE_NAME}/backend/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/${IMAGE_NAME}-backend:$IMAGE_TAG - docker run --name ${IMAGE_NAME}-backend -d -p 8081:8081 -v "$PWD/src/${IMAGE_NAME}/backend/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/${IMAGE_NAME}-backend:$IMAGE_TAG-builder - sleep 5 - docker ps -a - docker logs ${IMAGE_NAME}-backend - docker exec -i $IMAGE_NAME-backend bash -c "curl -0 -v -X POST -H 'Content-Type:application/json' http://127.0.0.1:8081/pathComp/api/v1/compRoute -d @/var/teraflow/test/inter_domain_test.txt" - docker exec -i $IMAGE_NAME-backend bash -c "killall -USR1 pathComp-cvr" - docker exec -i $IMAGE_NAME-backend bash -c "gcovr" coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' after_script: - docker rm -f ${IMAGE_NAME}-backend - docker network rm teraflowbridge Loading @@ -103,10 +106,10 @@ unit test pathcomp-backend: - src/$IMAGE_NAME/backend/Dockerfile - manifests/${IMAGE_NAME}service.yaml - .gitlab-ci.yml artifacts: when: always reports: junit: src/$IMAGE_NAME/backend/tests/${IMAGE_NAME}-backend_report.xml #artifacts: # when: always # reports: # junit: src/$IMAGE_NAME/backend/tests/${IMAGE_NAME}-backend_report.xml # Apply unit test to the component unit test pathcomp-frontend: Loading @@ -132,7 +135,7 @@ unit test pathcomp-frontend: - docker logs ${IMAGE_NAME}-frontend - docker logs ${IMAGE_NAME}-backend - docker exec -i $IMAGE_NAME-frontend bash -c "coverage run -m pytest --log-level=INFO --verbose $IMAGE_NAME/frontend/tests/test_unitary.py --junitxml=/opt/results/${IMAGE_NAME}-frontend_report.xml" - docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing" - docker exec -i $IMAGE_NAME-frontend bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing" coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' after_script: - docker rm -f ${IMAGE_NAME}-frontend Loading src/pathcomp/backend/Dockerfile +19 −7 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ FROM ubuntu:20.04 AS builder ARG DEBIAN_FRONTEND=noninteractive # Install build software RUN apt-get update -y && apt-get install build-essential libglib2.0-dev -y RUN apt-get update -y && apt-get install build-essential gcovr libglib2.0-dev -y # mkdir RUN mkdir -p /var/teraflow Loading @@ -29,7 +29,21 @@ WORKDIR /var/teraflow # Copy every file in working directory COPY src/pathcomp/backend/. ./ RUN make # Build release version and move it to bin folder RUN make release RUN mkdir /var/teraflow/bin RUN mv pathComp /var/teraflow/bin # Build code coverage version RUN make clean RUN make coverage EXPOSE 8081 # builder defines coverage version of pathcomp by default ENTRYPOINT [ "./pathComp-cvr", "config/pathcomp.conf", "pathcomp.log" ] # Stage 2 FROM ubuntu:20.04 AS release Loading @@ -39,15 +53,13 @@ ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update -y && apt-get install curl libglib2.0-bin -y # mkdir RUN mkdir -p /var/teraflow RUN mkdir -p /var/teraflow/config # Define working directory WORKDIR /var/teraflow # We make four distinct layers so if there are application changes the library layers can be re-used COPY --from=builder /var/teraflow/ ./ EXPOSE 8081 COPY --from=builder /var/teraflow/bin/pathComp . COPY --from=builder /var/teraflow/config/pathcomp.conf ./config ENTRYPOINT [ "./pathComp", "config/pathcomp.conf", "pathcomp.log" ] src/pathcomp/backend/Makefile +27 −10 Original line number Diff line number Diff line Loading @@ -14,19 +14,36 @@ # limitations under the License. # # Author: CTTC/CERCA PONS RU Ricardo Martínez (ricardo.martinez@cttc.es) CC = gcc # FLAGS = -O6 -Wall -DPOSIX_SOURCE FLAGS = -O0 -ggdb -g CFLAGS = $(FLAGS) -I. -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ -DDEBUG CFLAGS = -I. -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ LDLIBS = -lm LDFLAGS = -g LDFLAGS = all: pathComp release: CFLAGS += -O6 -Wall -DPOSIX_SOURCE release: pathComp debug: CFLAGS += -O0 -ggdb -g -DDEBUG debug: LDFLAGS += -g debug: pathComp-dbg coverage: CFLAGS += -O0 -ggdb -g -DDEBUG -fprofile-arcs -ftest-coverage -DGCOV coverage: LDFLAGS += -g -lgcov --coverage -fprofile-arcs -ftest-coverage -DGCOV coverage: pathComp-cvr pathComp: pathComp.o pathComp_log.o pathComp_cjson.o pathComp_tools.o pathComp_ksp.o pathComp_RESTapi.o gcc -o pathComp pathComp.o pathComp_log.o pathComp_cjson.o pathComp_tools.o pathComp_ksp.o pathComp_RESTapi.o -L/usr/lib/x86_64-linux-gnu/ -lglib-2.0 -luuid $(LDFLAGS) $(LDLIBS) gcc -o pathComp pathComp.o pathComp_log.o pathComp_cjson.o pathComp_tools.o pathComp_ksp.o pathComp_RESTapi.o \ -L/usr/lib/x86_64-linux-gnu/ -lglib-2.0 -luuid $(LDFLAGS) $(LDLIBS) pathComp-dbg: pathComp.o pathComp_log.o pathComp_cjson.o pathComp_tools.o pathComp_ksp.o pathComp_RESTapi.o gcc -o pathComp-dbg pathComp.o pathComp_log.o pathComp_cjson.o pathComp_tools.o pathComp_ksp.o pathComp_RESTapi.o \ -L/usr/lib/x86_64-linux-gnu/ -lglib-2.0 -luuid $(LDFLAGS) $(LDLIBS) # strip pathComp pathComp-cvr: pathComp.o pathComp_log.o pathComp_cjson.o pathComp_tools.o pathComp_ksp.o pathComp_RESTapi.o gcc -o pathComp-cvr pathComp.o pathComp_log.o pathComp_cjson.o pathComp_tools.o pathComp_ksp.o pathComp_RESTapi.o \ -L/usr/lib/x86_64-linux-gnu/ -lglib-2.0 -luuid $(LDFLAGS) $(LDLIBS) pathComp_log.o: pathComp_log.h pathComp_log.c $(CC) $(CFLAGS) -c pathComp_log.c -o pathComp_log.o Loading @@ -47,4 +64,4 @@ pathComp.o: pathComp_log.h pathComp_RESTapi.h pathComp.c pathComp.h $(CC) $(CFLAGS) -c pathComp.c -o pathComp.o clean: rm -f *.o pathComp No newline at end of file rm -f *.o *.gcno *.gcda *.gcov *.log pathComp pathComp-dbg pathComp-cvr src/pathcomp/backend/pathComp.c +28 −2 Original line number Diff line number Diff line Loading @@ -31,6 +31,21 @@ #include <glib.h> #include <sys/time.h> #ifdef GCOV // Instrumentation to report code coverage live // Ref: https://www.osadl.org/fileadmin/dam/interface/docbook/howtos/coverage.pdf #include <signal.h> // Code coverage flush method; used to update code coverage reports while the server is running void __gcov_flush(void); /* check in gcc sources gcc/gcov-io.h for the prototype */ void my_gcov_handler(int signum) { printf("signal received: running __gcov_flush()\n"); __gcov_flush(); /* dump coverage data on receiving SIGUSR1 */ } #endif #include "pathComp_log.h" #include "pathComp_RESTapi.h" #include "pathComp.h" Loading Loading @@ -90,6 +105,17 @@ void read_pathComp_config_file(FILE *fp) ///////////////////////////////////////////////////////////////////////////////////////// int main(int argc, char *argv[]) { #ifdef GCOV struct sigaction new_action, old_action; /* setup signal hander */ new_action.sa_handler = my_gcov_handler; sigemptyset(&new_action.sa_mask); new_action.sa_flags = 0; sigaction(SIGUSR1, NULL, &old_action); if (old_action.sa_handler != SIG_IGN) sigaction (SIGUSR1, &new_action, NULL); #endif DEBUG_PC ("********************************************************************"); DEBUG_PC ("********************************************************************"); DEBUG_PC (" ---------------------- Path Computation Server---------------------"); Loading src/pathcomp/test-deploy.sh→src/pathcomp/test-commands.sh +1 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ # limitations under the License. docker build -t "pathcomp-frontend:latest" -f ./src/pathcomp/frontend/Dockerfile . docker build -t "pathcomp-backend:builder" --target builder -f ./src/pathcomp/backend/Dockerfile . docker build -t "pathcomp-backend:latest" -f ./src/pathcomp/backend/Dockerfile . docker build -t "pathcomp-backend:gdb" -f ./src/pathcomp/backend/Dockerfile-gdb . Loading Loading
src/pathcomp/.gitlab-ci.yml +10 −7 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ build pathcomp-backend: - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY script: # This first build tags the builder resulting image to prevent being removed by dangling image removal command - docker build -t "${IMAGE_NAME}-backend:builder" --target builder -f ./src/$IMAGE_NAME/backend/Dockerfile . - docker build -t "${IMAGE_NAME}-backend:$IMAGE_TAG-builder" --target builder -f ./src/$IMAGE_NAME/backend/Dockerfile . - docker build -t "${IMAGE_NAME}-backend:$IMAGE_TAG" -f ./src/$IMAGE_NAME/backend/Dockerfile . - docker tag "${IMAGE_NAME}-backend:$IMAGE_TAG" "$CI_REGISTRY_IMAGE/${IMAGE_NAME}-backend:$IMAGE_TAG" - docker push "$CI_REGISTRY_IMAGE/${IMAGE_NAME}-backend:$IMAGE_TAG" Loading Loading @@ -83,11 +83,14 @@ unit test pathcomp-backend: - if docker container ls | grep ${IMAGE_NAME}-backend; then docker rm -f ${IMAGE_NAME}-backend; else echo "${IMAGE_NAME}-backend image is not in the system"; fi script: - docker pull "$CI_REGISTRY_IMAGE/${IMAGE_NAME}-backend:$IMAGE_TAG" - docker run --name ${IMAGE_NAME}-backend -d -p 8081:8081 -v "$PWD/src/${IMAGE_NAME}/backend/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/${IMAGE_NAME}-backend:$IMAGE_TAG - docker run --name ${IMAGE_NAME}-backend -d -p 8081:8081 -v "$PWD/src/${IMAGE_NAME}/backend/tests:/opt/results" --network=teraflowbridge $CI_REGISTRY_IMAGE/${IMAGE_NAME}-backend:$IMAGE_TAG-builder - sleep 5 - docker ps -a - docker logs ${IMAGE_NAME}-backend - docker exec -i $IMAGE_NAME-backend bash -c "curl -0 -v -X POST -H 'Content-Type:application/json' http://127.0.0.1:8081/pathComp/api/v1/compRoute -d @/var/teraflow/test/inter_domain_test.txt" - docker exec -i $IMAGE_NAME-backend bash -c "killall -USR1 pathComp-cvr" - docker exec -i $IMAGE_NAME-backend bash -c "gcovr" coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' after_script: - docker rm -f ${IMAGE_NAME}-backend - docker network rm teraflowbridge Loading @@ -103,10 +106,10 @@ unit test pathcomp-backend: - src/$IMAGE_NAME/backend/Dockerfile - manifests/${IMAGE_NAME}service.yaml - .gitlab-ci.yml artifacts: when: always reports: junit: src/$IMAGE_NAME/backend/tests/${IMAGE_NAME}-backend_report.xml #artifacts: # when: always # reports: # junit: src/$IMAGE_NAME/backend/tests/${IMAGE_NAME}-backend_report.xml # Apply unit test to the component unit test pathcomp-frontend: Loading @@ -132,7 +135,7 @@ unit test pathcomp-frontend: - docker logs ${IMAGE_NAME}-frontend - docker logs ${IMAGE_NAME}-backend - docker exec -i $IMAGE_NAME-frontend bash -c "coverage run -m pytest --log-level=INFO --verbose $IMAGE_NAME/frontend/tests/test_unitary.py --junitxml=/opt/results/${IMAGE_NAME}-frontend_report.xml" - docker exec -i $IMAGE_NAME bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing" - docker exec -i $IMAGE_NAME-frontend bash -c "coverage report --include='${IMAGE_NAME}/*' --show-missing" coverage: '/TOTAL\s+\d+\s+\d+\s+(\d+%)/' after_script: - docker rm -f ${IMAGE_NAME}-frontend Loading
src/pathcomp/backend/Dockerfile +19 −7 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ FROM ubuntu:20.04 AS builder ARG DEBIAN_FRONTEND=noninteractive # Install build software RUN apt-get update -y && apt-get install build-essential libglib2.0-dev -y RUN apt-get update -y && apt-get install build-essential gcovr libglib2.0-dev -y # mkdir RUN mkdir -p /var/teraflow Loading @@ -29,7 +29,21 @@ WORKDIR /var/teraflow # Copy every file in working directory COPY src/pathcomp/backend/. ./ RUN make # Build release version and move it to bin folder RUN make release RUN mkdir /var/teraflow/bin RUN mv pathComp /var/teraflow/bin # Build code coverage version RUN make clean RUN make coverage EXPOSE 8081 # builder defines coverage version of pathcomp by default ENTRYPOINT [ "./pathComp-cvr", "config/pathcomp.conf", "pathcomp.log" ] # Stage 2 FROM ubuntu:20.04 AS release Loading @@ -39,15 +53,13 @@ ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update -y && apt-get install curl libglib2.0-bin -y # mkdir RUN mkdir -p /var/teraflow RUN mkdir -p /var/teraflow/config # Define working directory WORKDIR /var/teraflow # We make four distinct layers so if there are application changes the library layers can be re-used COPY --from=builder /var/teraflow/ ./ EXPOSE 8081 COPY --from=builder /var/teraflow/bin/pathComp . COPY --from=builder /var/teraflow/config/pathcomp.conf ./config ENTRYPOINT [ "./pathComp", "config/pathcomp.conf", "pathcomp.log" ]
src/pathcomp/backend/Makefile +27 −10 Original line number Diff line number Diff line Loading @@ -14,19 +14,36 @@ # limitations under the License. # # Author: CTTC/CERCA PONS RU Ricardo Martínez (ricardo.martinez@cttc.es) CC = gcc # FLAGS = -O6 -Wall -DPOSIX_SOURCE FLAGS = -O0 -ggdb -g CFLAGS = $(FLAGS) -I. -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ -DDEBUG CFLAGS = -I. -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include/ LDLIBS = -lm LDFLAGS = -g LDFLAGS = all: pathComp release: CFLAGS += -O6 -Wall -DPOSIX_SOURCE release: pathComp debug: CFLAGS += -O0 -ggdb -g -DDEBUG debug: LDFLAGS += -g debug: pathComp-dbg coverage: CFLAGS += -O0 -ggdb -g -DDEBUG -fprofile-arcs -ftest-coverage -DGCOV coverage: LDFLAGS += -g -lgcov --coverage -fprofile-arcs -ftest-coverage -DGCOV coverage: pathComp-cvr pathComp: pathComp.o pathComp_log.o pathComp_cjson.o pathComp_tools.o pathComp_ksp.o pathComp_RESTapi.o gcc -o pathComp pathComp.o pathComp_log.o pathComp_cjson.o pathComp_tools.o pathComp_ksp.o pathComp_RESTapi.o -L/usr/lib/x86_64-linux-gnu/ -lglib-2.0 -luuid $(LDFLAGS) $(LDLIBS) gcc -o pathComp pathComp.o pathComp_log.o pathComp_cjson.o pathComp_tools.o pathComp_ksp.o pathComp_RESTapi.o \ -L/usr/lib/x86_64-linux-gnu/ -lglib-2.0 -luuid $(LDFLAGS) $(LDLIBS) pathComp-dbg: pathComp.o pathComp_log.o pathComp_cjson.o pathComp_tools.o pathComp_ksp.o pathComp_RESTapi.o gcc -o pathComp-dbg pathComp.o pathComp_log.o pathComp_cjson.o pathComp_tools.o pathComp_ksp.o pathComp_RESTapi.o \ -L/usr/lib/x86_64-linux-gnu/ -lglib-2.0 -luuid $(LDFLAGS) $(LDLIBS) # strip pathComp pathComp-cvr: pathComp.o pathComp_log.o pathComp_cjson.o pathComp_tools.o pathComp_ksp.o pathComp_RESTapi.o gcc -o pathComp-cvr pathComp.o pathComp_log.o pathComp_cjson.o pathComp_tools.o pathComp_ksp.o pathComp_RESTapi.o \ -L/usr/lib/x86_64-linux-gnu/ -lglib-2.0 -luuid $(LDFLAGS) $(LDLIBS) pathComp_log.o: pathComp_log.h pathComp_log.c $(CC) $(CFLAGS) -c pathComp_log.c -o pathComp_log.o Loading @@ -47,4 +64,4 @@ pathComp.o: pathComp_log.h pathComp_RESTapi.h pathComp.c pathComp.h $(CC) $(CFLAGS) -c pathComp.c -o pathComp.o clean: rm -f *.o pathComp No newline at end of file rm -f *.o *.gcno *.gcda *.gcov *.log pathComp pathComp-dbg pathComp-cvr
src/pathcomp/backend/pathComp.c +28 −2 Original line number Diff line number Diff line Loading @@ -31,6 +31,21 @@ #include <glib.h> #include <sys/time.h> #ifdef GCOV // Instrumentation to report code coverage live // Ref: https://www.osadl.org/fileadmin/dam/interface/docbook/howtos/coverage.pdf #include <signal.h> // Code coverage flush method; used to update code coverage reports while the server is running void __gcov_flush(void); /* check in gcc sources gcc/gcov-io.h for the prototype */ void my_gcov_handler(int signum) { printf("signal received: running __gcov_flush()\n"); __gcov_flush(); /* dump coverage data on receiving SIGUSR1 */ } #endif #include "pathComp_log.h" #include "pathComp_RESTapi.h" #include "pathComp.h" Loading Loading @@ -90,6 +105,17 @@ void read_pathComp_config_file(FILE *fp) ///////////////////////////////////////////////////////////////////////////////////////// int main(int argc, char *argv[]) { #ifdef GCOV struct sigaction new_action, old_action; /* setup signal hander */ new_action.sa_handler = my_gcov_handler; sigemptyset(&new_action.sa_mask); new_action.sa_flags = 0; sigaction(SIGUSR1, NULL, &old_action); if (old_action.sa_handler != SIG_IGN) sigaction (SIGUSR1, &new_action, NULL); #endif DEBUG_PC ("********************************************************************"); DEBUG_PC ("********************************************************************"); DEBUG_PC (" ---------------------- Path Computation Server---------------------"); Loading
src/pathcomp/test-deploy.sh→src/pathcomp/test-commands.sh +1 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,7 @@ # limitations under the License. docker build -t "pathcomp-frontend:latest" -f ./src/pathcomp/frontend/Dockerfile . docker build -t "pathcomp-backend:builder" --target builder -f ./src/pathcomp/backend/Dockerfile . docker build -t "pathcomp-backend:latest" -f ./src/pathcomp/backend/Dockerfile . docker build -t "pathcomp-backend:gdb" -f ./src/pathcomp/backend/Dockerfile-gdb . Loading