diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5743d9f732630259ad5401b53e39db64536d35d2..9ae3bd53ab352a6f3adf1b8826f8b3fccaeae7d8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -28,7 +28,7 @@ stages: paths: - .gradle before_script: - - cd benchmarks + - cd theodolite-benchmarks - export GRADLE_USER_HOME=`pwd`/.gradle build-benchmarks: @@ -37,8 +37,8 @@ build-benchmarks: script: ./gradlew --build-cache assemble artifacts: paths: - - "benchmarks/build/libs/*.jar" - - "benchmarks/*/build/distributions/*.tar" + - "theodolite-benchmarks/build/libs/*.jar" + - "theodolite-benchmarks/*/build/distributions/*.tar" expire_in: 1 day test-benchmarks: @@ -50,7 +50,7 @@ test-benchmarks: artifacts: reports: junit: - - "benchmarks/**/build/test-results/test/TEST-*.xml" + - "theodolite-benchmarks/**/build/test-results/test/TEST-*.xml" checkstyle-benchmarks: stage: check @@ -61,7 +61,7 @@ checkstyle-benchmarks: script: ./gradlew checkstyle --continue artifacts: paths: - - "benchmarks/*/build/reports/checkstyle/main.html" + - "theodolite-benchmarks/*/build/reports/checkstyle/main.html" when: on_failure expire_in: 1 day @@ -74,7 +74,7 @@ pmd-benchmarks: script: ./gradlew pmd --continue artifacts: paths: - - "benchmarks/*/build/reports/pmd/*.html" + - "theodolite-benchmarks/*/build/reports/pmd/*.html" when: on_failure expire_in: 1 day @@ -87,7 +87,7 @@ spotbugs-benchmarks: script: ./gradlew spotbugs --continue artifacts: paths: - - "benchmarks/*/build/reports/spotbugs/*.html" + - "theodolite-benchmarks/*/build/reports/spotbugs/*.html" when: on_failure expire_in: 1 day @@ -114,10 +114,10 @@ spotbugs-benchmarks: - if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME && $CI_COMMIT_TAG" when: always - changes: - - benchmarks/* - - benchmarks/$JAVA_PROJECT_NAME/**/* - - benchmarks/application-kafkastreams-commons/**/* - - benchmarks/workload-generator-commons/**/* + - theodolite-benchmarks/* + - theodolite-benchmarks/$JAVA_PROJECT_NAME/**/* + - theodolite-benchmarks/application-kafkastreams-commons/**/* + - theodolite-benchmarks/workload-generator-commons/**/* if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME" when: always - if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW && $IMAGE_NAME && $JAVA_PROJECT_NAME" @@ -176,7 +176,7 @@ deploy-uc4-load-generator: # Theodolite Framework .theodolite: - image: openjdk:11-jdk + image: ghcr.io/graalvm/graalvm-ce:java11-21.0.0.2 tags: - exec-docker variables: @@ -189,23 +189,33 @@ deploy-uc4-load-generator: - cd theodolite-quarkus - export GRADLE_USER_HOME=`pwd`/.gradle -build-theodolite: +build-theodolite-jvm: stage: build extends: .theodolite - # script: ./gradlew --build-cache assemble -Dquarkus.package.type=native script: ./gradlew --build-cache assemble artifacts: paths: - "theodolite-quarkus/build/lib/*" - "theodolite-quarkus/build/*-runner.jar" - # - "theodolite-quarkus/build/*-runner" # For native image + expire_in: 1 day + +build-theodolite-native: + stage: build + extends: .theodolite + script: + - gu install native-image # TODO move to image + - ./gradlew --build-cache assemble -Dquarkus.package.type=native + artifacts: + paths: + - "theodolite-quarkus/build/*-runner" expire_in: 1 day test-theodolite: stage: test extends: .theodolite needs: - - build-theodolite + - build-theodolite-jvm + - build-theodolite-native script: ./gradlew test --stacktrace # Disabled for now @@ -213,7 +223,7 @@ test-theodolite: stage: check extends: .theodolite needs: - - build-theodolite + - build-theodolite-jvm - test-theodolite script: ./gradlew ktlintCheck --continue @@ -222,7 +232,7 @@ test-theodolite: stage: check extends: .theodolite needs: - - build-theodolite + - build-theodolite-jvm - test-theodolite script: ./gradlew detekt --continue @@ -232,12 +242,12 @@ deploy-theodolite: - .theodolite - .dind needs: - - build-theodolite + - build-theodolite-native - test-theodolite script: - DOCKER_TAG_NAME=$(echo $CI_COMMIT_REF_SLUG- | sed 's/^master-$//') - #- docker build -f src/main/docker/Dockerfile.native -t theodolite . - - docker build -f src/main/docker/Dockerfile.jvm -t theodolite . + - docker build -f src/main/docker/Dockerfile.native -t theodolite . + #- docker build -f src/main/docker/Dockerfile.jvm -t theodolite . - "[ ! $CI_COMMIT_TAG ] && docker tag theodolite $CR_HOST/$CR_ORG/theodolite:${DOCKER_TAG_NAME}latest" - "[ ! $CI_COMMIT_TAG ] && docker tag theodolite $CR_HOST/$CR_ORG/theodolite:$DOCKER_TAG_NAME$CI_COMMIT_SHORT_SHA" - "[ $CI_COMMIT_TAG ] && docker tag theodolite $CR_HOST/$CR_ORG/theodolite:$CI_COMMIT_TAG" @@ -254,3 +264,30 @@ deploy-theodolite: - if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW" when: manual allow_failure: true + + +# Theodolite Random Scheduler + +deploy-random-scheduler: + stage: deploy + extends: + - .dind + script: + - DOCKER_TAG_NAME=$(echo $CI_COMMIT_REF_SLUG- | sed 's/^master-$//') + - docker build --pull -t theodolite-random-scheduler execution/infrastructure/random-scheduler + - "[ ! $CI_COMMIT_TAG ] && docker tag theodolite-random-scheduler $CR_HOST/$CR_ORG/theodolite-random-scheduler:${DOCKER_TAG_NAME}latest" + - "[ $CI_COMMIT_TAG ] && docker tag theodolite-random-scheduler $CR_HOST/$CR_ORG/theodolite-random-scheduler:$CI_COMMIT_TAG" + - echo $CR_PW | docker login $CR_HOST -u $CR_USER --password-stdin + - docker push $CR_HOST/$CR_ORG/theodolite-random-scheduler + - docker logout + rules: + - if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW && $CI_COMMIT_TAG" + when: always + - changes: + - execution/infrastructure/random-scheduler/**/* + if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW" + when: always + - if: "$CR_HOST && $CR_ORG && $CR_USER && $CR_PW" + when: manual + allow_failure: true + \ No newline at end of file diff --git a/execution/infrastructure/random-scheduler/Dockerfile b/execution/infrastructure/random-scheduler/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..45f8ae9632022b458853013c1a52370c364e0002 --- /dev/null +++ b/execution/infrastructure/random-scheduler/Dockerfile @@ -0,0 +1,10 @@ +FROM alpine:3.12 + +RUN apk update && apk add bash curl jq +RUN curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl \ + && chmod +x ./kubectl \ + && mv ./kubectl /usr/local/bin/kubectl + +ADD schedule.sh /bin/schedule + +CMD /bin/schedule diff --git a/execution/infrastructure/random-scheduler/README.md b/execution/infrastructure/random-scheduler/README.md new file mode 100644 index 0000000000000000000000000000000000000000..59b9acb0aefd48a5afe581ebb96d871370760b10 --- /dev/null +++ b/execution/infrastructure/random-scheduler/README.md @@ -0,0 +1,12 @@ +# Theodolite Random Scheduler +This directory contains the Theodolite Random Scheduler that schedules pods on random nodes. + +## Build and Push +Run the following commands + +- `docker build -t theodolite-random-scheduler .` +- `docker tag theodolite-random-scheduler <user>/theodolite-random-scheduler` +- `docker push <user>/theodolite-random-scheduler` + +## Deployment +Deploy the `deployment.yaml` file into Kubernetes. Note, that the `TARGET_NAMESPACE` environment variable specifies the operating namespace of the random scheduler. diff --git a/execution/infrastructure/random-scheduler/deployment.yaml b/execution/infrastructure/random-scheduler/deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3c8c0ed5a8657146c1e9aba3e6715ec9c6456651 --- /dev/null +++ b/execution/infrastructure/random-scheduler/deployment.yaml @@ -0,0 +1,25 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: random-scheduler + labels: + app: random-scheduler + namespace: kube-system +spec: + replicas: 1 + selector: + matchLabels: + app: random-scheduler + template: + metadata: + labels: + app: random-scheduler + spec: + serviceAccount: random-scheduler + containers: + - name: random-scheduler + image: ghcr.io/cau-se/theodolite-random-scheduler:latest + imagePullPolicy: Always + env: + - name: TARGET_NAMESPACE + value: default diff --git a/execution/infrastructure/random-scheduler/rbac.yaml b/execution/infrastructure/random-scheduler/rbac.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ba463cc54a575730cacac6b905603892572b11ec --- /dev/null +++ b/execution/infrastructure/random-scheduler/rbac.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + namespace: kube-system + name: random-scheduler + labels: + app: random-scheduler + component: random-scheduler +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: random-scheduler +subjects: +- kind: ServiceAccount + name: random-scheduler + namespace: kube-system +roleRef: + kind: ClusterRole + apiGroup: rbac.authorization.k8s.io + name: system:kube-scheduler \ No newline at end of file diff --git a/execution/infrastructure/random-scheduler/schedule.sh b/execution/infrastructure/random-scheduler/schedule.sh new file mode 100755 index 0000000000000000000000000000000000000000..e2e10c0abbdd06da5f5075cd21851331ffb593fe --- /dev/null +++ b/execution/infrastructure/random-scheduler/schedule.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +# use kubectl in proxy mode in order to allow curl requesting the k8's api server +kubectl proxy --port 8080 & + +echo "Target Namespace: $TARGET_NAMESPACE" +while true; +do + for PODNAME in $(kubectl get pods -n $TARGET_NAMESPACE -o json | jq '.items[] | select(.spec.schedulerName == "random-scheduler") | select(.spec.nodeName == null) | .metadata.name' | tr -d '"'); + do + NODES=($(kubectl get nodes -o json | jq '.items[].metadata.name' | tr -d '"')) + NUMNODES=${#NODES[@]} + CHOSEN=${NODES[$[$RANDOM % $NUMNODES]]} + curl --header "Content-Type:application/json" --request POST --data '{"apiVersion":"v1", "kind": "Binding", "metadata": {"name": "'$PODNAME'"}, "target": {"apiVersion": "v1", "kind": "Node", "name": "'$CHOSEN'"}}' localhost:8080/api/v1/namespaces/$TARGET_NAMESPACE/pods/$PODNAME/binding/ + echo "Assigned $PODNAME to $CHOSEN" + done + sleep 1 +done \ No newline at end of file diff --git a/slope-evaluator/Dockerfile b/slope-evaluator/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..032b8153a6989ca04631ba553289dacb3620a38d --- /dev/null +++ b/slope-evaluator/Dockerfile @@ -0,0 +1,6 @@ +FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7 + +COPY requirements.txt requirements.txt +RUN pip install -r requirements.txt + +COPY ./app /app \ No newline at end of file diff --git a/slope-evaluator/README.md b/slope-evaluator/README.md new file mode 100644 index 0000000000000000000000000000000000000000..25c02b42e6a6eb4611972febf935403b8b8703c8 --- /dev/null +++ b/slope-evaluator/README.md @@ -0,0 +1,26 @@ +# Lag Trend SLO Evaluator + +## Execution + +For development: + +```sh +uvicorn main:app --reload +``` + +Build the docker image: + +```sh +docker build . -t theodolite-evaluator +``` + +Run the Docker image: + +```sh + docker run -p 80:80 theodolite-evaluator +``` + +## Configuration + +You can set the `HOST` and the `PORT` (and a lot of more parameters) via environment variables. Default is `0.0.0.0:80`. +For more information see [here](https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker#advanced-usage). diff --git a/slope-evaluator/app/main.py b/slope-evaluator/app/main.py new file mode 100644 index 0000000000000000000000000000000000000000..83709c0f71563d9bd1c29c5f064645144163ea72 --- /dev/null +++ b/slope-evaluator/app/main.py @@ -0,0 +1,51 @@ +from fastapi import FastAPI,Request +import trend_slope_computer as trend_slope_computer +import logging +import os +import pandas as pd +import json +import sys + +app = FastAPI() + +logging.basicConfig(stream=sys.stdout, + format="%(asctime)s %(levelname)s %(name)s: %(message)s") +logger = logging.getLogger("API") + + +if os.getenv('LOG_LEVEL') == 'INFO': + logger.setLevel(logging.INFO) +elif os.getenv('LOG_LEVEL') == 'WARNING': + logger.setLevel(logging.WARNING) +elif os.getenv('LOG_LEVEL') == 'DEBUG': + logger.setLevel((logging.DEBUG)) + +def execute(results, threshold, warmup): + d = [] + for result in results: + group = result['metric']['group'] + for value in result['values']: + d.append({'group': group, 'timestamp': int( + value[0]), 'value': int(value[1]) if value[1] != 'NaN' else 0}) + + df = pd.DataFrame(d) + + logger.info(df) + try: + trend_slope = trend_slope_computer.compute(df, warmup) + except Exception as e: + err_msg = 'Computing trend slope failed' + logger.exception(err_msg) + logger.error('Mark this subexperiment as not successful and continue benchmark') + return False + + logger.info("Trend Slope: %s", trend_slope) + + return trend_slope < threshold + +@app.post("/evaluate-slope",response_model=bool) +async def evaluate_slope(request: Request): + data = json.loads(await request.body()) + return execute(data['total_lag'], data['threshold'], data['warmup']) + +logger.info("Slope evaluator is online") \ No newline at end of file diff --git a/slope-evaluator/app/trend_slope_computer.py b/slope-evaluator/app/trend_slope_computer.py new file mode 100644 index 0000000000000000000000000000000000000000..c128d9f48c1e7ba20e43dfbfd6a0391eeec2b60b --- /dev/null +++ b/slope-evaluator/app/trend_slope_computer.py @@ -0,0 +1,18 @@ +from sklearn.linear_model import LinearRegression +import pandas as pd +import os + +def compute(x, warmup_sec): + input = x + input['sec_start'] = input.loc[0:, 'timestamp'] - input.iloc[0]['timestamp'] + regress = input.loc[input['sec_start'] >= warmup_sec] # Warm-Up + + X = regress.iloc[:, 2].values.reshape(-1, 1) # values converts it into a numpy array + Y = regress.iloc[:, 3].values.reshape(-1, 1) # -1 means that calculate the dimension of rows, but have 1 column + linear_regressor = LinearRegression() # create object for the class + linear_regressor.fit(X, Y) # perform linear regression + Y_pred = linear_regressor.predict(X) # make predictions + + trend_slope = linear_regressor.coef_[0][0] + + return trend_slope diff --git a/slope-evaluator/requirements.txt b/slope-evaluator/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..ca77b6c891136b1388aaf56c5ae269d6ee4b5729 --- /dev/null +++ b/slope-evaluator/requirements.txt @@ -0,0 +1,3 @@ +fastapi==0.55.1 +scikit-learn==0.20.3 +pandas==1.0.3 diff --git a/benchmarks/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/.settings/org.eclipse.jdt.ui.prefs similarity index 100% rename from benchmarks/.settings/org.eclipse.jdt.ui.prefs rename to theodolite-benchmarks/.settings/org.eclipse.jdt.ui.prefs diff --git a/benchmarks/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/.settings/qa.eclipse.plugin.checkstyle.prefs similarity index 100% rename from benchmarks/.settings/qa.eclipse.plugin.checkstyle.prefs rename to theodolite-benchmarks/.settings/qa.eclipse.plugin.checkstyle.prefs diff --git a/benchmarks/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/.settings/qa.eclipse.plugin.pmd.prefs similarity index 100% rename from benchmarks/.settings/qa.eclipse.plugin.pmd.prefs rename to theodolite-benchmarks/.settings/qa.eclipse.plugin.pmd.prefs diff --git a/benchmarks/application-kafkastreams-commons/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/application-kafkastreams-commons/.settings/org.eclipse.jdt.ui.prefs similarity index 100% rename from benchmarks/application-kafkastreams-commons/.settings/org.eclipse.jdt.ui.prefs rename to theodolite-benchmarks/application-kafkastreams-commons/.settings/org.eclipse.jdt.ui.prefs diff --git a/benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.checkstyle.prefs similarity index 100% rename from benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.checkstyle.prefs rename to theodolite-benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.checkstyle.prefs diff --git a/benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.pmd.prefs similarity index 100% rename from benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.pmd.prefs rename to theodolite-benchmarks/application-kafkastreams-commons/.settings/qa.eclipse.plugin.pmd.prefs diff --git a/benchmarks/application-kafkastreams-commons/build.gradle b/theodolite-benchmarks/application-kafkastreams-commons/build.gradle similarity index 100% rename from benchmarks/application-kafkastreams-commons/build.gradle rename to theodolite-benchmarks/application-kafkastreams-commons/build.gradle diff --git a/benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/ConfigurationKeys.java b/theodolite-benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/ConfigurationKeys.java similarity index 100% rename from benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/ConfigurationKeys.java rename to theodolite-benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/ConfigurationKeys.java diff --git a/benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/KafkaStreamsBuilder.java b/theodolite-benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/KafkaStreamsBuilder.java similarity index 100% rename from benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/KafkaStreamsBuilder.java rename to theodolite-benchmarks/application-kafkastreams-commons/src/main/java/theodolite/commons/kafkastreams/KafkaStreamsBuilder.java diff --git a/benchmarks/build.gradle b/theodolite-benchmarks/build.gradle similarity index 100% rename from benchmarks/build.gradle rename to theodolite-benchmarks/build.gradle diff --git a/benchmarks/config/README.md b/theodolite-benchmarks/config/README.md similarity index 100% rename from benchmarks/config/README.md rename to theodolite-benchmarks/config/README.md diff --git a/benchmarks/config/checkstyle-suppression.xml b/theodolite-benchmarks/config/checkstyle-suppression.xml similarity index 100% rename from benchmarks/config/checkstyle-suppression.xml rename to theodolite-benchmarks/config/checkstyle-suppression.xml diff --git a/benchmarks/config/checkstyle.xml b/theodolite-benchmarks/config/checkstyle.xml similarity index 100% rename from benchmarks/config/checkstyle.xml rename to theodolite-benchmarks/config/checkstyle.xml diff --git a/benchmarks/config/eclipse-cleanup.xml b/theodolite-benchmarks/config/eclipse-cleanup.xml similarity index 100% rename from benchmarks/config/eclipse-cleanup.xml rename to theodolite-benchmarks/config/eclipse-cleanup.xml diff --git a/benchmarks/config/eclipse-formatter.xml b/theodolite-benchmarks/config/eclipse-formatter.xml similarity index 100% rename from benchmarks/config/eclipse-formatter.xml rename to theodolite-benchmarks/config/eclipse-formatter.xml diff --git a/benchmarks/config/eclipse-import-order.importorder b/theodolite-benchmarks/config/eclipse-import-order.importorder similarity index 100% rename from benchmarks/config/eclipse-import-order.importorder rename to theodolite-benchmarks/config/eclipse-import-order.importorder diff --git a/benchmarks/config/pmd.xml b/theodolite-benchmarks/config/pmd.xml similarity index 100% rename from benchmarks/config/pmd.xml rename to theodolite-benchmarks/config/pmd.xml diff --git a/benchmarks/config/spotbugs-exclude-filter.xml b/theodolite-benchmarks/config/spotbugs-exclude-filter.xml similarity index 100% rename from benchmarks/config/spotbugs-exclude-filter.xml rename to theodolite-benchmarks/config/spotbugs-exclude-filter.xml diff --git a/docker-test/uc1-docker-compose/docker-compose.yml b/theodolite-benchmarks/docker-test/uc1-docker-compose/docker-compose.yml similarity index 91% rename from docker-test/uc1-docker-compose/docker-compose.yml rename to theodolite-benchmarks/docker-test/uc1-docker-compose/docker-compose.yml index cdc9df40257362934a93fcbe2de24b6035d40bca..41d981bc4a2d770d42da39c96005d3ed6fcefef5 100755 --- a/docker-test/uc1-docker-compose/docker-compose.yml +++ b/theodolite-benchmarks/docker-test/uc1-docker-compose/docker-compose.yml @@ -32,7 +32,7 @@ services: SCHEMA_REGISTRY_HOST_NAME: schema-registry SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: 'zookeeper:2181' uc-app: - image: theodolite/theodolite-uc1-kstreams-app:latest + image: ghcr.io/cau-se/theodolite-uc1-kstreams-app:latest depends_on: - schema-registry - kafka @@ -40,7 +40,7 @@ services: KAFKA_BOOTSTRAP_SERVERS: kafka:9092 SCHEMA_REGISTRY_URL: http://schema-registry:8081 uc-wg: - image: theodolite/theodolite-uc1-workload-generator:latest + image: ghcr.io/cau-se/theodolite-uc1-workload-generator:latest depends_on: - schema-registry - kafka diff --git a/docker-test/uc2-docker-compose/docker-compose.yml b/theodolite-benchmarks/docker-test/uc2-docker-compose/docker-compose.yml similarity index 92% rename from docker-test/uc2-docker-compose/docker-compose.yml rename to theodolite-benchmarks/docker-test/uc2-docker-compose/docker-compose.yml index 613553fcfa53122205b6e58d85fb7225eae90d7c..6bb0c1e7d5afccab7724c40eabc30d4c01d59cb6 100755 --- a/docker-test/uc2-docker-compose/docker-compose.yml +++ b/theodolite-benchmarks/docker-test/uc2-docker-compose/docker-compose.yml @@ -33,7 +33,7 @@ services: SCHEMA_REGISTRY_HOST_NAME: schema-registry SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: 'zookeeper:2181' uc-app: - image: theodolite/theodolite-uc2-kstreams-app:latest + image: ghcr.io/cau-se/theodolite-uc2-kstreams-app:latest depends_on: - schema-registry - kafka @@ -42,7 +42,7 @@ services: SCHEMA_REGISTRY_URL: http://schema-registry:8081 KAFKA_WINDOW_DURATION_MINUTES: 60 uc-wg: - image: theodolite/theodolite-uc2-workload-generator:latest + image: ghcr.io/cau-se/theodolite-uc2-workload-generator:latest depends_on: - schema-registry - kafka diff --git a/docker-test/uc3-docker-compose/docker-compose.yml b/theodolite-benchmarks/docker-test/uc3-docker-compose/docker-compose.yml similarity index 92% rename from docker-test/uc3-docker-compose/docker-compose.yml rename to theodolite-benchmarks/docker-test/uc3-docker-compose/docker-compose.yml index d321318b4024b678cf8f37007e90dc62a2042ece..b4ae8c16f9fc21164134aad62e6ef776225fc7db 100755 --- a/docker-test/uc3-docker-compose/docker-compose.yml +++ b/theodolite-benchmarks/docker-test/uc3-docker-compose/docker-compose.yml @@ -33,7 +33,7 @@ services: SCHEMA_REGISTRY_HOST_NAME: schema-registry SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: 'zookeeper:2181' uc-app: - image: theodolite/theodolite-uc3-kstreams-app:latest + image: ghcr.io/cau-se/theodolite-uc3-kstreams-app:latest depends_on: - schema-registry - kafka @@ -41,7 +41,7 @@ services: KAFKA_BOOTSTRAP_SERVERS: kafka:9092 SCHEMA_REGISTRY_URL: http://schema-registry:8081 uc-wg: - image: theodolite/theodolite-uc3-workload-generator:latest + image: ghcr.io/cau-se/theodolite-uc3-workload-generator:latest depends_on: - schema-registry - kafka diff --git a/docker-test/uc4-docker-compose/docker-compose.yml b/theodolite-benchmarks/docker-test/uc4-docker-compose/docker-compose.yml similarity index 92% rename from docker-test/uc4-docker-compose/docker-compose.yml rename to theodolite-benchmarks/docker-test/uc4-docker-compose/docker-compose.yml index d478d74e55a1b5423a390c624848b20f5faf2969..14b1c1ad38379f45682c8fffa263ca9c9ada2d4d 100755 --- a/docker-test/uc4-docker-compose/docker-compose.yml +++ b/theodolite-benchmarks/docker-test/uc4-docker-compose/docker-compose.yml @@ -32,7 +32,7 @@ services: SCHEMA_REGISTRY_HOST_NAME: schema-registry SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: 'zookeeper:2181' uc-app: - image: theodolite/theodolite-uc4-kstreams-app:latest + image: ghcr.io/cau-se/theodolite-uc4-kstreams-app:latest depends_on: - schema-registry - kafka @@ -40,7 +40,7 @@ services: KAFKA_BOOTSTRAP_SERVERS: kafka:9092 SCHEMA_REGISTRY_URL: http://schema-registry:8081 uc-wg: - image: theodolite/theodolite-uc4-workload-generator:latest + image: ghcr.io/cau-se/theodolite-uc4-workload-generator:latest depends_on: - schema-registry - kafka diff --git a/benchmarks/gradle/wrapper/gradle-wrapper.jar b/theodolite-benchmarks/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from benchmarks/gradle/wrapper/gradle-wrapper.jar rename to theodolite-benchmarks/gradle/wrapper/gradle-wrapper.jar diff --git a/benchmarks/gradle/wrapper/gradle-wrapper.properties b/theodolite-benchmarks/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from benchmarks/gradle/wrapper/gradle-wrapper.properties rename to theodolite-benchmarks/gradle/wrapper/gradle-wrapper.properties diff --git a/benchmarks/gradlew b/theodolite-benchmarks/gradlew similarity index 100% rename from benchmarks/gradlew rename to theodolite-benchmarks/gradlew diff --git a/benchmarks/gradlew.bat b/theodolite-benchmarks/gradlew.bat similarity index 100% rename from benchmarks/gradlew.bat rename to theodolite-benchmarks/gradlew.bat diff --git a/benchmarks/settings.gradle b/theodolite-benchmarks/settings.gradle similarity index 87% rename from benchmarks/settings.gradle rename to theodolite-benchmarks/settings.gradle index 9104525ce160a25957f9731f820a723b4f36f7d5..5c524a57cedbfdaff4aa8e3e39ed3a07711948bc 100644 --- a/benchmarks/settings.gradle +++ b/theodolite-benchmarks/settings.gradle @@ -1,4 +1,4 @@ -rootProject.name = 'scalability-benchmarking' +rootProject.name = 'theodolite-benchmarks' include 'workload-generator-commons' include 'application-kafkastreams-commons' diff --git a/benchmarks/uc1-application/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc1-application/.settings/org.eclipse.jdt.ui.prefs similarity index 100% rename from benchmarks/uc1-application/.settings/org.eclipse.jdt.ui.prefs rename to theodolite-benchmarks/uc1-application/.settings/org.eclipse.jdt.ui.prefs diff --git a/benchmarks/uc1-application/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc1-application/.settings/qa.eclipse.plugin.checkstyle.prefs similarity index 100% rename from benchmarks/uc1-application/.settings/qa.eclipse.plugin.checkstyle.prefs rename to theodolite-benchmarks/uc1-application/.settings/qa.eclipse.plugin.checkstyle.prefs diff --git a/benchmarks/uc1-application/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc1-application/.settings/qa.eclipse.plugin.pmd.prefs similarity index 100% rename from benchmarks/uc1-application/.settings/qa.eclipse.plugin.pmd.prefs rename to theodolite-benchmarks/uc1-application/.settings/qa.eclipse.plugin.pmd.prefs diff --git a/benchmarks/uc1-application/Dockerfile b/theodolite-benchmarks/uc1-application/Dockerfile similarity index 100% rename from benchmarks/uc1-application/Dockerfile rename to theodolite-benchmarks/uc1-application/Dockerfile diff --git a/benchmarks/uc1-application/build.gradle b/theodolite-benchmarks/uc1-application/build.gradle similarity index 100% rename from benchmarks/uc1-application/build.gradle rename to theodolite-benchmarks/uc1-application/build.gradle diff --git a/benchmarks/uc1-application/src/main/java/theodolite/uc1/application/HistoryService.java b/theodolite-benchmarks/uc1-application/src/main/java/theodolite/uc1/application/HistoryService.java similarity index 100% rename from benchmarks/uc1-application/src/main/java/theodolite/uc1/application/HistoryService.java rename to theodolite-benchmarks/uc1-application/src/main/java/theodolite/uc1/application/HistoryService.java diff --git a/benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/TopologyBuilder.java b/theodolite-benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/TopologyBuilder.java similarity index 100% rename from benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/TopologyBuilder.java rename to theodolite-benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/TopologyBuilder.java diff --git a/benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/Uc1KafkaStreamsBuilder.java b/theodolite-benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/Uc1KafkaStreamsBuilder.java similarity index 100% rename from benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/Uc1KafkaStreamsBuilder.java rename to theodolite-benchmarks/uc1-application/src/main/java/theodolite/uc1/streamprocessing/Uc1KafkaStreamsBuilder.java diff --git a/benchmarks/uc1-application/src/main/resources/META-INF/application.properties b/theodolite-benchmarks/uc1-application/src/main/resources/META-INF/application.properties similarity index 100% rename from benchmarks/uc1-application/src/main/resources/META-INF/application.properties rename to theodolite-benchmarks/uc1-application/src/main/resources/META-INF/application.properties diff --git a/benchmarks/uc1-workload-generator/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc1-workload-generator/.settings/org.eclipse.jdt.ui.prefs similarity index 100% rename from benchmarks/uc1-workload-generator/.settings/org.eclipse.jdt.ui.prefs rename to theodolite-benchmarks/uc1-workload-generator/.settings/org.eclipse.jdt.ui.prefs diff --git a/benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs similarity index 100% rename from benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs rename to theodolite-benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs diff --git a/benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs similarity index 100% rename from benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs rename to theodolite-benchmarks/uc1-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs diff --git a/benchmarks/uc1-workload-generator/Dockerfile b/theodolite-benchmarks/uc1-workload-generator/Dockerfile similarity index 100% rename from benchmarks/uc1-workload-generator/Dockerfile rename to theodolite-benchmarks/uc1-workload-generator/Dockerfile diff --git a/benchmarks/uc1-workload-generator/build.gradle b/theodolite-benchmarks/uc1-workload-generator/build.gradle similarity index 100% rename from benchmarks/uc1-workload-generator/build.gradle rename to theodolite-benchmarks/uc1-workload-generator/build.gradle diff --git a/benchmarks/uc1-workload-generator/src/main/java/theodolite/uc1/workloadgenerator/LoadGenerator.java b/theodolite-benchmarks/uc1-workload-generator/src/main/java/theodolite/uc1/workloadgenerator/LoadGenerator.java similarity index 100% rename from benchmarks/uc1-workload-generator/src/main/java/theodolite/uc1/workloadgenerator/LoadGenerator.java rename to theodolite-benchmarks/uc1-workload-generator/src/main/java/theodolite/uc1/workloadgenerator/LoadGenerator.java diff --git a/benchmarks/uc2-application/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc2-application/.settings/org.eclipse.jdt.ui.prefs similarity index 100% rename from benchmarks/uc2-application/.settings/org.eclipse.jdt.ui.prefs rename to theodolite-benchmarks/uc2-application/.settings/org.eclipse.jdt.ui.prefs diff --git a/benchmarks/uc2-application/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc2-application/.settings/qa.eclipse.plugin.checkstyle.prefs similarity index 100% rename from benchmarks/uc2-application/.settings/qa.eclipse.plugin.checkstyle.prefs rename to theodolite-benchmarks/uc2-application/.settings/qa.eclipse.plugin.checkstyle.prefs diff --git a/benchmarks/uc2-application/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc2-application/.settings/qa.eclipse.plugin.pmd.prefs similarity index 100% rename from benchmarks/uc2-application/.settings/qa.eclipse.plugin.pmd.prefs rename to theodolite-benchmarks/uc2-application/.settings/qa.eclipse.plugin.pmd.prefs diff --git a/benchmarks/uc2-application/Dockerfile b/theodolite-benchmarks/uc2-application/Dockerfile similarity index 100% rename from benchmarks/uc2-application/Dockerfile rename to theodolite-benchmarks/uc2-application/Dockerfile diff --git a/benchmarks/uc2-application/build.gradle b/theodolite-benchmarks/uc2-application/build.gradle similarity index 100% rename from benchmarks/uc2-application/build.gradle rename to theodolite-benchmarks/uc2-application/build.gradle diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/application/HistoryService.java b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/application/HistoryService.java similarity index 100% rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/application/HistoryService.java rename to theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/application/HistoryService.java diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java similarity index 100% rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java rename to theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/TopologyBuilder.java diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java similarity index 100% rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java rename to theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/Uc2KafkaStreamsBuilder.java diff --git a/benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/util/StatsFactory.java b/theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/util/StatsFactory.java similarity index 100% rename from benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/util/StatsFactory.java rename to theodolite-benchmarks/uc2-application/src/main/java/theodolite/uc2/streamprocessing/util/StatsFactory.java diff --git a/benchmarks/uc2-application/src/main/resources/META-INF/application.properties b/theodolite-benchmarks/uc2-application/src/main/resources/META-INF/application.properties similarity index 100% rename from benchmarks/uc2-application/src/main/resources/META-INF/application.properties rename to theodolite-benchmarks/uc2-application/src/main/resources/META-INF/application.properties diff --git a/benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc2-workload-generator/.settings/org.eclipse.jdt.ui.prefs similarity index 99% rename from benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs rename to theodolite-benchmarks/uc2-workload-generator/.settings/org.eclipse.jdt.ui.prefs index fa98ca63d77bdee891150bd6713f70197a75cefc..4d01df75552c562406705858b6368ecf59d6e82f 100644 --- a/benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs +++ b/theodolite-benchmarks/uc2-workload-generator/.settings/org.eclipse.jdt.ui.prefs @@ -66,6 +66,7 @@ org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=; org.eclipse.jdt.ui.ondemandthreshold=99 org.eclipse.jdt.ui.staticondemandthreshold=99 +org.eclipse.jdt.ui.text.custom_code_templates= sp_cleanup.add_default_serial_version_id=true sp_cleanup.add_generated_serial_version_id=false sp_cleanup.add_missing_annotations=true diff --git a/benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs similarity index 100% rename from benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs rename to theodolite-benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs diff --git a/benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs similarity index 100% rename from benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs rename to theodolite-benchmarks/uc2-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs diff --git a/benchmarks/uc2-workload-generator/Dockerfile b/theodolite-benchmarks/uc2-workload-generator/Dockerfile similarity index 100% rename from benchmarks/uc2-workload-generator/Dockerfile rename to theodolite-benchmarks/uc2-workload-generator/Dockerfile diff --git a/benchmarks/uc2-workload-generator/build.gradle b/theodolite-benchmarks/uc2-workload-generator/build.gradle similarity index 100% rename from benchmarks/uc2-workload-generator/build.gradle rename to theodolite-benchmarks/uc2-workload-generator/build.gradle diff --git a/benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java b/theodolite-benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java similarity index 100% rename from benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java rename to theodolite-benchmarks/uc2-workload-generator/src/main/java/theodolite/uc2/workloadgenerator/LoadGenerator.java diff --git a/benchmarks/uc2-workload-generator/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc3-application/.settings/org.eclipse.jdt.ui.prefs similarity index 100% rename from benchmarks/uc2-workload-generator/.settings/org.eclipse.jdt.ui.prefs rename to theodolite-benchmarks/uc3-application/.settings/org.eclipse.jdt.ui.prefs diff --git a/benchmarks/uc3-application/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc3-application/.settings/qa.eclipse.plugin.checkstyle.prefs similarity index 100% rename from benchmarks/uc3-application/.settings/qa.eclipse.plugin.checkstyle.prefs rename to theodolite-benchmarks/uc3-application/.settings/qa.eclipse.plugin.checkstyle.prefs diff --git a/benchmarks/uc3-application/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc3-application/.settings/qa.eclipse.plugin.pmd.prefs similarity index 100% rename from benchmarks/uc3-application/.settings/qa.eclipse.plugin.pmd.prefs rename to theodolite-benchmarks/uc3-application/.settings/qa.eclipse.plugin.pmd.prefs diff --git a/benchmarks/uc3-application/Dockerfile b/theodolite-benchmarks/uc3-application/Dockerfile similarity index 100% rename from benchmarks/uc3-application/Dockerfile rename to theodolite-benchmarks/uc3-application/Dockerfile diff --git a/benchmarks/uc3-application/build.gradle b/theodolite-benchmarks/uc3-application/build.gradle similarity index 100% rename from benchmarks/uc3-application/build.gradle rename to theodolite-benchmarks/uc3-application/build.gradle diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java similarity index 100% rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/application/HistoryService.java diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKey.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKey.java similarity index 100% rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKey.java rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKey.java diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeyFactory.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeyFactory.java similarity index 100% rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeyFactory.java rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeyFactory.java diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeySerde.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeySerde.java similarity index 100% rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeySerde.java rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayKeySerde.java diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayRecordFactory.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayRecordFactory.java similarity index 100% rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayRecordFactory.java rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/HourOfDayRecordFactory.java diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/RecordDatabaseAdapter.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/RecordDatabaseAdapter.java similarity index 100% rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/RecordDatabaseAdapter.java rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/RecordDatabaseAdapter.java diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsKeyFactory.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsKeyFactory.java similarity index 100% rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsKeyFactory.java rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsKeyFactory.java diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsRecordFactory.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsRecordFactory.java similarity index 100% rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsRecordFactory.java rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/StatsRecordFactory.java diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java similarity index 100% rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/TopologyBuilder.java diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java similarity index 100% rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/Uc3KafkaStreamsBuilder.java diff --git a/benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/util/StatsFactory.java b/theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/util/StatsFactory.java similarity index 100% rename from benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/util/StatsFactory.java rename to theodolite-benchmarks/uc3-application/src/main/java/theodolite/uc3/streamprocessing/util/StatsFactory.java diff --git a/benchmarks/uc3-application/src/main/resources/META-INF/application.properties b/theodolite-benchmarks/uc3-application/src/main/resources/META-INF/application.properties similarity index 100% rename from benchmarks/uc3-application/src/main/resources/META-INF/application.properties rename to theodolite-benchmarks/uc3-application/src/main/resources/META-INF/application.properties diff --git a/benchmarks/uc3-application/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc3-workload-generator/.settings/org.eclipse.jdt.ui.prefs similarity index 100% rename from benchmarks/uc3-application/.settings/org.eclipse.jdt.ui.prefs rename to theodolite-benchmarks/uc3-workload-generator/.settings/org.eclipse.jdt.ui.prefs diff --git a/benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs similarity index 100% rename from benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs rename to theodolite-benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs diff --git a/benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs similarity index 100% rename from benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs rename to theodolite-benchmarks/uc3-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs diff --git a/benchmarks/uc3-workload-generator/Dockerfile b/theodolite-benchmarks/uc3-workload-generator/Dockerfile similarity index 100% rename from benchmarks/uc3-workload-generator/Dockerfile rename to theodolite-benchmarks/uc3-workload-generator/Dockerfile diff --git a/benchmarks/uc3-workload-generator/build.gradle b/theodolite-benchmarks/uc3-workload-generator/build.gradle similarity index 100% rename from benchmarks/uc3-workload-generator/build.gradle rename to theodolite-benchmarks/uc3-workload-generator/build.gradle diff --git a/benchmarks/uc3-workload-generator/src/main/java/theodolite/uc3/workloadgenerator/LoadGenerator.java b/theodolite-benchmarks/uc3-workload-generator/src/main/java/theodolite/uc3/workloadgenerator/LoadGenerator.java similarity index 100% rename from benchmarks/uc3-workload-generator/src/main/java/theodolite/uc3/workloadgenerator/LoadGenerator.java rename to theodolite-benchmarks/uc3-workload-generator/src/main/java/theodolite/uc3/workloadgenerator/LoadGenerator.java diff --git a/benchmarks/uc3-workload-generator/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc4-application/.settings/org.eclipse.jdt.ui.prefs similarity index 100% rename from benchmarks/uc3-workload-generator/.settings/org.eclipse.jdt.ui.prefs rename to theodolite-benchmarks/uc4-application/.settings/org.eclipse.jdt.ui.prefs diff --git a/benchmarks/uc4-application/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc4-application/.settings/qa.eclipse.plugin.checkstyle.prefs similarity index 100% rename from benchmarks/uc4-application/.settings/qa.eclipse.plugin.checkstyle.prefs rename to theodolite-benchmarks/uc4-application/.settings/qa.eclipse.plugin.checkstyle.prefs diff --git a/benchmarks/uc4-application/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc4-application/.settings/qa.eclipse.plugin.pmd.prefs similarity index 100% rename from benchmarks/uc4-application/.settings/qa.eclipse.plugin.pmd.prefs rename to theodolite-benchmarks/uc4-application/.settings/qa.eclipse.plugin.pmd.prefs diff --git a/benchmarks/uc4-application/Dockerfile b/theodolite-benchmarks/uc4-application/Dockerfile similarity index 100% rename from benchmarks/uc4-application/Dockerfile rename to theodolite-benchmarks/uc4-application/Dockerfile diff --git a/benchmarks/uc4-application/README.md b/theodolite-benchmarks/uc4-application/README.md similarity index 100% rename from benchmarks/uc4-application/README.md rename to theodolite-benchmarks/uc4-application/README.md diff --git a/benchmarks/uc4-application/build.gradle b/theodolite-benchmarks/uc4-application/build.gradle similarity index 100% rename from benchmarks/uc4-application/build.gradle rename to theodolite-benchmarks/uc4-application/build.gradle diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/application/AggregationService.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/application/AggregationService.java similarity index 100% rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/application/AggregationService.java rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/application/AggregationService.java diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformer.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformer.java similarity index 100% rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformer.java rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformer.java diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformerSupplier.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformerSupplier.java similarity index 100% rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformerSupplier.java rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ChildParentsTransformerSupplier.java diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformer.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformer.java similarity index 100% rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformer.java rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformer.java diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformerSupplier.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformerSupplier.java similarity index 100% rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformerSupplier.java rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointFlatTransformerSupplier.java diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointRecordParents.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointRecordParents.java similarity index 100% rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointRecordParents.java rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/JointRecordParents.java diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/OptionalParentsSerde.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/OptionalParentsSerde.java similarity index 100% rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/OptionalParentsSerde.java rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/OptionalParentsSerde.java diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ParentsSerde.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ParentsSerde.java similarity index 100% rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ParentsSerde.java rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/ParentsSerde.java diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordAggregator.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordAggregator.java similarity index 100% rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordAggregator.java rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/RecordAggregator.java diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKey.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKey.java similarity index 100% rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKey.java rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKey.java diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKeySerde.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKeySerde.java similarity index 100% rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKeySerde.java rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/SensorParentKeySerde.java diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java similarity index 100% rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/TopologyBuilder.java diff --git a/benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java b/theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java similarity index 100% rename from benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java rename to theodolite-benchmarks/uc4-application/src/main/java/theodolite/uc4/streamprocessing/Uc4KafkaStreamsBuilder.java diff --git a/benchmarks/uc4-application/src/main/resources/META-INF/application.properties b/theodolite-benchmarks/uc4-application/src/main/resources/META-INF/application.properties similarity index 100% rename from benchmarks/uc4-application/src/main/resources/META-INF/application.properties rename to theodolite-benchmarks/uc4-application/src/main/resources/META-INF/application.properties diff --git a/benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/OptionalParentsSerdeTest.java b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/OptionalParentsSerdeTest.java similarity index 100% rename from benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/OptionalParentsSerdeTest.java rename to theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/OptionalParentsSerdeTest.java diff --git a/benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/ParentsSerdeTest.java b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/ParentsSerdeTest.java similarity index 100% rename from benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/ParentsSerdeTest.java rename to theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/ParentsSerdeTest.java diff --git a/benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SensorParentKeySerdeTest.java b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SensorParentKeySerdeTest.java similarity index 100% rename from benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SensorParentKeySerdeTest.java rename to theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SensorParentKeySerdeTest.java diff --git a/benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTester.java b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTester.java similarity index 100% rename from benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTester.java rename to theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTester.java diff --git a/benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTesterFactory.java b/theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTesterFactory.java similarity index 100% rename from benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTesterFactory.java rename to theodolite-benchmarks/uc4-application/src/test/java/theodolite/uc4/streamprocessing/SerdeTesterFactory.java diff --git a/benchmarks/workload-generator-commons/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs similarity index 99% rename from benchmarks/workload-generator-commons/.settings/org.eclipse.jdt.ui.prefs rename to theodolite-benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs index fa98ca63d77bdee891150bd6713f70197a75cefc..4d01df75552c562406705858b6368ecf59d6e82f 100644 --- a/benchmarks/workload-generator-commons/.settings/org.eclipse.jdt.ui.prefs +++ b/theodolite-benchmarks/uc4-workload-generator/.settings/org.eclipse.jdt.ui.prefs @@ -66,6 +66,7 @@ org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=; org.eclipse.jdt.ui.ondemandthreshold=99 org.eclipse.jdt.ui.staticondemandthreshold=99 +org.eclipse.jdt.ui.text.custom_code_templates= sp_cleanup.add_default_serial_version_id=true sp_cleanup.add_generated_serial_version_id=false sp_cleanup.add_missing_annotations=true diff --git a/benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs similarity index 100% rename from benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs rename to theodolite-benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.checkstyle.prefs diff --git a/benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs similarity index 100% rename from benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs rename to theodolite-benchmarks/uc4-workload-generator/.settings/qa.eclipse.plugin.pmd.prefs diff --git a/benchmarks/uc4-workload-generator/Dockerfile b/theodolite-benchmarks/uc4-workload-generator/Dockerfile similarity index 100% rename from benchmarks/uc4-workload-generator/Dockerfile rename to theodolite-benchmarks/uc4-workload-generator/Dockerfile diff --git a/benchmarks/uc4-workload-generator/build.gradle b/theodolite-benchmarks/uc4-workload-generator/build.gradle similarity index 100% rename from benchmarks/uc4-workload-generator/build.gradle rename to theodolite-benchmarks/uc4-workload-generator/build.gradle diff --git a/benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/ConfigPublisher.java b/theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/ConfigPublisher.java similarity index 100% rename from benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/ConfigPublisher.java rename to theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/ConfigPublisher.java diff --git a/benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java b/theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java similarity index 100% rename from benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java rename to theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/LoadGenerator.java diff --git a/benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilder.java b/theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilder.java similarity index 100% rename from benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilder.java rename to theodolite-benchmarks/uc4-workload-generator/src/main/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilder.java diff --git a/benchmarks/uc4-workload-generator/src/main/resources/META-INF/application.properties b/theodolite-benchmarks/uc4-workload-generator/src/main/resources/META-INF/application.properties similarity index 100% rename from benchmarks/uc4-workload-generator/src/main/resources/META-INF/application.properties rename to theodolite-benchmarks/uc4-workload-generator/src/main/resources/META-INF/application.properties diff --git a/benchmarks/uc4-workload-generator/src/test/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilderTest.java b/theodolite-benchmarks/uc4-workload-generator/src/test/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilderTest.java similarity index 100% rename from benchmarks/uc4-workload-generator/src/test/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilderTest.java rename to theodolite-benchmarks/uc4-workload-generator/src/test/java/theodolite/uc4/workloadgenerator/SensorRegistryBuilderTest.java diff --git a/benchmarks/uc4-application/.settings/org.eclipse.jdt.ui.prefs b/theodolite-benchmarks/workload-generator-commons/.settings/org.eclipse.jdt.ui.prefs similarity index 100% rename from benchmarks/uc4-application/.settings/org.eclipse.jdt.ui.prefs rename to theodolite-benchmarks/workload-generator-commons/.settings/org.eclipse.jdt.ui.prefs diff --git a/benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.checkstyle.prefs b/theodolite-benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.checkstyle.prefs similarity index 100% rename from benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.checkstyle.prefs rename to theodolite-benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.checkstyle.prefs diff --git a/benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.pmd.prefs b/theodolite-benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.pmd.prefs similarity index 100% rename from benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.pmd.prefs rename to theodolite-benchmarks/workload-generator-commons/.settings/qa.eclipse.plugin.pmd.prefs diff --git a/benchmarks/workload-generator-commons/build.gradle b/theodolite-benchmarks/workload-generator-commons/build.gradle similarity index 100% rename from benchmarks/workload-generator-commons/build.gradle rename to theodolite-benchmarks/workload-generator-commons/build.gradle diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/BeforeAction.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/BeforeAction.java similarity index 100% rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/BeforeAction.java rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/BeforeAction.java diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ClusterConfig.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ClusterConfig.java similarity index 100% rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ClusterConfig.java rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ClusterConfig.java diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ConfigurationKeys.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ConfigurationKeys.java similarity index 100% rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ConfigurationKeys.java rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/ConfigurationKeys.java diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunner.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunner.java similarity index 100% rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunner.java rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunner.java diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunnerStateInstance.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunnerStateInstance.java similarity index 100% rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunnerStateInstance.java rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/HazelcastRunnerStateInstance.java diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KafkaRecordSender.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KafkaRecordSender.java similarity index 93% rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KafkaRecordSender.java rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KafkaRecordSender.java index dd17234bf1adb1f0fcf3ff3ab134a0743b917369..6e4a43271fbf1e0193c2d39569a0814d1f7935cd 100644 --- a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KafkaRecordSender.java +++ b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KafkaRecordSender.java @@ -6,6 +6,7 @@ import org.apache.avro.specific.SpecificRecord; import org.apache.kafka.clients.producer.KafkaProducer; import org.apache.kafka.clients.producer.Producer; import org.apache.kafka.clients.producer.ProducerRecord; +import org.apache.kafka.common.errors.SerializationException; import org.apache.kafka.common.serialization.StringSerializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -116,7 +117,13 @@ public class KafkaRecordSender<T extends SpecificRecord> implements RecordSender this.keyAccessor.apply(monitoringRecord), monitoringRecord); LOGGER.debug("Send record to Kafka topic {}: {}", this.topic, record); - this.producer.send(record); + try { + this.producer.send(record); + } catch (final SerializationException e) { + LOGGER.warn( + "Record could not be serialized and thus not sent to Kafka due to exception. Skipping this record.", // NOCS + e); + } } public void terminate() { diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KeySpace.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KeySpace.java similarity index 100% rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KeySpace.java rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/KeySpace.java diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGenerator.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGenerator.java similarity index 100% rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGenerator.java rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGenerator.java diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorConfig.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorConfig.java similarity index 100% rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorConfig.java rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorConfig.java diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorExecution.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorExecution.java similarity index 100% rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorExecution.java rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/LoadGeneratorExecution.java diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/MessageGenerator.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/MessageGenerator.java similarity index 100% rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/MessageGenerator.java rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/MessageGenerator.java diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordGenerator.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordGenerator.java similarity index 100% rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordGenerator.java rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordGenerator.java diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordSender.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordSender.java similarity index 100% rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordSender.java rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/RecordSender.java diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/TitanMessageGeneratorFactory.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/TitanMessageGeneratorFactory.java similarity index 100% rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/TitanMessageGeneratorFactory.java rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/TitanMessageGeneratorFactory.java diff --git a/benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/WorkloadDefinition.java b/theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/WorkloadDefinition.java similarity index 100% rename from benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/WorkloadDefinition.java rename to theodolite-benchmarks/workload-generator-commons/src/main/java/theodolite/commons/workloadgeneration/WorkloadDefinition.java diff --git a/benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/KeySpaceTest.java b/theodolite-benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/KeySpaceTest.java similarity index 100% rename from benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/KeySpaceTest.java rename to theodolite-benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/KeySpaceTest.java diff --git a/benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/WorkloadDefinitionTest.java b/theodolite-benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/WorkloadDefinitionTest.java similarity index 100% rename from benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/WorkloadDefinitionTest.java rename to theodolite-benchmarks/workload-generator-commons/src/test/java/theodolite/commons/workloadgeneration/WorkloadDefinitionTest.java diff --git a/theodolite-quarkus/build.gradle b/theodolite-quarkus/build.gradle index ba80ced4b1e4e58f34d5b316f4a46f4e032654a9..1ceb0937776299e6fc9a3c0ec470c9e320e6790f 100644 --- a/theodolite-quarkus/build.gradle +++ b/theodolite-quarkus/build.gradle @@ -20,12 +20,13 @@ dependencies { implementation 'io.quarkus:quarkus-resteasy' testImplementation 'io.quarkus:quarkus-junit5' testImplementation 'io.rest-assured:rest-assured' + implementation 'com.google.code.gson:gson:2.8.5' implementation 'org.slf4j:slf4j-simple:1.7.29' implementation 'io.github.microutils:kotlin-logging:1.12.0' implementation 'io.fabric8:kubernetes-client:5.0.0-alpha-2' - compile group: 'org.apache.kafka', name: 'kafka-clients', version: '2.7.0' - compile group: 'org.apache.zookeeper', name: 'zookeeper', version: '3.6.2' + implementation 'org.apache.kafka:kafka-clients:2.7.0' + implementation 'khttp:khttp:1.0.0' } group 'theodolite' diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt index 32b06d10f609b8898ac94d514baf4f293b1a2c97..25535e1a64db9641cd47747cf8676b3994964690 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/benchmark/BenchmarkExecution.kt @@ -22,6 +22,10 @@ class BenchmarkExecution { class Slo { lateinit var sloType: String var threshold by Delegates.notNull<Int>() + lateinit var prometheusUrl: String + lateinit var externalSloUrl: String + var offset by Delegates.notNull<Int>() + var warmup by Delegates.notNull<Int>() } class LoadDefinition { diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/ExternalSloChecker.kt b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/ExternalSloChecker.kt new file mode 100644 index 0000000000000000000000000000000000000000..2de8e2dc9c03ec5449c9f04585622d6730644aa2 --- /dev/null +++ b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/ExternalSloChecker.kt @@ -0,0 +1,40 @@ +package theodolite.evaluation + +import com.google.gson.Gson +import khttp.post +import java.net.ConnectException +import java.time.Duration +import java.time.Instant + +class ExternalSloChecker( + private val prometheusURL: String, + private val query: String, + private val externalSlopeURL: String, + private val threshold: Int, + private val offset: Duration, + private val warmup: Int +) : + SloChecker { + + private val RETRIES = 2 + private val TIMEOUT = 60.0 + + override fun evaluate(start: Instant, end: Instant): Boolean { + var counter = 0 + val metricFetcher = MetricFetcher(prometheusURL = prometheusURL, offset = offset) + val fetchedData = metricFetcher.fetchMetric(start, end, query) + val data = + Gson().toJson(mapOf("total_lag" to fetchedData.data?.result, "threshold" to threshold, "warmup" to warmup)) + + while (counter < RETRIES) { + val result = post(externalSlopeURL, data = data, timeout = TIMEOUT) + if (result.statusCode != 200) { + counter++ + } else { + return result.text.toBoolean() + } + } + + throw ConnectException("Could not reach slope evaluation") + } +} diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/MetricFetcher.kt b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/MetricFetcher.kt new file mode 100644 index 0000000000000000000000000000000000000000..7dbaf568c3452e7ae565002ae00e5314502f8930 --- /dev/null +++ b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/MetricFetcher.kt @@ -0,0 +1,55 @@ +package theodolite.evaluation + +import com.google.gson.Gson +import khttp.get +import khttp.responses.Response +import mu.KotlinLogging +import theodolite.util.PrometheusResponse +import java.net.ConnectException +import java.time.Duration +import java.time.Instant + +private val logger = KotlinLogging.logger {} + +class MetricFetcher(private val prometheusURL: String, private val offset: Duration) { + private val RETRIES = 2 + private val TIMEOUT = 60.0 + + fun fetchMetric(start: Instant, end: Instant, query: String): PrometheusResponse { + + val offsetStart = start.minus(offset) + val offsetEnd = end.minus(offset) + + var counter = 0 + val parameter = mapOf( + "query" to query, + "start" to offsetStart.toString(), + "end" to offsetEnd.toString(), + "step" to "5s" + ) + + while (counter < RETRIES) { + val response = get("$prometheusURL/api/v1/query_range", params = parameter, timeout = TIMEOUT) + if (response.statusCode != 200) { + val message = response.jsonObject.toString() + logger.warn { "Could not connect to Prometheus: $message, retrying now" } + counter++ + } else { + val values = parseValues(response) + if (values.data?.result.isNullOrEmpty()) { + logger.error { "Empty query result: $values" } + throw NoSuchFieldException() + } + return parseValues(response) + } + } + throw ConnectException("No answer from Prometheus received") + } + + private fun parseValues(values: Response): PrometheusResponse { + return Gson().fromJson<PrometheusResponse>( + values.jsonObject.toString(), + PrometheusResponse::class.java + ) + } +} diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SLOChecker.kt b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SLOChecker.kt deleted file mode 100644 index 396e1864b491e15d44881439c10847a39ea18286..0000000000000000000000000000000000000000 --- a/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SLOChecker.kt +++ /dev/null @@ -1,3 +0,0 @@ -package theodolite.evaluation - -interface SLOChecker {} diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SloChecker.kt b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SloChecker.kt new file mode 100644 index 0000000000000000000000000000000000000000..53ed1b7fa02681f97b121f93d690c0654f961a94 --- /dev/null +++ b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SloChecker.kt @@ -0,0 +1,7 @@ +package theodolite.evaluation + +import java.time.Instant + +interface SloChecker { + fun evaluate(start: Instant, end: Instant): Boolean +} diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SloCheckerFactory.kt b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SloCheckerFactory.kt new file mode 100644 index 0000000000000000000000000000000000000000..2170ef7b6abdb74499d05ac623c7892ac36b72d9 --- /dev/null +++ b/theodolite-quarkus/src/main/kotlin/theodolite/evaluation/SloCheckerFactory.kt @@ -0,0 +1,29 @@ +package theodolite.evaluation + +import java.time.Duration + +class SloCheckerFactory { + + fun create( + slotype: String, + prometheusURL: String, + query: String, + externalSlopeURL: String, + threshold: Int, + offset: Duration, + warmup: Int + ): SloChecker { + + return when (slotype) { + "lag trend" -> ExternalSloChecker( + prometheusURL = prometheusURL, + query = query, + externalSlopeURL = externalSlopeURL, + threshold = threshold, + offset = offset, + warmup = warmup + ) + else -> throw IllegalArgumentException("Slotype $slotype not found.") + } + } +} diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutor.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutor.kt index 1e939812298da33c47513b3322ff33c00ea001be..d3c2fdcbc0274066e62dd2dfe01fd2a8cf940f13 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutor.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutor.kt @@ -2,6 +2,7 @@ package theodolite.execution import mu.KotlinLogging import theodolite.benchmark.Benchmark +import theodolite.benchmark.BenchmarkExecution import theodolite.util.ConfigurationOverride import theodolite.util.LoadDimension import theodolite.util.Resource @@ -22,7 +23,8 @@ abstract class BenchmarkExecutor( val benchmark: Benchmark, val results: Results, val executionDuration: Duration, - configurationOverrides: List<ConfigurationOverride> + configurationOverrides: List<ConfigurationOverride>, + val slo: BenchmarkExecution.Slo ) { /** @@ -39,9 +41,13 @@ abstract class BenchmarkExecutor( * */ fun waitAndLog() { - for (i in 1.rangeTo(executionDuration.toMinutes())) { - Thread.sleep(Duration.ofMinutes(1).toMillis()) - logger.info { "Executed: $i minutes" } + logger.info { "Execution of a new benchmark started." } + for (i in 1.rangeTo(executionDuration.toSeconds())) { + + Thread.sleep(Duration.ofSeconds(1).toMillis()) + if ((i % 60) == 0L) { + logger.info { "Executed: ${i / 60} minutes" } + } } } } diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt index 45616a100a8ed067237413ac5afa9fd32f4865e1..19a0cb61c7bc24a00b1c769e77f4174d2f09d2d9 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/BenchmarkExecutorImpl.kt @@ -1,25 +1,51 @@ package theodolite.execution +import mu.KotlinLogging import theodolite.benchmark.Benchmark +import theodolite.benchmark.BenchmarkExecution +import theodolite.evaluation.SloCheckerFactory import theodolite.util.ConfigurationOverride import theodolite.util.LoadDimension import theodolite.util.Resource import theodolite.util.Results import java.time.Duration +import java.time.Instant + +private val logger = KotlinLogging.logger {} class BenchmarkExecutorImpl( benchmark: Benchmark, results: Results, executionDuration: Duration, - private val configurationOverrides: List<ConfigurationOverride> -) : BenchmarkExecutor(benchmark, results, executionDuration, configurationOverrides) { + private val configurationOverrides: List<ConfigurationOverride>, + slo: BenchmarkExecution.Slo +) : BenchmarkExecutor(benchmark, results, executionDuration, configurationOverrides, slo) { + //TODO ADD SHUTDOWN HOOK HERE override fun runExperiment(load: LoadDimension, res: Resource): Boolean { val benchmarkDeployment = benchmark.buildDeployment(load, res, this.configurationOverrides) benchmarkDeployment.setup() this.waitAndLog() benchmarkDeployment.teardown() - // todo evaluate - val result = false // if success else false + + var result = false + try { + result = SloCheckerFactory().create( + slotype = slo.sloType, + prometheusURL = slo.prometheusUrl, + query = "sum by(group)(kafka_consumergroup_group_lag >= 0)", + externalSlopeURL = slo.externalSloUrl, + threshold = slo.threshold, + offset = Duration.ofHours(slo.offset.toLong()), + warmup = slo.warmup + ) + .evaluate( + Instant.now().minus(executionDuration), + Instant.now() + ) + } catch (e: Exception) { + logger.error { "Evaluation failed for resource: ${res.get()} and load: ${load.get()} error: $e" } + } + this.results.setResult(Pair(load, res), result) return result } diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt index da569e792660b2ec66fb7e7542103b242a733cb2..89a3fb4fe5e0f81aa12aa566c9dbb2630c9b9bfe 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/execution/TheodoliteExecutor.kt @@ -21,10 +21,18 @@ class TheodoliteExecutor( val strategyFactory = StrategyFactory() val executionDuration = Duration.ofSeconds(config.execution.duration) - val executor = BenchmarkExecutorImpl(kubernetesBenchmark, results, executionDuration, config.configOverrides) val resourcePatcherDefinition = PatcherDefinitionFactory().createPatcherDefinition(config.resources.resourceType, this.kubernetesBenchmark.resourceTypes) val loadDimensionPatcherDefinition = PatcherDefinitionFactory().createPatcherDefinition(config.load.loadType, this.kubernetesBenchmark.loadTypes) + val executor = + BenchmarkExecutorImpl( + kubernetesBenchmark, + results, + executionDuration, + config.configOverrides, + config.slos[0] + ) + return Config( loads = config.load.loadValues.map { load -> LoadDimension(load, loadDimensionPatcherDefinition) }, resources = config.resources.resourceValues.map { resource -> Resource(resource, resourcePatcherDefinition) }, diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/k8s/TopicManager.kt b/theodolite-quarkus/src/main/kotlin/theodolite/k8s/TopicManager.kt index 9cdf1c43fae9a72bd78126d420522b2d41a399ee..1336f57517ef74d8c781cc3b51bf130dbf8d99c5 100644 --- a/theodolite-quarkus/src/main/kotlin/theodolite/k8s/TopicManager.kt +++ b/theodolite-quarkus/src/main/kotlin/theodolite/k8s/TopicManager.kt @@ -4,6 +4,7 @@ import mu.KotlinLogging import org.apache.kafka.clients.admin.AdminClient import org.apache.kafka.clients.admin.ListTopicsResult import org.apache.kafka.clients.admin.NewTopic +import java.util.* private val logger = KotlinLogging.logger {} diff --git a/theodolite-quarkus/src/main/kotlin/theodolite/util/PrometheusResponse.kt b/theodolite-quarkus/src/main/kotlin/theodolite/util/PrometheusResponse.kt new file mode 100644 index 0000000000000000000000000000000000000000..e512bd7efb534c705afa3fe17dbc77396a8741db --- /dev/null +++ b/theodolite-quarkus/src/main/kotlin/theodolite/util/PrometheusResponse.kt @@ -0,0 +1,20 @@ +package theodolite.util + +data class PrometheusResponse( + var status: String? = null, + var data: PromData? = null +) + +data class PromData( + var resultType: String? = null, + var result: List<PromResult>? = null +) + +data class PromResult( + var metric: PromMetric? = null, + var values: List<Any>? = null +) + +data class PromMetric( + var group: String? = null +) diff --git a/theodolite-quarkus/src/main/resources/yaml/BenchmarkExecution.yaml b/theodolite-quarkus/src/main/resources/yaml/BenchmarkExecution.yaml index 270daee1708ca4791c65ff9f4a9e1a1e7e78c4d3..a91d123628a03bb7fd82821d6f34d7bf1239c154 100644 --- a/theodolite-quarkus/src/main/resources/yaml/BenchmarkExecution.yaml +++ b/theodolite-quarkus/src/main/resources/yaml/BenchmarkExecution.yaml @@ -3,17 +3,21 @@ benchmark: "benchmarkType" load: loadType: "NumSensors" loadValues: - - 10000 + - 50000 resources: resourceType: "Instances" resourceValues: - - 2 + - 1 slos: - - sloType: "slo type" + - sloType: "lag trend" threshold: 1000 + prometheusUrl: "http://localhost:32656" + externalSloUrl: "http://localhost:80/evaluate-slope" + offset: 0 + warmup: 0 execution: strategy: "LinearSearch" - duration: 300 + duration: 60 repetitions: 1 restrictions: - "LowerBound" @@ -33,7 +37,7 @@ configOverrides: resource: "uc1-kstreams-deployment.yaml" container: "uc-application" variableName: "cpu" - value: "50m" + value: "1000m" - patcher: type: "ResourceLimitPatcher" resource: "uc1-kstreams-deployment.yaml" diff --git a/theodolite-quarkus/src/test/kotlin/theodolite/CompositeStrategyTest.kt b/theodolite-quarkus/src/test/kotlin/theodolite/CompositeStrategyTest.kt index d50541c2e7b07a6e8efa7c9846661de1cbb450bf..e4ffa950ba9034e019ede941c49c418c18c1e41d 100644 --- a/theodolite-quarkus/src/test/kotlin/theodolite/CompositeStrategyTest.kt +++ b/theodolite-quarkus/src/test/kotlin/theodolite/CompositeStrategyTest.kt @@ -4,6 +4,7 @@ import io.quarkus.test.junit.QuarkusTest import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test import theodolite.patcher.PatcherDefinitionFactory +import theodolite.benchmark.BenchmarkExecution import theodolite.strategies.restriction.LowerBoundRestriction import theodolite.strategies.searchstrategy.BinarySearch import theodolite.strategies.searchstrategy.CompositeStrategy @@ -31,7 +32,8 @@ class CompositeStrategyTest { val mockResources: List<Resource> = (0..6).map { number -> Resource(number, listOf(emptyPatcherDefinition)) } val results = Results() val benchmark = TestBenchmark() - val benchmarkExecutor = TestBenchmarkExecutorImpl(mockResults, benchmark, results) + val sloChecker: BenchmarkExecution.Slo = BenchmarkExecution.Slo() + val benchmarkExecutor = TestBenchmarkExecutorImpl(mockResults, benchmark, results, sloChecker) val linearSearch = LinearSearch(benchmarkExecutor) val lowerBoundRestriction = LowerBoundRestriction(results) val strategy = @@ -64,8 +66,9 @@ class CompositeStrategyTest { val mockResources: List<Resource> = (0..6).map { number -> Resource(number, listOf(emptyPatcherDefinition)) } val results = Results() val benchmark = TestBenchmark() + val sloChecker: BenchmarkExecution.Slo = BenchmarkExecution.Slo() val benchmarkExecutorImpl = - TestBenchmarkExecutorImpl(mockResults, benchmark, results) + TestBenchmarkExecutorImpl(mockResults, benchmark, results, sloChecker) val binarySearch = BinarySearch(benchmarkExecutorImpl) val lowerBoundRestriction = LowerBoundRestriction(results) val strategy = @@ -98,7 +101,8 @@ class CompositeStrategyTest { val mockResources: List<Resource> = (0..7).map { number -> Resource(number, listOf(emptyPatcherDefinition)) } val results = Results() val benchmark = TestBenchmark() - val benchmarkExecutor = TestBenchmarkExecutorImpl(mockResults, benchmark, results) + val sloChecker: BenchmarkExecution.Slo = BenchmarkExecution.Slo() + val benchmarkExecutor = TestBenchmarkExecutorImpl(mockResults, benchmark, results, sloChecker) val binarySearch = BinarySearch(benchmarkExecutor) val lowerBoundRestriction = LowerBoundRestriction(results) val strategy = diff --git a/theodolite-quarkus/src/test/kotlin/theodolite/TestBenchmarkExecutorImpl.kt b/theodolite-quarkus/src/test/kotlin/theodolite/TestBenchmarkExecutorImpl.kt index bab20b7b56a6b95efd7e616338419b632a8f42d7..2de07d48dbe59313506745e6c97b2ae9a5ed114e 100644 --- a/theodolite-quarkus/src/test/kotlin/theodolite/TestBenchmarkExecutorImpl.kt +++ b/theodolite-quarkus/src/test/kotlin/theodolite/TestBenchmarkExecutorImpl.kt @@ -1,6 +1,7 @@ package theodolite import theodolite.benchmark.Benchmark +import theodolite.benchmark.BenchmarkExecution import theodolite.execution.BenchmarkExecutor import theodolite.util.LoadDimension import theodolite.util.Resource @@ -10,16 +11,19 @@ import java.time.Duration class TestBenchmarkExecutorImpl( private val mockResults: Array<Array<Boolean>>, benchmark: Benchmark, - results: Results + results: Results, + slo: BenchmarkExecution.Slo ) : BenchmarkExecutor( - benchmark, results, executionDuration = Duration.ofSeconds(1), - configurationOverrides = emptyList() + benchmark, + results, + executionDuration = Duration.ofSeconds(1), + configurationOverrides = emptyList(), + slo = slo ) { override fun runExperiment(load: LoadDimension, res: Resource): Boolean { val result = this.mockResults[load.get()][res.get()] - this.results.setResult(Pair(load, res), result) return result }