-
Notifications
You must be signed in to change notification settings - Fork 136
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: Initial changes for distributed jmeter (#4289)
* feat: Initial changes for distributed jmeter Signed-off-by: hiteshwani <[email protected]> * Added jmeter slaves script and Dockerfile Signed-off-by: hiteshwani <[email protected]> * Removed duplicate files and imported from existing jmeter executor Signed-off-by: hiteshwani <[email protected]> * Add secret refs for git username and token for slave pods Signed-off-by: hiteshwani <[email protected]> * Support for user provided plugins (#2) * Support for user provided plugins * Add secret refs for git username and token for slave pods Signed-off-by: hiteshwani <[email protected]> * Modified logic for adding JMETER_USER_PLUGINS_FOLDER env var Signed-off-by: hiteshwani <[email protected]> * Support for user provided plugins Signed-off-by: Aman Parauliya <[email protected]> * Add secret refs for git username and token for slave pods Signed-off-by: hiteshwani <[email protected]> * Modified logic for adding JMETER_USER_PLUGINS_FOLDER env var Signed-off-by: hiteshwani <[email protected]> --------- Signed-off-by: hiteshwani <[email protected]> Signed-off-by: Aman Parauliya <[email protected]> Co-authored-by: hiteshwani <[email protected]> * Update README file for Jmeterd Signed-off-by: Aman Parauliya <[email protected]> * Changed base image to kubeshop/jmeter and removed tests (#5) * Changed base image to kubeshop/jmeter and removed tests Signed-off-by: hiteshwani <[email protected]> * modify slaves script so it will not exited on error Signed-off-by: hiteshwani <[email protected]> --------- Signed-off-by: hiteshwani <[email protected]> * Support for user.properties file (#3) * Support for user provided plugins Signed-off-by: Aman Parauliya <[email protected]> * Add secret refs for git username and token for slave pods Signed-off-by: hiteshwani <[email protected]> * Modified logic for adding JMETER_USER_PLUGINS_FOLDER env var Signed-off-by: hiteshwani <[email protected]> * Added the support for user.properties file --------- Signed-off-by: Aman Parauliya <[email protected]> Signed-off-by: hiteshwani <[email protected]> Co-authored-by: hiteshwani <[email protected]> * Addressed review comments Signed-off-by: Aman Parauliya <[email protected]> * Fixed review comments of Dejan Signed-off-by: Aman Parauliya <[email protected]> * Refactored slaves pod configuration and added validation for pod name (#8) Signed-off-by: hiteshwani <[email protected]> * Update README file of Distributor JMeter Signed-off-by: Aman Parauliya <[email protected]> * Adding a new example in a new folder named giflow under the examples folder Signed-off-by: Aman Parauliya <[email protected]> * Remove plugins from /lib Signed-off-by: hiteshwani <[email protected]> --------- Signed-off-by: hiteshwani <[email protected]> Signed-off-by: Aman Parauliya <[email protected]> Co-authored-by: Aman Parauliya <[email protected]> Co-authored-by: Aman Parauliya <[email protected]>
- Loading branch information
1 parent
3f7f16d
commit 150c176
Showing
36 changed files
with
2,115 additions
and
0 deletions.
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 |
---|---|---|
@@ -0,0 +1,10 @@ | ||
.git | ||
.gitignore | ||
.golangci.yml | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
LICENSE | ||
Makefile | ||
README.md | ||
temp | ||
data |
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 |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# used if storage backend is behind HTTPS, should be set to false for local development | ||
RUNNER_SSL=false | ||
# used to enable/disable scrapper, should be set to false for local development | ||
RUNNER_SCRAPPERENABLED=false | ||
# path to the data/ directory where JMeter will run and store results | ||
RUNNER_DATADIR=./data |
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 |
---|---|---|
@@ -0,0 +1,35 @@ | ||
### Go template | ||
# Binaries for programs and plugins | ||
*.exe | ||
*.exe~ | ||
*.dll | ||
*.so | ||
*.dylib | ||
|
||
# Test binary, built with `go test -c` | ||
*.test | ||
|
||
# Output of the go coverage tool, specifically when used with LiteIDE | ||
*.out | ||
|
||
# Dependency directories (remove the comment below to include it) | ||
vendor/ | ||
|
||
### JetBrains | ||
.idea | ||
*.iml | ||
|
||
# Helm | ||
Chart.lock | ||
|
||
.DS_Store | ||
bin/ | ||
site | ||
dist/ | ||
data/ | ||
temp/ | ||
|
||
.vscode | ||
|
||
### Environment | ||
.env |
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 |
---|---|---|
@@ -0,0 +1,29 @@ | ||
run: | ||
timeout: 5m | ||
|
||
linters: | ||
disable-all: true | ||
enable: | ||
- errcheck | ||
- goimports | ||
- govet | ||
- staticcheck | ||
- revive | ||
- unused | ||
- errname | ||
- errorlint | ||
- gocyclo | ||
- gofmt | ||
- goimports | ||
- misspell | ||
- predeclared | ||
|
||
linters-settings: | ||
govet: | ||
check-shadowing: true | ||
lll: | ||
line-length: 150 | ||
misspell: | ||
locale: US | ||
goimports: | ||
local-prefixes: github.com/kubeshop/testkube,github.com/kubeshop/testkube-executor-jmeter |
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 |
---|---|---|
@@ -0,0 +1,30 @@ | ||
# testkube (by Kubeshop) Community Code of Conduct | ||
|
||
Testkube follows the CNCF Code of Conduct. The text of the CNCF CoC is replicated below. If you notice that this is out of date, please file an issue. | ||
|
||
If you notice a violation of the Code of Conduct at an event or meeting, in Slack, or in another communication mechanism, reach out to the Testkube Code of Conduct Committee. You can reach us by email at [email protected] Your anonymity will be protected. | ||
|
||
# CNCF Community Code of Conduct v1.0 | ||
|
||
## Contributor Code of Conduct | ||
|
||
As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities. | ||
|
||
We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality. | ||
|
||
## Examples of unacceptable behavior by participants include: | ||
|
||
- The use of sexualized language or imagery | ||
- Personal attacks | ||
- Trolling or insulting/derogatory comments | ||
- Public or private harassment | ||
- Publishing other's private information, such as physical or electronic addresses, without explicit permission | ||
- Other unethical or unprofessional conduct. | ||
|
||
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct. By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team. | ||
|
||
This code of conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. | ||
|
||
Instances of abusive, harassing, or otherwise unacceptable behavior in Testkube may be reported by contacting the Testkube Code of Conduct Committee via [email protected]. | ||
|
||
This Code of Conduct is adapted from the Contributor Covenant (https://contributor-covenant.org), version 1.2.0, available at https://contributor-covenant.org/version/1/2/0/ |
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 |
---|---|---|
@@ -0,0 +1,44 @@ | ||
# Contribution to Testkube | ||
|
||
Thanks for reaching out contribution 🎉 | ||
|
||
If you're new in Open-source community there is nice guide how to start contributing to projects: | ||
https://github.com/firstcontributions/first-contributions | ||
|
||
## Code of Conduct | ||
|
||
This project and everyone participating in it is governed by the Testkube [code of conduct](CODE_OF_CONDUCT.md) | ||
|
||
## Have questions or idea? | ||
|
||
We're using github discussions for managing pre-development ideas and clarifications, feel free to add one at our [Q&A discussion page](https://github.com/kubeshop/testkube/discussions/categories/q-a) | ||
|
||
New ideas should be placed in [Ideas discussion page](https://github.com/kubeshop/testkube/discussions/categories/ideas) | ||
|
||
|
||
|
||
## General guidance for contributing to Testkube project | ||
|
||
You're very welcome to help in testkube development, there is a lot of incoming work to do :). | ||
|
||
We're trying hard to limit technical debt from the beginning so we defined simple rules into Testkube repo to help with it. | ||
|
||
### For golang based components | ||
|
||
- Always use gofmt (there is only one true way of doing code formatting ;) ). | ||
- Follow golang good practices (proverbs) in your code. | ||
- Tests are your friend (we will target 80% CC in our code). | ||
- Use clean names, don't brake basic design patterns and rules. | ||
|
||
### For infrastructure / Kubernetes based components | ||
|
||
- We're using helm charts to build and share Testkube | ||
- Comment non-obvious decisions | ||
- Use current Helm/Kubernetes versions | ||
|
||
|
||
## How can I help? | ||
|
||
- By fixing [one of many Issues](https://github.com/kubeshop/testkube/issues) - simply fork our repo and create new Pull Request with new code changes. | ||
- By helping to reach out valid results [from discussions](https://github.com/kubeshop/testkube/discussions) | ||
|
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 |
---|---|---|
@@ -0,0 +1,21 @@ | ||
MIT License | ||
|
||
Copyright (c) 2021 Kubeshop | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
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 |
---|---|---|
@@ -0,0 +1,64 @@ | ||
REPOSITORY ?= kubeshop | ||
NAME ?= testkube-jmeterd-executor | ||
SLAVES_NAME ?= testkube-jmeterd-slaves | ||
LOCAL_TAG ?= 999.0.0 | ||
BIN_DIR ?= $(HOME)/bin | ||
|
||
.PHONY: build | ||
build: | ||
go build -o $(BIN_DIR)/$(NAME) cmd/agent/main.go | ||
|
||
.PHONY: build-local-linux | ||
build-local-linux: | ||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o dist/runner cmd/agent/main.go | ||
|
||
.PHONY: run | ||
run: | ||
EXECUTOR_PORT=8082 go run cmd/agent/main.go ${run_args} | ||
|
||
.PHONY: docker-build | ||
docker-build: | ||
docker build -t $(REPOSITORY)/$(NAME) -f build/agent/Dockerfile . | ||
|
||
.PHONY: docker-build-local | ||
docker-build-local: build-local-linux | ||
docker build -t $(REPOSITORY)/$(NAME):$(LOCAL_TAG) -f build/agent/local.Dockerfile . | ||
|
||
docker-build-slaves: | ||
docker build -t $(REPOSITORY)/$(SLAVES_NAME):$(LOCAL_TAG) -f build/slaves/Dockerfile . | ||
|
||
.PHONY: kind-load-local | ||
kind-load-local: build-local-linux | ||
kind load docker-image kubeshop/testkube-jmeterd-executor:999.0.0 | ||
|
||
.PHONY: test | ||
test: | ||
go test ./... -cover | ||
|
||
.PHONY: integration-test | ||
integration-test: | ||
INTEGRATION=y gotestsum --format short-verbose -- -run _Integration -cover ./... | ||
|
||
.PHONY: cover | ||
cover: | ||
@go test -failfast -count=1 -v -tags test -coverprofile=./testCoverage.txt ./... && go tool cover -html=./testCoverage.txt -o testCoverage.html && rm ./testCoverage.txt | ||
open testCoverage.html | ||
|
||
.PHONY: version-bump | ||
version-bump: version-bump-patch | ||
|
||
.PHONY: version-bump-patch | ||
version-bump-patch: | ||
go run cmd/tools/main.go bump -k patch | ||
|
||
.PHONY: version-bump-minor | ||
version-bump-minor: | ||
go run cmd/tools/main.go bump -k minor | ||
|
||
.PHONY: version-bump-major | ||
version-bump-major: | ||
go run cmd/tools/main.go bump -k major | ||
|
||
.PHONY: version-bump-dev | ||
version-bump-dev: | ||
go run cmd/tools/main.go bump --dev |
Oops, something went wrong.