Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • she/theodolite
1 result
Show changes
Commits on Source (144)
Showing
with 615 additions and 222 deletions
...@@ -131,7 +131,7 @@ lint-helm: ...@@ -131,7 +131,7 @@ lint-helm:
script: helm lint helm/ script: helm lint helm/
rules: rules:
- changes: - changes:
- helm/* - helm/**/*
- when: manual - when: manual
allow_failure: true allow_failure: true
...@@ -297,6 +297,34 @@ deploy-uc4-flink: ...@@ -297,6 +297,34 @@ deploy-uc4-flink:
JAVA_PROJECT_NAME: "uc4-flink" JAVA_PROJECT_NAME: "uc4-flink"
JAVA_PROJECT_DEPS: "flink-commons" JAVA_PROJECT_DEPS: "flink-commons"
deploy-uc1-hazelcastjet:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc1-hazelcastjet"
JAVA_PROJECT_NAME: "uc1-hazelcastjet"
JAVA_PROJECT_DEPS: "hazelcastjet-commons"
deploy-uc2-hazelcastjet:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc2-hazelcastjet"
JAVA_PROJECT_NAME: "uc2-hazelcastjet"
JAVA_PROJECT_DEPS: "hazelcastjet-commons"
deploy-uc3-hazelcastjet:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc3-hazelcastjet"
JAVA_PROJECT_NAME: "uc3-hazelcastjet"
JAVA_PROJECT_DEPS: "hazelcastjet-commons"
deploy-uc4-hazelcastjet:
extends: .deploy-benchmarks
variables:
IMAGE_NAME: "theodolite-uc4-hazelcastjet"
JAVA_PROJECT_NAME: "uc4-hazelcastjet"
JAVA_PROJECT_DEPS: "hazelcastjet-commons"
deploy-uc1-beam-flink: deploy-uc1-beam-flink:
extends: .deploy-benchmarks extends: .deploy-benchmarks
variables: variables:
...@@ -449,6 +477,15 @@ smoketest-uc1-beam-samza: ...@@ -449,6 +477,15 @@ smoketest-uc1-beam-samza:
DOCKER_COMPOSE_DIR: "uc1-beam-samza" DOCKER_COMPOSE_DIR: "uc1-beam-samza"
JAVA_PROJECT_DEPS: "uc1-beam-samza,uc1-beam,beam-commons,uc1-load-generator,load-generator-commons" JAVA_PROJECT_DEPS: "uc1-beam-samza,uc1-beam,beam-commons,uc1-load-generator,load-generator-commons"
smoketest-uc1-hazelcastjet:
extends: .smoketest-benchmarks
needs:
- deploy-uc1-hazelcastjet
- deploy-uc1-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc1-hazelcastjet"
JAVA_PROJECT_DEPS: "uc1-hazelcastjet,hazelcastjet-commons,uc1-load-generator,load-generator-commons"
smoketest-uc2-kstreams: smoketest-uc2-kstreams:
extends: .smoketest-benchmarks extends: .smoketest-benchmarks
needs: needs:
...@@ -485,6 +522,15 @@ smoketest-uc2-beam-samza: ...@@ -485,6 +522,15 @@ smoketest-uc2-beam-samza:
DOCKER_COMPOSE_DIR: "uc2-beam-samza" DOCKER_COMPOSE_DIR: "uc2-beam-samza"
JAVA_PROJECT_DEPS: "uc2-beam-samza,uc2-beam,beam-commons,uc2-load-generator,load-generator-commons" JAVA_PROJECT_DEPS: "uc2-beam-samza,uc2-beam,beam-commons,uc2-load-generator,load-generator-commons"
smoketest-uc2-hazelcastjet:
extends: .smoketest-benchmarks
needs:
- deploy-uc2-hazelcastjet
- deploy-uc2-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc2-hazelcastjet"
JAVA_PROJECT_DEPS: "uc2-hazelcastjet,hazelcastjet-commons,uc2-load-generator,load-generator-commons"
smoketest-uc3-kstreams: smoketest-uc3-kstreams:
extends: .smoketest-benchmarks extends: .smoketest-benchmarks
needs: needs:
...@@ -512,6 +558,15 @@ smoketest-uc3-beam-samza: ...@@ -512,6 +558,15 @@ smoketest-uc3-beam-samza:
DOCKER_COMPOSE_DIR: "uc3-beam-samza" DOCKER_COMPOSE_DIR: "uc3-beam-samza"
JAVA_PROJECT_DEPS: "uc3-beam-samza,uc3-beam,beam-commons,uc3-load-generator,load-generator-commons" JAVA_PROJECT_DEPS: "uc3-beam-samza,uc3-beam,beam-commons,uc3-load-generator,load-generator-commons"
smoketest-uc3-hazelcastjet:
extends: .smoketest-benchmarks
needs:
- deploy-uc3-hazelcastjet
- deploy-uc3-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc3-hazelcastjet"
JAVA_PROJECT_DEPS: "uc3-hazelcastjet,hazelcastjet-commons,uc3-load-generator,load-generator-commons"
smoketest-uc4-kstreams: smoketest-uc4-kstreams:
extends: .smoketest-benchmarks extends: .smoketest-benchmarks
needs: needs:
...@@ -548,6 +603,14 @@ smoketest-uc4-beam-samza: ...@@ -548,6 +603,14 @@ smoketest-uc4-beam-samza:
DOCKER_COMPOSE_DIR: "uc4-beam-samza" DOCKER_COMPOSE_DIR: "uc4-beam-samza"
JAVA_PROJECT_DEPS: "uc4-beam-samza,uc4-beam,beam-commons,uc4-load-generator,load-generator-commons" JAVA_PROJECT_DEPS: "uc4-beam-samza,uc4-beam,beam-commons,uc4-load-generator,load-generator-commons"
smoketest-uc4-hazelcastjet:
extends: .smoketest-benchmarks
needs:
- deploy-uc4-hazelcastjet
- deploy-uc4-load-generator
variables:
DOCKER_COMPOSE_DIR: "uc4-hazelcastjet"
JAVA_PROJECT_DEPS: "uc4-hazelcastjet,hazelcastjet-commons,uc4-load-generator,load-generator-commons"
# Theodolite Framework # Theodolite Framework
......
cff-version: "1.1.0" cff-version: "1.1.0"
message: "If you use Theodolite, please cite it using these metadata." message: "If you use Theodolite, please cite it using these metadata."
authors: authors:
- family-names: Henning - family-names: Henning
given-names: "Sören" given-names: "Sören"
orcid: "https://orcid.org/0000-0001-6912-2549" orcid: "https://orcid.org/0000-0001-6912-2549"
...@@ -8,13 +8,13 @@ authors: ...@@ -8,13 +8,13 @@ authors:
given-names: Wilhelm given-names: Wilhelm
orcid: "https://orcid.org/0000-0001-6625-4335" orcid: "https://orcid.org/0000-0001-6625-4335"
title: Theodolite title: Theodolite
version: "0.6.4" version: "0.7.0"
repository-code: "https://github.com/cau-se/theodolite" repository-code: "https://github.com/cau-se/theodolite"
license: "Apache-2.0" license: "Apache-2.0"
doi: "10.1016/j.bdr.2021.100209" doi: "10.1016/j.bdr.2021.100209"
preferred-citation: preferred-citation:
type: article type: article
authors: authors:
- family-names: Henning - family-names: Henning
given-names: "Sören" given-names: "Sören"
orcid: "https://orcid.org/0000-0001-6912-2549" orcid: "https://orcid.org/0000-0001-6912-2549"
......
...@@ -5,10 +5,10 @@ ...@@ -5,10 +5,10 @@
"codeRepository": "https://github.com/cau-se/theodolite", "codeRepository": "https://github.com/cau-se/theodolite",
"dateCreated": "2020-03-13", "dateCreated": "2020-03-13",
"datePublished": "2020-07-27", "datePublished": "2020-07-27",
"dateModified": "2022-01-24", "dateModified": "2022-05-11",
"downloadUrl": "https://github.com/cau-se/theodolite/releases", "downloadUrl": "https://github.com/cau-se/theodolite/releases",
"name": "Theodolite", "name": "Theodolite",
"version": "0.6.4", "version": "0.7.0",
"description": "Theodolite is a framework for benchmarking the horizontal and vertical scalability of cloud-native applications.", "description": "Theodolite is a framework for benchmarking the horizontal and vertical scalability of cloud-native applications.",
"developmentStatus": "active", "developmentStatus": "active",
"relatedLink": [ "relatedLink": [
......
...@@ -9,11 +9,11 @@ source "https://rubygems.org" ...@@ -9,11 +9,11 @@ source "https://rubygems.org"
# Happy Jekylling! # Happy Jekylling!
#gem "jekyll", "~> 4.2.0" #gem "jekyll", "~> 4.2.0"
# This is the default theme for new Jekyll sites. You may change this to anything you like. # This is the default theme for new Jekyll sites. You may change this to anything you like.
gem "minima", "~> 2.5" #gem "minima", "~> 2.5"
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and # If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`. # uncomment the line below. To upgrade, run `bundle update github-pages`.
# gem "github-pages", group: :jekyll_plugins gem "github-pages", group: :jekyll_plugins
gem "github-pages", "~> 215", group: :jekyll_plugins #gem "github-pages", "~> 226", group: :jekyll_plugins
# If you have any plugins, put them here! # If you have any plugins, put them here!
#group :jekyll_plugins do #group :jekyll_plugins do
#gem "jekyll-feed", "~> 0.12" #gem "jekyll-feed", "~> 0.12"
......
GEM GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
activesupport (6.0.4) activesupport (6.0.4.8)
concurrent-ruby (~> 1.0, >= 1.0.2) concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2) i18n (>= 0.7, < 2)
minitest (~> 5.1) minitest (~> 5.1)
...@@ -14,44 +14,54 @@ GEM ...@@ -14,44 +14,54 @@ GEM
execjs execjs
coffee-script-source (1.11.1) coffee-script-source (1.11.1)
colorator (1.1.0) colorator (1.1.0)
commonmarker (0.17.13) commonmarker (0.23.4)
ruby-enum (~> 0.5) concurrent-ruby (1.1.10)
concurrent-ruby (1.1.9) dnsruby (1.61.9)
dnsruby (1.61.7)
simpleidn (~> 0.1) simpleidn (~> 0.1)
em-websocket (0.5.2) em-websocket (0.5.3)
eventmachine (>= 0.12.9) eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0) http_parser.rb (~> 0)
ethon (0.14.0) ethon (0.15.0)
ffi (>= 1.15.0) ffi (>= 1.15.0)
eventmachine (1.2.7) eventmachine (1.2.7)
execjs (2.8.1) execjs (2.8.1)
faraday (1.4.3) faraday (1.10.0)
faraday-em_http (~> 1.0) faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0) faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1) faraday-excon (~> 1.1)
faraday-httpclient (~> 1.0)
faraday-multipart (~> 1.0)
faraday-net_http (~> 1.0) faraday-net_http (~> 1.0)
faraday-net_http_persistent (~> 1.1) faraday-net_http_persistent (~> 1.0)
multipart-post (>= 1.2, < 3) faraday-patron (~> 1.0)
faraday-rack (~> 1.0)
faraday-retry (~> 1.0)
ruby2_keywords (>= 0.0.4) ruby2_keywords (>= 0.0.4)
faraday-em_http (1.0.0) faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0) faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0) faraday-excon (1.1.0)
faraday-httpclient (1.0.1)
faraday-multipart (1.0.3)
multipart-post (>= 1.2, < 3)
faraday-net_http (1.0.1) faraday-net_http (1.0.1)
faraday-net_http_persistent (1.1.0) faraday-net_http_persistent (1.2.0)
ffi (1.15.3) faraday-patron (1.0.0)
faraday-rack (1.0.0)
faraday-retry (1.0.3)
ffi (1.15.5)
forwardable-extended (2.6.0) forwardable-extended (2.6.0)
gemoji (3.0.1) gemoji (3.0.1)
github-pages (215) github-pages (226)
github-pages-health-check (= 1.17.2) github-pages-health-check (= 1.17.9)
jekyll (= 3.9.0) jekyll (= 3.9.2)
jekyll-avatar (= 0.7.0) jekyll-avatar (= 0.7.0)
jekyll-coffeescript (= 1.1.1) jekyll-coffeescript (= 1.1.1)
jekyll-commonmark-ghpages (= 0.1.6) jekyll-commonmark-ghpages (= 0.2.0)
jekyll-default-layout (= 0.1.4) jekyll-default-layout (= 0.1.4)
jekyll-feed (= 0.15.1) jekyll-feed (= 0.15.1)
jekyll-gist (= 1.5.0) jekyll-gist (= 1.5.0)
jekyll-github-metadata (= 2.13.0) jekyll-github-metadata (= 2.13.0)
jekyll-include-cache (= 0.2.1)
jekyll-mentions (= 1.6.0) jekyll-mentions (= 1.6.0)
jekyll-optional-front-matter (= 0.3.2) jekyll-optional-front-matter (= 0.3.2)
jekyll-paginate (= 1.1.0) jekyll-paginate (= 1.1.0)
...@@ -60,53 +70,53 @@ GEM ...@@ -60,53 +70,53 @@ GEM
jekyll-relative-links (= 0.6.1) jekyll-relative-links (= 0.6.1)
jekyll-remote-theme (= 0.4.3) jekyll-remote-theme (= 0.4.3)
jekyll-sass-converter (= 1.5.2) jekyll-sass-converter (= 1.5.2)
jekyll-seo-tag (= 2.7.1) jekyll-seo-tag (= 2.8.0)
jekyll-sitemap (= 1.4.0) jekyll-sitemap (= 1.4.0)
jekyll-swiss (= 1.0.0) jekyll-swiss (= 1.0.0)
jekyll-theme-architect (= 0.1.1) jekyll-theme-architect (= 0.2.0)
jekyll-theme-cayman (= 0.1.1) jekyll-theme-cayman (= 0.2.0)
jekyll-theme-dinky (= 0.1.1) jekyll-theme-dinky (= 0.2.0)
jekyll-theme-hacker (= 0.1.2) jekyll-theme-hacker (= 0.2.0)
jekyll-theme-leap-day (= 0.1.1) jekyll-theme-leap-day (= 0.2.0)
jekyll-theme-merlot (= 0.1.1) jekyll-theme-merlot (= 0.2.0)
jekyll-theme-midnight (= 0.1.1) jekyll-theme-midnight (= 0.2.0)
jekyll-theme-minimal (= 0.1.1) jekyll-theme-minimal (= 0.2.0)
jekyll-theme-modernist (= 0.1.1) jekyll-theme-modernist (= 0.2.0)
jekyll-theme-primer (= 0.5.4) jekyll-theme-primer (= 0.6.0)
jekyll-theme-slate (= 0.1.1) jekyll-theme-slate (= 0.2.0)
jekyll-theme-tactile (= 0.1.1) jekyll-theme-tactile (= 0.2.0)
jekyll-theme-time-machine (= 0.1.1) jekyll-theme-time-machine (= 0.2.0)
jekyll-titles-from-headings (= 0.5.3) jekyll-titles-from-headings (= 0.5.3)
jemoji (= 0.12.0) jemoji (= 0.12.0)
kramdown (= 2.3.1) kramdown (= 2.3.2)
kramdown-parser-gfm (= 1.1.0) kramdown-parser-gfm (= 1.1.0)
liquid (= 4.0.3) liquid (= 4.0.3)
mercenary (~> 0.3) mercenary (~> 0.3)
minima (= 2.5.1) minima (= 2.5.1)
nokogiri (>= 1.10.4, < 2.0) nokogiri (>= 1.13.4, < 2.0)
rouge (= 3.26.0) rouge (= 3.26.0)
terminal-table (~> 1.4) terminal-table (~> 1.4)
github-pages-health-check (1.17.2) github-pages-health-check (1.17.9)
addressable (~> 2.3) addressable (~> 2.3)
dnsruby (~> 1.60) dnsruby (~> 1.60)
octokit (~> 4.0) octokit (~> 4.0)
public_suffix (>= 2.0.2, < 5.0) public_suffix (>= 3.0, < 5.0)
typhoeus (~> 1.3) typhoeus (~> 1.3)
html-pipeline (2.14.0) html-pipeline (2.14.1)
activesupport (>= 2) activesupport (>= 2)
nokogiri (>= 1.4) nokogiri (>= 1.4)
html-proofer (3.19.2) html-proofer (3.19.3)
addressable (~> 2.3) addressable (~> 2.3)
mercenary (~> 0.3) mercenary (~> 0.3)
nokogumbo (~> 2.0) nokogiri (~> 1.12)
parallel (~> 1.3) parallel (~> 1.3)
rainbow (~> 3.0) rainbow (~> 3.0)
typhoeus (~> 1.3) typhoeus (~> 1.3)
yell (~> 2.0) yell (~> 2.0)
http_parser.rb (0.6.0) http_parser.rb (0.8.0)
i18n (0.9.5) i18n (0.9.5)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
jekyll (3.9.0) jekyll (3.9.2)
addressable (~> 2.4) addressable (~> 2.4)
colorator (~> 1.0) colorator (~> 1.0)
em-websocket (~> 0.5) em-websocket (~> 0.5)
...@@ -124,12 +134,12 @@ GEM ...@@ -124,12 +134,12 @@ GEM
jekyll-coffeescript (1.1.1) jekyll-coffeescript (1.1.1)
coffee-script (~> 2.2) coffee-script (~> 2.2)
coffee-script-source (~> 1.11.1) coffee-script-source (~> 1.11.1)
jekyll-commonmark (1.3.1) jekyll-commonmark (1.4.0)
commonmarker (~> 0.14) commonmarker (~> 0.22)
jekyll (>= 3.7, < 5.0) jekyll-commonmark-ghpages (0.2.0)
jekyll-commonmark-ghpages (0.1.6) commonmarker (~> 0.23.4)
commonmarker (~> 0.17.6) jekyll (~> 3.9.0)
jekyll-commonmark (~> 1.2) jekyll-commonmark (~> 1.4.0)
rouge (>= 2.0, < 4.0) rouge (>= 2.0, < 4.0)
jekyll-default-layout (0.1.4) jekyll-default-layout (0.1.4)
jekyll (~> 3.0) jekyll (~> 3.0)
...@@ -140,6 +150,8 @@ GEM ...@@ -140,6 +150,8 @@ GEM
jekyll-github-metadata (2.13.0) jekyll-github-metadata (2.13.0)
jekyll (>= 3.4, < 5.0) jekyll (>= 3.4, < 5.0)
octokit (~> 4.0, != 4.4.0) octokit (~> 4.0, != 4.4.0)
jekyll-include-cache (0.2.1)
jekyll (>= 3.7, < 5.0)
jekyll-mentions (1.6.0) jekyll-mentions (1.6.0)
html-pipeline (~> 2.3) html-pipeline (~> 2.3)
jekyll (>= 3.7, < 5.0) jekyll (>= 3.7, < 5.0)
...@@ -159,50 +171,50 @@ GEM ...@@ -159,50 +171,50 @@ GEM
rubyzip (>= 1.3.0, < 3.0) rubyzip (>= 1.3.0, < 3.0)
jekyll-sass-converter (1.5.2) jekyll-sass-converter (1.5.2)
sass (~> 3.4) sass (~> 3.4)
jekyll-seo-tag (2.7.1) jekyll-seo-tag (2.8.0)
jekyll (>= 3.8, < 5.0) jekyll (>= 3.8, < 5.0)
jekyll-sitemap (1.4.0) jekyll-sitemap (1.4.0)
jekyll (>= 3.7, < 5.0) jekyll (>= 3.7, < 5.0)
jekyll-swiss (1.0.0) jekyll-swiss (1.0.0)
jekyll-theme-architect (0.1.1) jekyll-theme-architect (0.2.0)
jekyll (~> 3.5) jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0) jekyll-seo-tag (~> 2.0)
jekyll-theme-cayman (0.1.1) jekyll-theme-cayman (0.2.0)
jekyll (~> 3.5) jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0) jekyll-seo-tag (~> 2.0)
jekyll-theme-dinky (0.1.1) jekyll-theme-dinky (0.2.0)
jekyll (~> 3.5) jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0) jekyll-seo-tag (~> 2.0)
jekyll-theme-hacker (0.1.2) jekyll-theme-hacker (0.2.0)
jekyll (> 3.5, < 5.0) jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0) jekyll-seo-tag (~> 2.0)
jekyll-theme-leap-day (0.1.1) jekyll-theme-leap-day (0.2.0)
jekyll (~> 3.5) jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0) jekyll-seo-tag (~> 2.0)
jekyll-theme-merlot (0.1.1) jekyll-theme-merlot (0.2.0)
jekyll (~> 3.5) jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0) jekyll-seo-tag (~> 2.0)
jekyll-theme-midnight (0.1.1) jekyll-theme-midnight (0.2.0)
jekyll (~> 3.5) jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0) jekyll-seo-tag (~> 2.0)
jekyll-theme-minimal (0.1.1) jekyll-theme-minimal (0.2.0)
jekyll (~> 3.5) jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0) jekyll-seo-tag (~> 2.0)
jekyll-theme-modernist (0.1.1) jekyll-theme-modernist (0.2.0)
jekyll (~> 3.5) jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0) jekyll-seo-tag (~> 2.0)
jekyll-theme-primer (0.5.4) jekyll-theme-primer (0.6.0)
jekyll (> 3.5, < 5.0) jekyll (> 3.5, < 5.0)
jekyll-github-metadata (~> 2.9) jekyll-github-metadata (~> 2.9)
jekyll-seo-tag (~> 2.0) jekyll-seo-tag (~> 2.0)
jekyll-theme-slate (0.1.1) jekyll-theme-slate (0.2.0)
jekyll (~> 3.5) jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0) jekyll-seo-tag (~> 2.0)
jekyll-theme-tactile (0.1.1) jekyll-theme-tactile (0.2.0)
jekyll (~> 3.5) jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0) jekyll-seo-tag (~> 2.0)
jekyll-theme-time-machine (0.1.1) jekyll-theme-time-machine (0.2.0)
jekyll (~> 3.5) jekyll (> 3.5, < 5.0)
jekyll-seo-tag (~> 2.0) jekyll-seo-tag (~> 2.0)
jekyll-titles-from-headings (0.5.3) jekyll-titles-from-headings (0.5.3)
jekyll (>= 3.3, < 5.0) jekyll (>= 3.3, < 5.0)
...@@ -212,12 +224,12 @@ GEM ...@@ -212,12 +224,12 @@ GEM
gemoji (~> 3.0) gemoji (~> 3.0)
html-pipeline (~> 2.2) html-pipeline (~> 2.2)
jekyll (>= 3.0, < 5.0) jekyll (>= 3.0, < 5.0)
kramdown (2.3.1) kramdown (2.3.2)
rexml rexml
kramdown-parser-gfm (1.1.0) kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0) kramdown (~> 2.0)
liquid (4.0.3) liquid (4.0.3)
listen (3.5.1) listen (3.7.1)
rb-fsevent (~> 0.10, >= 0.10.3) rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10) rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.3.6) mercenary (0.3.6)
...@@ -225,30 +237,26 @@ GEM ...@@ -225,30 +237,26 @@ GEM
jekyll (>= 3.5, < 5.0) jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9) jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1) jekyll-seo-tag (~> 2.1)
minitest (5.14.4) minitest (5.15.0)
multipart-post (2.1.1) multipart-post (2.1.1)
nokogiri (1.13.3-x86_64-linux) nokogiri (1.13.6-x86_64-linux)
racc (~> 1.4) racc (~> 1.4)
nokogumbo (2.0.5) octokit (4.22.0)
nokogiri (~> 1.8, >= 1.8.4)
octokit (4.21.0)
faraday (>= 0.9) faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3) sawyer (~> 0.8.0, >= 0.5.3)
parallel (1.21.0) parallel (1.22.1)
pathutil (0.16.2) pathutil (0.16.2)
forwardable-extended (~> 2.6) forwardable-extended (~> 2.6)
public_suffix (4.0.6) public_suffix (4.0.7)
racc (1.6.0) racc (1.6.0)
rainbow (3.0.0) rainbow (3.1.1)
rb-fsevent (0.11.0) rb-fsevent (0.11.1)
rb-inotify (0.10.1) rb-inotify (0.10.1)
ffi (~> 1.0) ffi (~> 1.0)
rexml (3.2.5) rexml (3.2.5)
rouge (3.26.0) rouge (3.26.0)
ruby-enum (0.9.0) ruby2_keywords (0.0.5)
i18n rubyzip (2.3.2)
ruby2_keywords (0.0.4)
rubyzip (2.3.0)
safe_yaml (1.0.5) safe_yaml (1.0.5)
sass (3.7.4) sass (3.7.4)
sass-listen (~> 4.0.0) sass-listen (~> 4.0.0)
...@@ -269,19 +277,17 @@ GEM ...@@ -269,19 +277,17 @@ GEM
thread_safe (~> 0.1) thread_safe (~> 0.1)
unf (0.1.4) unf (0.1.4)
unf_ext unf_ext
unf_ext (0.0.7.7) unf_ext (0.0.8.1)
unicode-display_width (1.7.0) unicode-display_width (1.8.0)
yell (2.2.2) yell (2.2.2)
zeitwerk (2.4.2) zeitwerk (2.5.4)
PLATFORMS PLATFORMS
x86_64-linux x86_64-linux
x86_64-linux-musl
DEPENDENCIES DEPENDENCIES
github-pages (~> 215) github-pages
html-proofer html-proofer
minima (~> 2.5)
tzinfo (~> 1.2) tzinfo (~> 1.2)
tzinfo-data tzinfo-data
wdm (~> 0.1.1) wdm (~> 0.1.1)
......
...@@ -114,6 +114,13 @@ Resource Types: ...@@ -114,6 +114,13 @@ Resource Types:
A list of resource types that can be scaled for this `benchmark` resource. For each resource type the concrete values are defined in the `execution` object.<br/> A list of resource types that can be scaled for this `benchmark` resource. For each resource type the concrete values are defined in the `execution` object.<br/>
</td> </td>
<td>true</td> <td>true</td>
</tr><tr>
<td><b><a href="#benchmarkspecslosindex">slos</a></b></td>
<td>[]object</td>
<td>
List of resource values for the specified resource type.<br/>
</td>
<td>true</td>
</tr><tr> </tr><tr>
<td><b><a href="#benchmarkspecsut">sut</a></b></td> <td><b><a href="#benchmarkspecsut">sut</a></b></td>
<td>object</td> <td>object</td>
...@@ -146,6 +153,15 @@ Resource Types: ...@@ -146,6 +153,15 @@ Resource Types:
<i>Default</i>: <br/> <i>Default</i>: <br/>
</td> </td>
<td>false</td> <td>false</td>
</tr><tr>
<td><b>waitForResourcesEnabled</b></td>
<td>boolean</td>
<td>
If true, Theodolite waits to create the resource for the SUT until the infrastructure resources are ready, and analogously, Theodolite waits to create the load-gen resource until the resources of the SUT are ready.<br/>
<br/>
<i>Default</i>: false<br/>
</td>
<td>false</td>
</tr></tbody> </tr></tbody>
</table> </table>
...@@ -727,6 +743,63 @@ The fileSystem resourceSet loads the Kubernetes manifests from the filesystem. ...@@ -727,6 +743,63 @@ The fileSystem resourceSet loads the Kubernetes manifests from the filesystem.
</table> </table>
### benchmark.spec.slos[index]
<sup><sup>[↩ Parent](#benchmarkspec)</sup></sup>
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Required</th>
</tr>
</thead>
<tbody><tr>
<td><b>name</b></td>
<td>string</td>
<td>
The name of the SLO.<br/>
</td>
<td>true</td>
</tr><tr>
<td><b>offset</b></td>
<td>integer</td>
<td>
Hours by which the start and end timestamp will be shifted (for different timezones).<br/>
</td>
<td>true</td>
</tr><tr>
<td><b>prometheusUrl</b></td>
<td>string</td>
<td>
Connection string for Promehteus.<br/>
</td>
<td>true</td>
</tr><tr>
<td><b>sloType</b></td>
<td>string</td>
<td>
The type of the SLO. It must match 'lag trend'.<br/>
</td>
<td>true</td>
</tr><tr>
<td><b>properties</b></td>
<td>map[string]string</td>
<td>
(Optional) SLO specific additional arguments.<br/>
<br/>
<i>Default</i>: map[]<br/>
</td>
<td>false</td>
</tr></tbody>
</table>
### benchmark.spec.sut ### benchmark.spec.sut
<sup><sup>[↩ Parent](#benchmarkspec)</sup></sup> <sup><sup>[↩ Parent](#benchmarkspec)</sup></sup>
...@@ -1765,7 +1838,7 @@ Contains the Kafka configuration. ...@@ -1765,7 +1838,7 @@ Contains the Kafka configuration.
</td> </td>
<td>true</td> <td>true</td>
</tr><tr> </tr><tr>
<td><b><a href="#executionspecload">load</a></b></td> <td><b><a href="#executionspecloads">loads</a></b></td>
<td>object</td> <td>object</td>
<td> <td>
Specifies the load values that are benchmarked.<br/> Specifies the load values that are benchmarked.<br/>
...@@ -1778,13 +1851,6 @@ Contains the Kafka configuration. ...@@ -1778,13 +1851,6 @@ Contains the Kafka configuration.
Specifies the scaling resource that is benchmarked.<br/> Specifies the scaling resource that is benchmarked.<br/>
</td> </td>
<td>true</td> <td>true</td>
</tr><tr>
<td><b><a href="#executionspecslosindex">slos</a></b></td>
<td>[]object</td>
<td>
List of resource values for the specified resource type.<br/>
</td>
<td>true</td>
</tr><tr> </tr><tr>
<td><b>name</b></td> <td><b>name</b></td>
<td>string</td> <td>string</td>
...@@ -1794,6 +1860,13 @@ Contains the Kafka configuration. ...@@ -1794,6 +1860,13 @@ Contains the Kafka configuration.
<i>Default</i>: <br/> <i>Default</i>: <br/>
</td> </td>
<td>false</td> <td>false</td>
</tr><tr>
<td><b><a href="#executionspecslosindex">slos</a></b></td>
<td>[]object</td>
<td>
List of SLOs with their properties, which differ from the benchmark definition.<br/>
</td>
<td>false</td>
</tr></tbody> </tr></tbody>
</table> </table>
...@@ -1906,35 +1979,83 @@ Defines the overall parameter for the execution. ...@@ -1906,35 +1979,83 @@ Defines the overall parameter for the execution.
<td><b>repetitions</b></td> <td><b>repetitions</b></td>
<td>integer</td> <td>integer</td>
<td> <td>
Numper of repititions for each experiments.<br/> Number of repititions for each experiment.<br/>
</td> </td>
<td>true</td> <td>true</td>
</tr><tr> </tr><tr>
<td><b>restrictions</b></td> <td><b><a href="#executionspecexecutionstrategy">strategy</a></b></td>
<td>[]string</td> <td>object</td>
<td> <td>
List of restriction strategys used to delimit the search space.<br/> Defines the used strategy for the execution, either 'LinearSearch', 'BinarySearch' or 'InitialGuessSearch'.<br/>
</td> </td>
<td>true</td> <td>true</td>
</tr><tr> </tr><tr>
<td><b>strategy</b></td> <td><b>loadGenerationDelay</b></td>
<td>integer</td>
<td>
Seconds to wait between the start of the SUT and the load generator.<br/>
</td>
<td>false</td>
</tr><tr>
<td><b>metric</b></td>
<td>string</td>
<td>
<br/>
</td>
<td>false</td>
</tr></tbody>
</table>
### execution.spec.execution.strategy
<sup><sup>[↩ Parent](#executionspecexecution)</sup></sup>
Defines the used strategy for the execution, either 'LinearSearch', 'BinarySearch' or 'InitialGuessSearch'.
<table>
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Description</th>
<th>Required</th>
</tr>
</thead>
<tbody><tr>
<td><b>name</b></td>
<td>string</td> <td>string</td>
<td> <td>
Defines the used strategy for the execution, either 'LinearSearch' or 'BinarySearch'<br/> <br/>
</td> </td>
<td>true</td> <td>true</td>
</tr><tr> </tr><tr>
<td><b>loadGenerationDelay</b></td> <td><b>guessStrategy</b></td>
<td>integer</td> <td>string</td>
<td> <td>
Seconds to wait between the start of the SUT and the load generator.<br/> <br/>
</td>
<td>false</td>
</tr><tr>
<td><b>restrictions</b></td>
<td>[]string</td>
<td>
List of restriction strategies used to delimit the search space.<br/>
</td>
<td>false</td>
</tr><tr>
<td><b>searchStrategy</b></td>
<td>string</td>
<td>
<br/>
</td> </td>
<td>false</td> <td>false</td>
</tr></tbody> </tr></tbody>
</table> </table>
### execution.spec.load ### execution.spec.loads
<sup><sup>[↩ Parent](#executionspec)</sup></sup> <sup><sup>[↩ Parent](#executionspec)</sup></sup>
...@@ -2019,24 +2140,10 @@ Specifies the scaling resource that is benchmarked. ...@@ -2019,24 +2140,10 @@ Specifies the scaling resource that is benchmarked.
</tr> </tr>
</thead> </thead>
<tbody><tr> <tbody><tr>
<td><b>offset</b></td> <td><b>name</b></td>
<td>integer</td>
<td>
Hours by which the start and end timestamp will be shifted (for different timezones).<br/>
</td>
<td>true</td>
</tr><tr>
<td><b>prometheusUrl</b></td>
<td>string</td>
<td>
Connection string for Promehteus.<br/>
</td>
<td>true</td>
</tr><tr>
<td><b>sloType</b></td>
<td>string</td> <td>string</td>
<td> <td>
The type of the SLO. It must match 'lag trend'.<br/> The name of the SLO. It must match a SLO specified in the Benchmark.<br/>
</td> </td>
<td>true</td> <td>true</td>
</tr><tr> </tr><tr>
...@@ -2047,7 +2154,7 @@ Specifies the scaling resource that is benchmarked. ...@@ -2047,7 +2154,7 @@ Specifies the scaling resource that is benchmarked.
<br/> <br/>
<i>Default</i>: map[]<br/> <i>Default</i>: map[]<br/>
</td> </td>
<td>false</td> <td>true</td>
</tr></tbody> </tr></tbody>
</table> </table>
......
...@@ -91,10 +91,37 @@ filesystem: ...@@ -91,10 +91,37 @@ filesystem:
- example-service.yaml - example-service.yaml
``` ```
<!-- ### Before and after actions --> ### Actions
Sometimes it is not sufficient to just define resources that are created and deleted when running a benchmark. Instead, it might be necessary to define certain actions that will be executed before running or after stopping the benchmark.
Theodolite allows to execute commands on running pods. This is similar to `kubectl exec` or Kubernetes' [container lifecycle handlers](https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/). Theodolite actions can run before (`beforeActions`) or after `afterActions` all `sut`, `loadGenerator` or `infrastructure` resources are deployed.
For example, the following actions will create a file in a pod with label `app: logger` before the SUT is started and delete if after the SUT is stopped:
```yaml
sut:
resources: # ...
beforeActions:
- selector:
pod:
matchLabels:
app: logger
exec:
command: ["touch", "file-used-by-logger.txt"]
timeoutSeconds: 90
afterActions:
- selector:
pod:
matchLabels:
app: logger
exec:
command: [ "rm", "file-used-by-logger.txt" ]
timeoutSeconds: 90
```
Theodolite checks if all referenced pods are available for the specified actions. That means these pods must either be defined in `infrastructure` or already deployed in the cluster. If not all referenced pods are available, the benchmark will not be set as `Ready`. Consequently, an action cannot be executed on a pod that is defined as an SUT or load generator resource.
*Note: Actions should be used sparingly. While it is possible to define entire benchmarks imperatively as actions, it is considered better practice to define as much as possible using declarative, native Kubernetes resource files.*
<!-- <!--
A Benchmark refers to other Kubernetes resources (e.g., Deployments, Services, ConfigMaps), which describe the system under test, the load generator and infrastructure components such as a middleware used in the benchmark. To manage those resources, Theodolite needs to have access to them. This is done by bundling resources in ConfigMaps. A Benchmark refers to other Kubernetes resources (e.g., Deployments, Services, ConfigMaps), which describe the system under test, the load generator and infrastructure components such as a middleware used in the benchmark. To manage those resources, Theodolite needs to have access to them. This is done by bundling resources in ConfigMaps.
...@@ -116,7 +143,7 @@ If a benchmark is [executed by an Execution](running-benchmarks), these patchers ...@@ -116,7 +143,7 @@ If a benchmark is [executed by an Execution](running-benchmarks), these patchers
## Kafka Configuration ## Kafka Configuration
Theodolite allows to automatically create and remove Kafka topics for each SLO experiment by setting a `kafkaConfig`. Theodolite allows to automatically create and remove Kafka topics for each SLO experiment by setting a `kafkaConfig`.
It `bootstrapServer` needs to point your Kafka cluster and `topics` configures the list of Kafka topics to be created/removed. `bootstrapServer` needs to point your Kafka cluster and `topics` configures the list of Kafka topics to be created/removed.
For each topic, you configure its name, the number of partitions and the replication factor. For each topic, you configure its name, the number of partitions and the replication factor.
With the `removeOnly: True` property, you can also instruct Theodolite to only remove topics and not create them. With the `removeOnly: True` property, you can also instruct Theodolite to only remove topics and not create them.
......
## Infrastructure
The necessary infrastructure for an execution can be defined in the benchmark manifests. The related resources are create *before* an execution is started, and removed *after* an execution is finished.
### Example
```yaml
infrastructure:
resources:
- configMap:
name: "example-configmap"
files:
- "uc1-kstreams-deployment.yaml"
```
## Action Commands
Theodolite allows to execute commands on running pods (similar to the `kubectl exec -it <pod-name> -- <command>` command). This commands can be run either before (via so called `beforeActions`) or after (via so called `afterActions`) an experiment is executed.
Theodolite checks if all required pods are available for the specified actions (i.e. the pods must either be defined as infrastructure or already deployed in the cluster). If not all pods/resources are available, the benchmark will not be set as `Ready`. Consequently, an action cannot be executed on a pod that is defined as an SUT or loadGen resource.
### Example
```yaml
# For the system under test
sut:
resources: ...
beforeActions:
- selector:
pod:
matchLabels:
app: busybox1
exec:
command: ["touch", "test-file-sut"]
timeoutSeconds: 90
afterActions:
- selector:
pod:
matchLabels:
app: busybox1
exec:
command: [ "touch", "test-file-sut-after" ]
timeoutSeconds: 90
# analog, for the load generator
loadGenerator:
resources: ...
beforeActions:
- selector:
pod:
matchLabels:
app: busybox1
exec:
command: ["touch", "test-file-loadGen"]
timeoutSeconds: 90
afterActions:
- selector:
pod:
matchLabels:
app: busybox1
exec:
command: [ "touch", "test-file-loadGen-after" ]
timeoutSeconds: 90
```
\ No newline at end of file
apiVersion: v1 apiVersion: v1
entries: entries:
theodolite: theodolite:
- apiVersion: v2
appVersion: 0.7.0
created: "2022-05-11T13:49:02.491041789+02:00"
dependencies:
- condition: grafana.enabled
name: grafana
repository: https://grafana.github.io/helm-charts
version: 6.17.5
- condition: kube-prometheus-stack.enabled
name: kube-prometheus-stack
repository: https://prometheus-community.github.io/helm-charts
version: 20.0.1
- condition: cp-helm-charts.enabled
name: cp-helm-charts
repository: https://soerenhenning.github.io/cp-helm-charts
version: 0.6.0
- condition: strimzi.enabled
name: strimzi-kafka-operator
repository: https://strimzi.io/charts/
version: 0.28.0
description: Theodolite is a framework for benchmarking the horizontal and vertical
scalability of cloud-native applications.
digest: af10134baa30bb07423f78240fe1c609381e1c616585883cf5d3aded2d86a2b1
home: https://www.theodolite.rocks
maintainers:
- email: soeren.henning@email.uni-kiel.de
name: Sören Henning
url: https://www.se.informatik.uni-kiel.de/en/team/soeren-henning-m-sc
name: theodolite
sources:
- https://github.com/cau-se/theodolite
type: application
urls:
- https://github.com/cau-se/theodolite/releases/download/v0.7.0/theodolite-0.7.0.tgz
version: 0.7.0
- apiVersion: v2 - apiVersion: v2
appVersion: 0.6.4 appVersion: 0.6.4
created: "2022-02-16T16:09:11.967649304+01:00" created: "2022-02-16T16:09:11.967649304+01:00"
...@@ -316,4 +351,4 @@ entries: ...@@ -316,4 +351,4 @@ entries:
urls: urls:
- https://github.com/cau-se/theodolite/releases/download/v0.4.0/theodolite-0.4.0.tgz - https://github.com/cau-se/theodolite/releases/download/v0.4.0/theodolite-0.4.0.tgz
version: 0.4.0 version: 0.4.0
generated: "2022-02-16T16:09:11.93111234+01:00" generated: "2022-05-11T13:49:02.423487026+02:00"
...@@ -30,6 +30,6 @@ dependencies: ...@@ -30,6 +30,6 @@ dependencies:
condition: strimzi.enabled condition: strimzi.enabled
version: 0.7.0-SNAPSHOT version: 0.8.0-SNAPSHOT
appVersion: 0.7.0-SNAPSHOT appVersion: 0.8.0-SNAPSHOT
...@@ -30,6 +30,20 @@ spec: ...@@ -30,6 +30,20 @@ spec:
configMapKeyRef: configMapKeyRef:
name: {{ template "theodolite.fullname" . }}-kafka-metrics name: {{ template "theodolite.fullname" . }}-kafka-metrics
key: kafka-metrics-config.yml key: kafka-metrics-config.yml
{{- with .Values.strimzi.kafka.nodeSelectorTerms}}
template:
pod:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
{{- toYaml . | nindent 16 }}
{{- end}}
{{- with .Values.strimzi.kafka.resources}}
resources:
{{- toYaml . | nindent 6 }}
{{- end}}
zookeeper: zookeeper:
{{- with .Values.strimzi.zookeeper.replicas }} {{- with .Values.strimzi.zookeeper.replicas }}
...@@ -37,7 +51,16 @@ spec: ...@@ -37,7 +51,16 @@ spec:
{{- toYaml . | nindent 6 }} {{- toYaml . | nindent 6 }}
{{- end }} {{- end }}
storage: storage:
type: ephemeral type: ephemeral
{{- with .Values.strimzi.zookeeper.nodeSelectorTerms}}
template:
pod:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
{{- toYaml . | nindent 16 }}
{{- end}}
kafkaExporter: {} kafkaExporter: {}
......
{{- if not (index .Values "kube-prometheus-stack" "global" "rbac" "create") -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ template "theodolite.fullname" . }}-kube-prometheus-operator
labels:
app: {{ template "theodolite.fullname" . }}-kube-prometheus-operator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ template "theodolite.fullname" . }}-kube-prometheus-operator
subjects:
- kind: ServiceAccount
name: {{ template "theodolite.fullname" . }}-kube-prometheus-operator
namespace: {{ .Release.Namespace }}
{{- end }}
{{- if not (index .Values "kube-prometheus-stack" "global" "rbac" "create") -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ template "theodolite.fullname" . }}-kube-prometheus-operator
labels:
app: {{ template "theodolite.name" . }}-kube-prometheus-operator
rules:
- apiGroups:
- monitoring.coreos.com
resources:
- alertmanagers
- alertmanagers/finalizers
- alertmanagerconfigs
- prometheuses
- prometheuses/finalizers
- thanosrulers
- thanosrulers/finalizers
- servicemonitors
- podmonitors
- probes
- prometheusrules
verbs:
- '*'
- apiGroups:
- apps
resources:
- statefulsets
verbs:
- '*'
- apiGroups:
- ""
resources:
- configmaps
- secrets
verbs:
- '*'
- apiGroups:
- ""
resources:
- pods
verbs:
- list
- delete
- apiGroups:
- ""
resources:
- services
- services/finalizers
- endpoints
verbs:
- get
- create
- update
- delete
- apiGroups:
- ""
resources:
- nodes
verbs:
- list
- watch
- apiGroups:
- ""
resources:
- namespaces
verbs:
- get
- list
- watch
- apiGroups:
- networking.k8s.io
resources:
- ingresses
verbs:
- get
- list
- watch
{{- end }}
{{- if .Values.prometheus.clusterRoleBinding.enabled -}} {{- if .Values.prometheus.roleBinding.enabled -}}
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding kind: RoleBinding
metadata: metadata:
name: {{ template "theodolite.fullname" . }}-prometheus name: {{ template "theodolite.fullname" . }}-prometheus
roleRef: roleRef:
apiGroup: rbac.authorization.k8s.io apiGroup: rbac.authorization.k8s.io
kind: ClusterRole kind: Role
name: {{ template "theodolite.fullname" . }}-prometheus name: {{ template "theodolite.fullname" . }}-prometheus
subjects: subjects:
- kind: ServiceAccount - kind: ServiceAccount
name: {{ template "theodolite.fullname" . }}-prometheus name: {{ template "theodolite.fullname" . }}-prometheus
namespace: {{ .Release.Namespace }} namespace: {{ .Release.Namespace }}
{{- end}} {{- end}}
\ No newline at end of file
{{- if .Values.prometheus.clusterRole.enabled -}} {{- if .Values.prometheus.role.enabled -}}
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole kind: Role
metadata: metadata:
name: {{ template "theodolite.fullname" . }}-prometheus name: {{ template "theodolite.fullname" . }}-prometheus
rules: rules:
- apiGroups: [""] - apiGroups: [""]
resources: resources:
- nodes
- services - services
- endpoints - endpoints
- pods - pods
...@@ -15,6 +14,4 @@ rules: ...@@ -15,6 +14,4 @@ rules:
resources: resources:
- configmaps - configmaps
verbs: ["get"] verbs: ["get"]
- nonResourceURLs: ["/metrics"] {{- end}}
verbs: ["get"]
{{- end }}
\ No newline at end of file
...@@ -55,6 +55,9 @@ rules: ...@@ -55,6 +55,9 @@ rules:
- get - get
- create - create
- update - update
{{- with .Values.rbac.additionalRules }}
{{ toYaml . | indent 2 }}
{{- end }}
{{- if .Values.operator.enabled }} {{- if .Values.operator.enabled }}
- apiGroups: - apiGroups:
- theodolite.com - theodolite.com
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
kafkaClient: kafkaClient:
enabled: false enabled: false
nodeSelector: {} nodeSelector: {}
#### ####
## configuration of sub charts ## configuration of sub charts
...@@ -52,6 +52,9 @@ grafana: ...@@ -52,6 +52,9 @@ grafana:
service: service:
nodePort: 31199 nodePort: 31199
type: NodePort type: NodePort
rbac:
pspEnabled: false
namespaced: true
### ###
...@@ -155,6 +158,9 @@ cp-helm-charts: ...@@ -155,6 +158,9 @@ cp-helm-charts:
## The interval between refreshing metrics ## The interval between refreshing metrics
pollIntervalSeconds: 15 pollIntervalSeconds: 15
strimzi-kafka-operator:
createGlobalResources: true
strimzi: strimzi:
enabled: true enabled: true
kafka: kafka:
...@@ -173,6 +179,9 @@ strimzi: ...@@ -173,6 +179,9 @@ strimzi:
jvmOptions: jvmOptions:
"-Xmx": "512M" "-Xmx": "512M"
"-Xms": "512M" "-Xms": "512M"
nodeSelectorTerms: []
resources: {}
zookeeper: zookeeper:
replicas: 3 replicas: 3
zooEntrance: zooEntrance:
...@@ -180,6 +189,8 @@ strimzi: ...@@ -180,6 +189,8 @@ strimzi:
zookeeperClient: zookeeperClient:
enabled: true enabled: true
nodeSelector: {} nodeSelector: {}
nodeSelectorTerms: []
topicOperator: topicOperator:
enabled: true enabled: true
...@@ -188,6 +199,10 @@ strimzi: ...@@ -188,6 +199,10 @@ strimzi:
# Prometheus Monitoring Stack (Prometheus Operator) # Prometheus Monitoring Stack (Prometheus Operator)
### ###
kube-prometheus-stack: kube-prometheus-stack:
global:
rbac:
create: false
commonLabels: commonLabels:
appScope: titan-ccp appScope: titan-ccp
...@@ -233,7 +248,14 @@ kube-prometheus-stack: ...@@ -233,7 +248,14 @@ kube-prometheus-stack:
releaseNamespace: true releaseNamespace: true
additional: [] additional: []
nodeSelector: {} nodeSelector: {}
admissionWebhooks:
enabled: false
tls:
enabled: false
serviceAccount:
create: true
# We use our own Prometheus
prometheus: prometheus:
enabled: false enabled: false
...@@ -245,12 +267,11 @@ prometheus: ...@@ -245,12 +267,11 @@ prometheus:
enabled: true enabled: true
nodeSelector: {} nodeSelector: {}
# depends on your cluster security and permission settings, you may need to create the following resources
serviceAccount: serviceAccount:
enabled: true enabled: true
clusterRole: role:
enabled: true enabled: true
clusterRoleBinding: roleBinding:
enabled: true enabled: true
### ###
...@@ -341,9 +362,10 @@ serviceAccount: ...@@ -341,9 +362,10 @@ serviceAccount:
rbac: rbac:
create: true create: true
additionalRules: []
randomScheduler: randomScheduler:
enabled: true enabled: false
image: ghcr.io/cau-se/theodolite-random-scheduler image: ghcr.io/cau-se/theodolite-random-scheduler
imageTag: latest imageTag: latest
imagePullPolicy: Always imagePullPolicy: Always
......
...@@ -24,7 +24,7 @@ elif os.getenv('LOG_LEVEL') == 'DEBUG': ...@@ -24,7 +24,7 @@ elif os.getenv('LOG_LEVEL') == 'DEBUG':
def calculate_slope_trend(results, warmup): def calculate_slope_trend(results, warmup):
d = [] d = []
for result in results: for result in results:
group = result['metric']['consumergroup'] group = result['metric'].get('consumergroup', "default")
for value in result['values']: for value in result['values']:
d.append({'group': group, 'timestamp': int( d.append({'group': group, 'timestamp': int(
value[0]), 'value': int(value[1]) if value[1] != 'NaN' else 0}) value[0]), 'value': int(value[1]) if value[1] != 'NaN' else 0})
......
package rocks.theodolite.benchmarks.commons.beam; package rocks.theodolite.benchmarks.commons.beam;
import java.io.IOException;
import java.util.function.Function; import java.util.function.Function;
import org.apache.beam.sdk.Pipeline; import org.apache.beam.sdk.Pipeline;
import org.apache.beam.sdk.PipelineResult;
import org.apache.beam.sdk.PipelineRunner; import org.apache.beam.sdk.PipelineRunner;
import org.apache.beam.sdk.options.PipelineOptions; import org.apache.beam.sdk.options.PipelineOptions;
import org.apache.beam.sdk.options.PipelineOptionsFactory; import org.apache.beam.sdk.options.PipelineOptionsFactory;
...@@ -23,6 +25,7 @@ public class BeamService { ...@@ -23,6 +25,7 @@ public class BeamService {
private final AbstractPipelineFactory pipelineFactory; private final AbstractPipelineFactory pipelineFactory;
private final PipelineOptions pipelineOptions; private final PipelineOptions pipelineOptions;
private PipelineResult pipelineResult;
/** /**
* Create a new {@link BeamService}. * Create a new {@link BeamService}.
...@@ -43,14 +46,43 @@ public class BeamService { ...@@ -43,14 +46,43 @@ public class BeamService {
} }
/** /**
* Start this microservice, by running the underlying Beam pipeline. * Start this microservice by running the underlying Beam pipeline.
*/ */
public void run() { public void run() {
LOGGER.info("Constructing Beam pipeline with pipeline options: {}", LOGGER.info("Constructing Beam pipeline with pipeline options: {}",
this.pipelineOptions.toString()); this.pipelineOptions.toString());
final Pipeline pipeline = this.pipelineFactory.create(this.pipelineOptions); final Pipeline pipeline = this.pipelineFactory.create(this.pipelineOptions);
LOGGER.info("Starting BeamService {}.", this.applicationName); LOGGER.info("Starting BeamService {}.", this.applicationName);
pipeline.run().waitUntilFinish(); this.pipelineResult = pipeline.run();
}
/**
* Start this microservice by running the underlying Beam pipeline and block until this process is
* terminated.
*/
public void runStandalone() {
this.run();
Runtime.getRuntime().addShutdownHook(new Thread(() -> this.stop()));
this.pipelineResult.waitUntilFinish();
}
/**
* Stop this microservice by canceling the underlying Beam pipeline.
*/
public void stop() {
LOGGER.info("Initiate shutdown of Beam service {}.", this.applicationName);
if (this.pipelineResult == null) {
throw new IllegalStateException("Cannot stop service since it has never been started.");
}
LOGGER.info("Stopping Beam pipeline.");
try {
this.pipelineResult.cancel();
this.pipelineResult = null; // NOPMD use null to indicate absence
} catch (final IOException e) {
throw new IllegalStateException(
"Stopping the service failed due to failed stop of Beam pipeline.", e);
}
LOGGER.info("Shutdown of Beam service {} complete.", this.applicationName);
} }
} }
plugins {
// common java conventions
id 'theodolite.java-conventions'
// make executable
id 'application'
}
repositories {
mavenCentral()
maven {
url "https://oss.sonatype.org/content/repositories/snapshots/"
}
maven {
url 'https://packages.confluent.io/maven/'
}
}
dependencies {
implementation('org.industrial-devops:titan-ccp-common:0.1.0-SNAPSHOT') { changing = true }
implementation('org.industrial-devops:titan-ccp-common-kafka:0.1.0-SNAPSHOT') { changing = true }
implementation 'com.google.guava:guava:24.1-jre'
implementation 'org.slf4j:slf4j-api:1.7.30'
implementation 'org.slf4j:slf4j-simple:1.7.30'
implementation 'io.confluent:kafka-avro-serializer:5.3.0'
implementation 'com.hazelcast.jet:hazelcast-jet:4.5'
implementation 'com.hazelcast.jet:hazelcast-jet-kafka:4.5'
implementation 'com.hazelcast:hazelcast-kubernetes:2.2.2'
implementation project(':hazelcastjet-commons')
testImplementation("junit:junit:4.13.2")
testRuntimeOnly("org.junit.vintage:junit-vintage-engine:5.8.2")
testImplementation 'com.hazelcast:hazelcast:4.2:tests'
testImplementation 'com.hazelcast.jet:hazelcast-jet-core:4.5:tests'
}
test {
useJUnitPlatform()
}