Skip to content

Commit

Permalink
Add http payload and http/grpc multiple tests to workflow
Browse files Browse the repository at this point in the history
Fix iter8-tools#1566\nRelated to iter8-tools#1567

Signed-off-by: Alan Cha <[email protected]>
  • Loading branch information
Alan-Cha committed Aug 8, 2023
1 parent 079392c commit c19811e
Show file tree
Hide file tree
Showing 2 changed files with 338 additions and 1 deletion.
230 changes: 230 additions & 0 deletions .github/workflows/testcharts.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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: |
Expand Down
109 changes: 108 additions & 1 deletion .github/workflows/testperformance.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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

0 comments on commit c19811e

Please sign in to comment.