forked from iter8-tools/iter8
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add http payload and http/grpc multiple tests to workflow
Fix iter8-tools#1566\nRelated to iter8-tools#1567 Signed-off-by: Alan Cha <[email protected]>
- Loading branch information
Showing
2 changed files
with
338 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -90,6 +90,118 @@ jobs: | |
iter8 k report | ||
iter8 k log | ||
iter8 k delete | ||
http-payload-experiment: | ||
name: HTTP load test | ||
needs: get_versions | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
version: ${{ fromJson(needs.get_versions.outputs.matrix) }} | ||
|
||
steps: | ||
- name: Check out code | ||
uses: actions/checkout@v3 | ||
|
||
- name: Get modified files in the charts/iter8 folder | ||
id: modified-files | ||
uses: tj-actions/changed-files@v35 | ||
with: | ||
files: charts/iter8 | ||
|
||
- name: Install Iter8 | ||
run: GOBIN=/usr/local/bin go install github.com/iter8-tools/[email protected] | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
|
||
- name: Start kind cluster ${{ matrix.version }} | ||
uses: helm/[email protected] | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
with: | ||
wait: 300s | ||
node_image: ${{ matrix.version }} | ||
|
||
- name: Create app | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
run: | | ||
kubectl create deployment httpbin --image=kennethreitz/httpbin | ||
kubectl expose deployment httpbin --type=ClusterIP --port=80 | ||
kubectl wait --for=condition=available --timeout=60s deploy/httpbin | ||
- name: iter8 k launch | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
run: | | ||
iter8 k launch \ | ||
--localChart \ | ||
--chartName charts/iter8 \ | ||
--set "tasks={http}" \ | ||
--set http.url="http://httpbin.default/get" \ | ||
--set http.payloadStr=hello \ | ||
--set runner=job | ||
- name: Try other iter8 k commands | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
run: | | ||
iter8 k assert -c completed -c nofailure --timeout 60s | ||
iter8 k report | ||
iter8 k log | ||
iter8 k delete | ||
http-multiple-experiment: | ||
name: HTTP load test | ||
needs: get_versions | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
version: ${{ fromJson(needs.get_versions.outputs.matrix) }} | ||
|
||
steps: | ||
- name: Check out code | ||
uses: actions/checkout@v3 | ||
|
||
- name: Get modified files in the charts/iter8 folder | ||
id: modified-files | ||
uses: tj-actions/changed-files@v35 | ||
with: | ||
files: charts/iter8 | ||
|
||
- name: Install Iter8 | ||
run: GOBIN=/usr/local/bin go install github.com/iter8-tools/[email protected] | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
|
||
- name: Start kind cluster ${{ matrix.version }} | ||
uses: helm/[email protected] | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
with: | ||
wait: 300s | ||
node_image: ${{ matrix.version }} | ||
|
||
- name: Create app | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
run: | | ||
kubectl create deployment httpbin --image=kennethreitz/httpbin | ||
kubectl expose deployment httpbin --type=ClusterIP --port=80 | ||
kubectl wait --for=condition=available --timeout=60s deploy/httpbin | ||
- name: iter8 k launch | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
run: | | ||
iter8 k launch \ | ||
--localChart \ | ||
--chartName charts/iter8 \ | ||
--set "tasks={http}" \ | ||
--set http.endpoints.get.url=http://httpbin.default/get \ | ||
--set http.endpoints.getAnything.url=http://httpbin.default/anything \ | ||
--set http.endpoints.post.url=http://httpbin.default/post \ | ||
--set http.endpoints.post.payloadStr=hello \ | ||
--set runner=job | ||
- name: Try other iter8 k commands | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
run: | | ||
iter8 k assert -c completed -c nofailure --timeout 60s | ||
iter8 k report | ||
iter8 k log | ||
iter8 k delete | ||
http-looped-experiment: | ||
name: HTTP looped load test | ||
|
@@ -176,6 +288,124 @@ jobs: | |
wait: 300s | ||
node_image: ${{ matrix.version }} | ||
|
||
- name: Create app | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
run: | | ||
kubectl create deployment routeguide --image=golang --port=50051 \ | ||
-- bash -c "git clone -b v1.52.0 --depth 1 https://github.com/grpc/grpc-go; cd grpc-go/examples/route_guide; sed -i '' 's/localhost//' server/server.go; go run server/server.go" | ||
kubectl expose deployment routeguide --port=50051 | ||
kubectl wait --for=condition=available --timeout=60s deployment/routeguide | ||
- name: iter8 k launch | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
run: | | ||
iter8 k launch \ | ||
--localChart \ | ||
--chartName charts/iter8 \ | ||
--set tasks={grpc} \ | ||
--set grpc.host=routeguide.default:50051 \ | ||
--set grpc.protoURL=https://raw.githubusercontent.com/grpc/grpc-go/v1.52.0/examples/route_guide/routeguide/route_guide.proto \ | ||
--set grpc.call=routeguide.RouteGuide.GetFeature \ | ||
--set grpc.dataURL=https://raw.githubusercontent.com/iter8-tools/docs/v0.13.13/samples/grpc-payload/unary.json \ | ||
--set runner=job | ||
- name: Try other iter8 k commands | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
run: | | ||
iter8 k assert -c completed -c nofailure --timeout 60s | ||
iter8 k report | ||
iter8 k log | ||
iter8 k delete | ||
grpc-multiple-experiment: | ||
name: gRPC load test | ||
needs: get_versions | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
version: ${{ fromJson(needs.get_versions.outputs.matrix) }} | ||
|
||
steps: | ||
- name: Check out code | ||
uses: actions/checkout@v3 | ||
|
||
- name: Get modified files in the charts/iter8 folder | ||
id: modified-files | ||
uses: tj-actions/changed-files@v35 | ||
with: | ||
files: charts/iter8 | ||
|
||
- name: Install Iter8 | ||
run: GOBIN=/usr/local/bin go install github.com/iter8-tools/[email protected] | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
|
||
- name: Start kind cluster ${{ matrix.version }} | ||
uses: helm/[email protected] | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
with: | ||
wait: 300s | ||
node_image: ${{ matrix.version }} | ||
|
||
- name: Create app | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
run: | | ||
kubectl create deployment routeguide --image=golang --port=50051 \ | ||
-- bash -c "git clone -b v1.52.0 --depth 1 https://github.com/grpc/grpc-go; cd grpc-go/examples/route_guide; sed -i '' 's/localhost//' server/server.go; go run server/server.go" | ||
kubectl expose deployment routeguide --port=50051 | ||
kubectl wait --for=condition=available --timeout=60s deployment/routeguide | ||
- name: iter8 k launch | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
run: | | ||
iter8 k launch \ | ||
--localChart \ | ||
--chartName charts/iter8 \ | ||
--set tasks={grpc} \ | ||
--set grpc.host=routeguide.default:50051 \ | ||
--set grpc.protoURL=https://raw.githubusercontent.com/grpc/grpc-go/v1.52.0/examples/route_guide/routeguide/route_guide.proto \ | ||
--set grpc.endpoints.getFeature.call=routeguide.RouteGuide.GetFeature \ | ||
--set grpc.endpoints.getFeature.dataURL=https://raw.githubusercontent.com/iter8-tools/docs/v0.13.13/samples/grpc-payload/unary.json \ | ||
--set grpc.endpoints.listFeatures.call=routeguide.RouteGuide.ListFeatures \ | ||
--set grpc.endpoints.listFeatures.dataURL=https://raw.githubusercontent.com/iter8-tools/docs/v0.13.13/samples/grpc-payload/server.json \ | ||
--set runner=job | ||
- name: Try other iter8 k commands | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
run: | | ||
iter8 k assert -c completed -c nofailure --timeout 60s | ||
iter8 k report | ||
iter8 k log | ||
iter8 k delete | ||
grpc-experiment2: | ||
name: gRPC load test | ||
needs: get_versions | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
version: ${{ fromJson(needs.get_versions.outputs.matrix) }} | ||
|
||
steps: | ||
- name: Check out code | ||
uses: actions/checkout@v3 | ||
|
||
- name: Get modified files in the charts/iter8 folder | ||
id: modified-files | ||
uses: tj-actions/changed-files@v35 | ||
with: | ||
files: charts/iter8 | ||
|
||
- name: Install Iter8 | ||
run: GOBIN=/usr/local/bin go install github.com/iter8-tools/[email protected] | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
|
||
- name: Start kind cluster ${{ matrix.version }} | ||
uses: helm/[email protected] | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
with: | ||
wait: 300s | ||
node_image: ${{ matrix.version }} | ||
|
||
- name: Create app | ||
if: steps.modified-files.outputs.any_modified == 'true' | ||
run: | | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -66,6 +66,46 @@ jobs: | |
iter8 k assert -c completed -c nofailure -c slos --timeout 60s | ||
iter8 k report | ||
iter8 k delete | ||
- name: load-test-http with payload in Kubernetes | ||
run: | | ||
iter8 k launch --localChart \ | ||
--chartName charts/iter8 \ | ||
--set "tasks={ready,http,assess}" \ | ||
--set ready.deploy=httpbin \ | ||
--set ready.service=httpbin \ | ||
--set ready.timeout=60s \ | ||
--set http.url=http://httpbin.default/post \ | ||
--set http.payloadStr=hello \ | ||
--set http.duration="3s" \ | ||
--set assess.SLOs.upper.http/latency-p50=5 \ | ||
--set assess.SLOs.upper.http/latency-p90=10 \ | ||
--set assess.SLOs.upper.http/error-count=0 \ | ||
--set runner=job | ||
iter8 k assert -c completed -c nofailure -c slos --timeout 60s | ||
iter8 k report | ||
iter8 k delete | ||
- name: load-test-http with multiple endpoints in Kubernetes | ||
run: | | ||
iter8 k launch --localChart \ | ||
--chartName charts/iter8 \ | ||
--set "tasks={ready,http,assess}" \ | ||
--set ready.deploy=httpbin \ | ||
--set ready.service=httpbin \ | ||
--set ready.timeout=60s \ | ||
--set http.endpoints.get.url=http://httpbin.default/get \ | ||
--set http.endpoints.getAnything.url=http://httpbin.default/anything \ | ||
--set http.endpoints.post.url=http://httpbin.default/post \ | ||
--set http.endpoints.post.payloadStr=hello \ | ||
--set http.duration="3s" \ | ||
--set assess.SLOs.upper.http/latency-p50=5 \ | ||
--set assess.SLOs.upper.http/latency-p90=10 \ | ||
--set assess.SLOs.upper.http/error-count=0 \ | ||
--set runner=job | ||
iter8 k assert -c completed -c nofailure -c slos --timeout 60s | ||
iter8 k report | ||
iter8 k delete | ||
kubernetes-load-test-grpc: | ||
name: gRPC load test with various URLs | ||
|
@@ -85,6 +125,73 @@ jobs: | |
with: | ||
wait: 300s | ||
|
||
- name: Deploy gRPC service in the Kubernetes cluster | ||
run: | | ||
kubectl create deployment routeguide --image=golang --port=50051 \ | ||
-- bash -c "git clone -b v1.52.0 --depth 1 https://github.com/grpc/grpc-go; cd grpc-go/examples/route_guide; sed -i '' 's/localhost//' server/server.go; go run server/server.go" | ||
kubectl expose deployment routeguide --port=50051 | ||
- name: load test grpc service with protoURL | ||
run: | | ||
set -e | ||
export LOG_LEVEL=trace | ||
iter8 k launch --localChart \ | ||
--chartName charts/iter8 \ | ||
--set "tasks={ready,grpc,assess}" \ | ||
--set ready.service=hello \ | ||
--set ready.timeout=60s \ | ||
--set grpc.host=routeguide.default:50051 \ | ||
--set grpc.protoURL=https://raw.githubusercontent.com/grpc/grpc-go/v1.52.0/examples/route_guide/routeguide/route_guide.proto \ | ||
--set grpc.call=routeguide.RouteGuide.GetFeature \ | ||
--set grpc.dataURL=https://raw.githubusercontent.com/iter8-tools/docs/v0.13.13/samples/grpc-payload/unary.json \ | ||
--set assess.SLOs.upper.grpc/error-rate=0 \ | ||
--set assess.SLOs.upper.grpc/latency/mean=200 \ | ||
--set assess.SLOs.upper.grpc/latency/p90=500 \ | ||
--set assess.SLOs.upper.grpc/latency/p'97\.5'=600 \ | ||
--set runner=job | ||
iter8 k assert -c completed -c nofailure -c slos --timeout 60s | ||
iter8 k report | ||
iter8 k delete | ||
- name: load test grpc service with proto/data/metadata URLs | ||
run: | | ||
set -e | ||
iter8 k launch --localChart -l trace \ | ||
--chartName charts/iter8 \ | ||
--set "tasks={grpc,assess}" \ | ||
--set grpc.host=routeguide.default:50051 \ | ||
--set grpc.protoURL=https://raw.githubusercontent.com/grpc/grpc-go/v1.52.0/examples/route_guide/routeguide/route_guide.proto \ | ||
--set grpc.endpoints.getFeature.call=routeguide.RouteGuide.GetFeature \ | ||
--set grpc.endpoints.getFeature.dataURL=https://raw.githubusercontent.com/iter8-tools/docs/v0.13.13/samples/grpc-payload/unary.json \ | ||
--set grpc.endpoints.listFeatures.call=routeguide.RouteGuide.ListFeatures \ | ||
--set grpc.endpoints.listFeatures.dataURL=https://raw.githubusercontent.com/iter8-tools/docs/v0.13.13/samples/grpc-payload/server.json \ | ||
--set assess.SLOs.upper.grpc/error-rate=0 \ | ||
--set assess.SLOs.upper.grpc/latency/mean=200 \ | ||
--set assess.SLOs.upper.grpc/latency/p90=500 \ | ||
--set assess.SLOs.upper.grpc/latency/p'97\.5'=600 \ | ||
--set runner=job | ||
iter8 k assert -c completed -c nofailure -c slos --timeout 60s | ||
iter8 k report | ||
iter8 k delete | ||
|
||
kubernetes-load-test-grpc2: | ||
name: gRPC load test 2 with various URLs | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Install Go | ||
uses: actions/setup-go@v4 | ||
with: | ||
go-version: 1.19 | ||
- name: Check out code into the Go module directory | ||
uses: actions/checkout@v3 | ||
- name: Build and install Iter8 | ||
run: make install | ||
|
||
- name: Start kind cluster | ||
uses: helm/[email protected] | ||
with: | ||
wait: 300s | ||
|
||
- name: Deploy gRPC service in the Kubernetes cluster | ||
run: | | ||
kubectl create deploy hello --image=docker.io/grpc/java-example-hostname:latest --port=50051 | ||
|
@@ -130,4 +237,4 @@ jobs: | |
--set runner=job | ||
iter8 k assert -c completed -c nofailure -c slos --timeout 60s | ||
iter8 k report | ||
iter8 k delete | ||
iter8 k delete |