From ca2998cccefb31752ef2c6d568e463a066ca7114 Mon Sep 17 00:00:00 2001 From: Severin Neumann Date: Tue, 17 Dec 2024 10:20:31 +0100 Subject: [PATCH 1/4] fix apk in curl loader (#29) Signed-off-by: svrnm --- src/loaders/curl/Dockerfile | 2 +- src/loaders/curl/loader.sh | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/loaders/curl/Dockerfile b/src/loaders/curl/Dockerfile index 606e973..46ecc3c 100644 --- a/src/loaders/curl/Dockerfile +++ b/src/loaders/curl/Dockerfile @@ -1,5 +1,5 @@ FROM alpine:3.20.3 -RUN apk add --no-cache curl=8.11.0-r2 util-linux=2.40.1-r1 +RUN apk add --no-cache curl util-linux WORKDIR /usr/bin/ COPY loader.sh /usr/bin RUN chmod +x /usr/bin/loader.sh diff --git a/src/loaders/curl/loader.sh b/src/loaders/curl/loader.sh index d320b40..7e7a250 100755 --- a/src/loaders/curl/loader.sh +++ b/src/loaders/curl/loader.sh @@ -8,7 +8,6 @@ while true; do ID=$(uuidgen) for URL in ${URLS}; do /usr/bin/curl -s "${URL}?unique_session_id=${ID}" - #/usr/bin/curl -s -X POST -d "unique_session_id=${ID}" "${URL}" done sleep "${SLEEP}" -done +done \ No newline at end of file From 76673f0a57b9dd8f4f3b4953624cb321545159c1 Mon Sep 17 00:00:00 2001 From: Severin Neumann Date: Tue, 17 Dec 2024 10:36:45 +0100 Subject: [PATCH 2/4] Add java service to build workflow (#31) --- .github/workflows/reusable-build-container-images.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/reusable-build-container-images.yml b/.github/workflows/reusable-build-container-images.yml index 8fd6795..fe69516 100644 --- a/.github/workflows/reusable-build-container-images.yml +++ b/.github/workflows/reusable-build-container-images.yml @@ -25,6 +25,8 @@ jobs: image: - context: ./src/loaders/curl name: loaders-curl + - context: ./src/services/java + name: services-java steps: - name: Checkout uses: actions/checkout@v4.2.2 From 0ad561372c476e448559a294d852e6bacdba1bf4 Mon Sep 17 00:00:00 2001 From: Severin Neumann Date: Tue, 17 Dec 2024 10:49:10 +0100 Subject: [PATCH 3/4] add docker compose example (#30) Signed-off-by: svrnm --- examples/backend.json | 36 -------------- examples/docker-compose/backend-db.json | 8 ++++ examples/docker-compose/backend.json | 15 ++++++ examples/{ => docker-compose}/database.json | 0 examples/docker-compose/docker-compose.yml | 53 +++++++++++++++++++++ examples/docker-compose/ext-payment.json | 13 +++++ examples/{ => docker-compose}/frontend.json | 4 +- 7 files changed, 91 insertions(+), 38 deletions(-) delete mode 100644 examples/backend.json create mode 100644 examples/docker-compose/backend-db.json create mode 100644 examples/docker-compose/backend.json rename examples/{ => docker-compose}/database.json (100%) create mode 100644 examples/docker-compose/docker-compose.yml create mode 100644 examples/docker-compose/ext-payment.json rename examples/{ => docker-compose}/frontend.json (95%) diff --git a/examples/backend.json b/examples/backend.json deleted file mode 100644 index 44d5b29..0000000 --- a/examples/backend.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "type": "java", - "endpoints": { - "http": { - "/cart/checkout": [ - "sleep,1000", - "sql://backend-db/?query=SELECT * from carts", - ["http://ext-payment-1/pay", "http://ext-payment-2/pay"] - ], - "/cart/add": ["sql://backend-db/?query=SELECT * from carts"], - "error": [{ "call": "error,500,Cart not found", "probability": 0.5 }], - "/data": [ - "sleep,50", - "log,warn,do some logging", - "log,more logging", - { - "call": "data", - "id": "price", - "type": "double", - "value": [1, 2, 3] - }, - { - "call": "data", - "id": "randomThingy", - "chance": "integer,min:5,max:13" - }, - { - "call": "data", - "id": "stuff", - "chance": "letter,casing:upper" - } - ] - } - }, - "name": "backend" -} diff --git a/examples/docker-compose/backend-db.json b/examples/docker-compose/backend-db.json new file mode 100644 index 0000000..98efcac --- /dev/null +++ b/examples/docker-compose/backend-db.json @@ -0,0 +1,8 @@ +{ + "type": "mysql", + "name": "backend-db", + "databases": { + "carts": ["id", "name", "total"] + } + } + \ No newline at end of file diff --git a/examples/docker-compose/backend.json b/examples/docker-compose/backend.json new file mode 100644 index 0000000..36f8a0c --- /dev/null +++ b/examples/docker-compose/backend.json @@ -0,0 +1,15 @@ +{ + "type": "java", + "endpoints": { + "http": { + "/cart/checkout": [ + "sleep,1000", + "sql://backend-db/?query=SELECT * from carts", + ["http://ext-payment-1:8080/pay", "http://ext-payment-2:8080/pay"] + ], + "/cart/add": ["sql://backend-db/?query=SELECT * from carts"], + "error": [{ "call": "error,500,Cart not found", "probability": 0.5 }] + } + }, + "name": "backend" +} diff --git a/examples/database.json b/examples/docker-compose/database.json similarity index 100% rename from examples/database.json rename to examples/docker-compose/database.json diff --git a/examples/docker-compose/docker-compose.yml b/examples/docker-compose/docker-compose.yml new file mode 100644 index 0000000..6862981 --- /dev/null +++ b/examples/docker-compose/docker-compose.yml @@ -0,0 +1,53 @@ +services: + frontend: + image: ghcr.io/cisco-open/app-simulator-services-java:latest + build: + context: ../../src/services/java + dockerfile: Dockerfile + ports: + - "8080:8080" + volumes: + - ./frontend.json:/config.json + backend: + image: ghcr.io/cisco-open/app-simulator-services-java:latest + build: + context: ../../src/services/java + dockerfile: Dockerfile + ports: + - "8090:8080" + volumes: + - ./backend.json:/config.json + ext-payment: + image: ghcr.io/cisco-open/app-simulator-services-java:latest + build: + context: ../../src/services/java + dockerfile: Dockerfile + ports: + - "8091:8080" + volumes: + - ./ext-payment.json:/config.json + networks: + default: + aliases: + - ext-payment-1 + - ext-payment-2 + loader: + image: ghcr.io/cisco-open/app-simulator-loaders-curl:latest + build: + context: ../../src/loaders/curl + dockerfile: Dockerfile + environment: + - URLS=https://frontend:8080/addtocart http://frontend:8080/checkout + - SLEEP=5 + - WAIT=1 +# backend-db: +# image: ghcr.io/cisco-open/app-simulator-databases-mysql:latest +# build: +# context: ../src/databases/mysql +# dockerfile: Dockerfile +# ports: +# - "3306:3306" +# volumes: +# - ./backend-db.json:/config.json +networks: + default: \ No newline at end of file diff --git a/examples/docker-compose/ext-payment.json b/examples/docker-compose/ext-payment.json new file mode 100644 index 0000000..10b8ea9 --- /dev/null +++ b/examples/docker-compose/ext-payment.json @@ -0,0 +1,13 @@ +{ + "type": "java", + "endpoints": { + "http": { + "/pay": [ + "sleep,50", + "log,warn,do some logging", + "log,more logging", + ] + } + }, + "name": "ext-payment" +} diff --git a/examples/frontend.json b/examples/docker-compose/frontend.json similarity index 95% rename from examples/frontend.json rename to examples/docker-compose/frontend.json index 51d1bc3..4627ecc 100644 --- a/examples/frontend.json +++ b/examples/docker-compose/frontend.json @@ -1,5 +1,5 @@ { - "type": "nodejs", + "type": "java", "options": { "connectionDelay": 500, "httpLibrary": "request-promise" @@ -9,7 +9,7 @@ "/logo.png": ["sleep,1000"], "/script.js": ["sleep,5000"], "/checkout": [ - "http://backend/cart/checkout", + "http://backend:8080/cart/checkout", "image,logo.png", "script,script.js", "ajax,cache" From 4c4b0a23676001509dca6d75980991072e4c0522 Mon Sep 17 00:00:00 2001 From: Severin Neumann Date: Tue, 17 Dec 2024 10:50:52 +0100 Subject: [PATCH 4/4] add labels to docker images (#32) Signed-off-by: svrnm --- .github/workflows/build-images-on-commit.yml | 8 +++++--- .github/workflows/check.yml | 8 +++++--- .github/workflows/reusable-build-container-images.yml | 2 +- src/loaders/curl/Dockerfile | 5 +++++ src/services/java/Dockerfile | 5 +++++ 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-images-on-commit.yml b/.github/workflows/build-images-on-commit.yml index adee335..3822ef6 100644 --- a/.github/workflows/build-images-on-commit.yml +++ b/.github/workflows/build-images-on-commit.yml @@ -4,9 +4,11 @@ on: push: branches: [main] paths: - - 'src/loaders/**' - - 'src/services/**' - - '.version' + - "src/loaders/**" + - "src/services/**" + - ".version" + - ".github/workflows/reusable-build-container-images.yml" + - ".github/workflows/build-images-on-commit.yml" workflow_dispatch: jobs: build: diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index c8171a2..2d98f30 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -4,9 +4,11 @@ on: pull_request_target: branches: [main] paths: - - 'src/loaders/**' - - 'src/services/**' - - '.version' + - "src/loaders/**" + - "src/services/**" + - ".version" + - ".github/workflows/reusable-build-container-images.yml" + - ".github/workflows/check.yml" jobs: build: uses: ./.github/workflows/reusable-build-container-images.yml diff --git a/.github/workflows/reusable-build-container-images.yml b/.github/workflows/reusable-build-container-images.yml index fe69516..ed409f1 100644 --- a/.github/workflows/reusable-build-container-images.yml +++ b/.github/workflows/reusable-build-container-images.yml @@ -14,7 +14,7 @@ on: default: dev registry_ghcr: description: github container registry - default: 'ghcr.io/cisco-open/app-simulator' + default: "ghcr.io/cisco-open/app-simulator" required: false type: string jobs: diff --git a/src/loaders/curl/Dockerfile b/src/loaders/curl/Dockerfile index 46ecc3c..d249c05 100644 --- a/src/loaders/curl/Dockerfile +++ b/src/loaders/curl/Dockerfile @@ -1,4 +1,9 @@ FROM alpine:3.20.3 + +LABEL org.opencontainers.image.source https://github.com/cisco-open/app-simulator +LABEL org.opencontainers.image.description="curl loader for app-simulator" +LABEL org.opencontainers.image.licenses=BSD-3-Clause + RUN apk add --no-cache curl util-linux WORKDIR /usr/bin/ COPY loader.sh /usr/bin diff --git a/src/services/java/Dockerfile b/src/services/java/Dockerfile index 6e54258..9716c7e 100644 --- a/src/services/java/Dockerfile +++ b/src/services/java/Dockerfile @@ -5,6 +5,11 @@ COPY pom.xml /home/app RUN mvn -f /home/app/pom.xml clean package FROM openjdk:11-jre + +LABEL org.opencontainers.image.source https://github.com/cisco-open/app-simulator +LABEL org.opencontainers.image.description="java service for app-simulator" +LABEL org.opencontainers.image.licenses=BSD-3-Clause + RUN mkdir -p /app/dependency-jars WORKDIR /app COPY --from=build /home/app/target /app/