@@ -3,13 +3,19 @@ LOCAL_DOCKER_IMAGE := "feedback-fusion"
33LOCAL_PLATFORM := " linux/" + replace (replace (arch (), " x86_64" , " amd64" ), " aarch64" , " arm64" )
44DEFAULT_TEST := " postgres"
55
6- test-all :
6+ test-all : cleanup
7+ cargo llvm-cov clean --workspace
8+
9+ just unittest
710 just test postgres
811 just test mariadb
912 just test mysql
1013 just test mssql
1114 just test skytable
1215
16+ cargo llvm-cov report
17+ cargo llvm-cov report --lcov --output-path coverage.info
18+
1319init :
1420 pre-commit install
1521
@@ -28,8 +34,8 @@ clippy:
2834#
2935
3036build PLATFORM = LOCAL_PLATFORM DOCKERFILE = " ./Dockerfile":
31- @ echo " Building for {{ PLATFORM}} "
32- docker buildx build -t {{ LOCAL_DOCKER_IMAGE}} --platform {{ PLATFORM}} -f {{ DOCKERFILE}} --load .
37+ @ echo " building for {{ PLATFORM}} "
38+ docker buildx build -t {{ LOCAL_DOCKER_IMAGE}} --platform {{ PLATFORM}} -f {{ DOCKERFILE}} --load --build-arg COVERAGE= true .
3339
3440build-all DOCKERFILE = " ./Dockerfile":
3541 just build linux/ arm64 ,linux/ amd64 {{ DOCKERFILE}}
@@ -39,11 +45,19 @@ build-all DOCKERFILE="./Dockerfile":
3945#
4046
4147backend TYPE = DEFAULT_TEST:
42- just build
48+ FEEDBACK_FUSION_CONFIG= " ./tests/_common/configs/ {{ TYPE }} .yaml" RUST_LOG=DEBUG cargo llvm-cov run --no-report > . / target / feedback-fusion.log 2 >& 1 &
4349
44- docker run --name {{ LOCAL_DOCKER_IMAGE}} -d -e FEEDBACK_FUSION_CONFIG=" /etc/feedback-fusion/config.yaml" -v ./ tests/ _common/ configs/ {{ TYPE}} .yaml:/ etc/ feedback-fusion/ config.yaml -e RUST_LOG=DEBUG --network {{ DOCKER_NETWORK}} -p 8000 :8000 {{ LOCAL_DOCKER_IMAGE}}
50+ while ! nc -z localhost 8000 ; do \
51+ sleep 1 ; \
52+ done
53+ @ echo " Application ready"
4554
46- bench : docker oidc-server-mock postgres && cleanup
55+ stop-backend :
56+ @ PID=$(lsof -t -i:8000 ) && if [ -n " $PID" ]; then \
57+ kill -2 $PID; \
58+ fi
59+
60+ bench : oidc-server-mock postgres && cleanup
4761 just backend postgres
4862 GRPC_ENDPOINT=http:// localhost:8000 OIDC_CLIENT_ID=client OIDC_CLIENT_SECRET=secret OIDC_PROVIDER=http:// localhost:5151 cargo bench
4963
@@ -54,32 +68,29 @@ protoc-docs:
5468# Testing requirements
5569#
5670
57- @ docker : cleanup
58- docker network create {{ DOCKER_NETWORK}} > / dev/ null
59-
6071@ oidc-server-mock :
6172 docker compose -f tests/ _common/ oidc-mock/ docker-compose.yaml up -d
62- sleep 5
73+ @ sleep 5
6374 curl -s -o / dev/ null http:// localhost:5151 / .well-known/ openid-configuration
6475
6576@ postgres :
66- docker run --name database -e POSTGRES_PASSWORD=password -e POSTGRES_USERNAME=postgres --network {{ DOCKER_NETWORK }} -d postgres
77+ docker run --name database -e POSTGRES_PASSWORD=password -e POSTGRES_USERNAME=postgres -p 5150 : 5432 -d postgres
6778 sleep 5
6879
6980@ mysql :
70- docker run --name database -e MYSQL_ROOT_PASSWORD=password -e MYSQL_PASSWORD=password -e MYSQL_USER=username -e MYSQL_DATABASE=database --network {{ DOCKER_NETWORK }} -d mysql
81+ docker run --name database -e MYSQL_ROOT_PASSWORD=password -e MYSQL_PASSWORD=password -e MYSQL_USER=username -e MYSQL_DATABASE=database -p 5150 : 3306 -d mysql
7182 sleep 30
7283
7384@ mariadb :
74- docker run --name database -e MYSQL_ROOT_PASSWORD=password -e MYSQL_PASSWORD=password -e MYSQL_USER=username -e MYSQL_DATABASE=database --network {{ DOCKER_NETWORK }} -d mariadb
85+ docker run --name database -e MYSQL_ROOT_PASSWORD=password -e MYSQL_PASSWORD=password -e MYSQL_USER=username -e MYSQL_DATABASE=database -p 5150 : 3306 -d mariadb
7586 sleep 10
7687
7788@ mssql :
78- docker run --name database -e ACCEPT_EULA=Y -e MSSQL_SA_PASSWORD=Password1 --network {{ DOCKER_NETWORK }} -d mcr.microsoft.com/ mssql/ server:2022 -latest
89+ docker run --name database -e ACCEPT_EULA=Y -e MSSQL_SA_PASSWORD=Password1 -p 5150 : 1433 -d mcr.microsoft.com/ mssql/ server:2022 -latest
7990 sleep 10
8091
8192@ skytable : postgres
82- docker run -p 2003 :2003 --entrypoint skyd --rm --name skytable --network {{ DOCKER_NETWORK }} - d skytable/ skytable --auth-root-password=passwordpassword --endpoint=tcp@0.0.0.0 :2003
93+ docker run -p 2003 :2003 --entrypoint skyd --rm --name skytable -d skytable/ skytable --auth-root-password=passwordpassword --endpoint=tcp@0.0.0.0 :2003
8394
8495#
8596# Testing
@@ -88,24 +99,28 @@ protoc-docs:
8899@ cleanup :
89100 - docker rm -f database > / dev/ null 2 >&1
90101 - docker rm -f oidc-server-mock > / dev/ null 2 >&1
91- - docker rm -f feedback-fusion > / dev / null 2 >& 1
102+ - just stop-backend
92103 - docker rm -f skytable > / dev/ null 2 >&1
93104 - docker network rm {{ DOCKER_NETWORK}} > / dev/ null 2 >&1
94105
95106unittest :
96- cargo test --bin feedback-fusion
107+ cargo llvm-cov --bin feedback-fusion --no-report
97108
98109integration :
99- OIDC_PROVIDER=" http://localhost:5151" OIDC_CLIENT_ID=" client" OIDC_CLIENT_SECRET=" secret" RUST_LOG=" INFO" GRPC_ENDPOINT=" http://localhost:8000" cargo test --no-fail-fast --test integration_test || (docker logs feedback-fusion; exit 1 )
110+ OIDC_PROVIDER=" http://localhost:5151" OIDC_CLIENT_ID=" client" OIDC_CLIENT_SECRET=" secret" RUST_LOG=" INFO" GRPC_ENDPOINT=" http://localhost:8000" cargo llvm-cov --no-report --no- fail-fast --test integration_test || (cat . / target / feedback-fusion.log; just stop-backend; cargo llvm-cov report ; exit 1 )
100111
101- test TYPE = DEFAULT_TEST: docker oidc-server-mock
112+ test TYPE = DEFAULT_TEST: oidc-server-mock
102113 just {{ TYPE}}
103- if [ " {{ TYPE}} " = " mariadb" ]; then just backend mysql; else just backend {{ TYPE}} ; fi
104- sleep 1
114+ @ if [ " {{ TYPE}} " = " mariadb" ]; then just backend mysql; else just backend {{ TYPE}} ; fi
115+
105116 just integration
106117
118+ just stop-backend
107119 - docker rm -f database > / dev/ null 2 >&1
108- - docker rm -f feedback-fusion > / dev/ null 2 >&1
120+
121+ coverage :
122+ genhtml -q --output-directory coverage ./ target/ coverage.lcov
123+ cd coverage && python3 -m http.server 3000
109124
110125fuzz :
111126 OIDC_PROVIDER=" http://localhost:5151" OIDC_CLIENT_ID=" client" OIDC_CLIENT_SECRET=" secret" RUST_LOG=" INFO" GRPC_ENDPOINT=" http://localhost:8000" cargo fuzz run fuzz_create_and_export
@@ -156,7 +171,7 @@ dashboard: lib
156171
157172 pnpm run -C dashboard build
158173
159- dashboard-dev : docker oidc-server-mock postgres && cleanup
174+ dashboard-dev : oidc-server-mock postgres && cleanup
160175 just backend postgres
161176 NUXT_PUBLIC_FEEDBACK_FUSION_ENDPOINT=" http://localhost:8000" \
162177 FEEDBACK_FUSION_OIDC_PROVIDER_AUTHORIZATION_URL=" http://localhost:5151/connect/authorize" \
0 commit comments