{"id":30883393,"url":"https://github.com/globocom/grou","last_synced_at":"2025-09-08T09:45:24.298Z","repository":{"id":54654045,"uuid":"102520646","full_name":"globocom/grou","owner":"globocom","description":"The Performance Test as a Service","archived":false,"fork":false,"pushed_at":"2024-08-26T16:07:26.000Z","size":8873,"stargazers_count":7,"open_issues_count":2,"forks_count":3,"subscribers_count":71,"default_branch":"master","last_synced_at":"2025-04-06T08:36:37.686Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/globocom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-09-05T19:17:27.000Z","updated_at":"2022-08-19T02:58:23.000Z","dependencies_parsed_at":"2022-08-13T23:00:31.096Z","dependency_job_id":null,"html_url":"https://github.com/globocom/grou","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/globocom/grou","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globocom%2Fgrou","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globocom%2Fgrou/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globocom%2Fgrou/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globocom%2Fgrou/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/globocom","download_url":"https://codeload.github.com/globocom/grou/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/globocom%2Fgrou/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274166945,"owners_count":25233959,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-08T09:45:17.114Z","updated_at":"2025-09-08T09:45:24.280Z","avatar_url":"https://github.com/globocom.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GROU\n\n## Requirements\n\n* docker\n* docker-compose\n*  python-openstackclient (pip install -r openstackclient-requirements.txt)\n* curl\n\n## start all necessary services\n```\ndocker-compose up -d\n```\n## OpenStack Keystone: Create domain, project and user\n```\nwhile ! curl --connect-timeout 1 http://127.0.0.1:5000 \u003e /dev/null 2\u003e /dev/null; do echo \"Waiting 5000/tcp... (press CTRL+C to cancel)\"; sleep 5; done\ncat \u003c\u003cEOF | docker exec -i k1.local bash -\nsource ~/openrc\nopenstack domain create grou \u003e /dev/null\nopenstack project create grou --domain grou \u003e /dev/null\nopenstack project create grouadmins --domain grou \u003e /dev/null\nopenstack user create --domain grou --project grou --password grou grouadmin \u003e /dev/null\nopenstack role add --domain grou --project-domain grou-grou --user grouadmin admin \u003e /dev/null\nopenstack role add --project grou --project-domain grou --user grouadmin admin \u003e /dev/null\nopenstack role add --project grouadmins --project-domain grou --user grouadmin admin \u003e /dev/null\nopenstack role assignment list \u003e /dev/null\nEOF\n```\n# Define necessary var env\n```\nexport OS_USER_DOMAIN_NAME=grou\nexport OS_IMAGE_API_VERSION=2\nexport OS_PROJECT_NAME=grou\nexport OS_IDENTITY_API_VERSION=3\nexport OS_PASSWORD=grou\nexport OS_AUTH_URL=http://k1:5000/v3\nexport OS_USERNAME=grouadmin\nexport OS_PROJECT_DOMAIN_NAME=grou\n\nexport REQUESTS_LIMIT=10\n```\n# If use email notification\n```\nexport MAIL_HOST=\"smtp.gmail.com\"\nexport MAIL_PORT=587\nexport MAIL_TLS=\"true\"\nexport MAIL_USER=\"no-replay+anemailvalid@gmail.com\"\nexport MAIL_PASS=\"gmailpass\"\n```\n## Build and run GROU\n```\nnohup make grou run \u003e /tmp/out \u003c /dev/null 2\u003e\u00261 \u0026\nwhile ! curl --connect-timeout 1 http://127.0.0.1:8080 \u003e /dev/null 2\u003e /dev/null; do echo \"Waiting 8080/tcp... (press CTRL+C to cancel)\"; sleep 5; done\n```\n## Get Keystone Token\n```\nexport TOKEN=\"$(curl --silent -u grouadmin:grou 127.0.0.1:8080/token/grou | jq -r .token)\"\n```\n# OR using \n```\nexport TOKEN=\"$(openstack token issue -f value -c id)\"\n```\n## Create new test\n```\ncurl -v -H'content-type:application/json' -H\"x-auth-token:${TOKEN}\" -d'\n{\n  \"name\":\"'$RANDOM'\",\n  \"durationTimeMillis\":10000,\n  \"project\":\"grou\",\n  \"tags\":[\"dsfdsfdsfds\", \"sdfsdfds\", \"23312 fsdfds\", \"d3f434\", \"rsdfsd\", \"fdsdfsdfsd\"],\n  \"notify\":[ \"mailto:root@localhost.localdomain\", \"http://mywebhook.localhost.localdomain\" ],\n  \"properties\": {\n    \"requests\": [\n      {\n        \"order\": 1,\n        \"uri\": \"https://www.bing.com\"\n      },\n      {\n        \"order\": 2,\n        \"uri\": \"https://httpbin.org/post\",\n        \"method\": \"POST\",\n        \"headers\": { \\\"content-type\\\": \\\"application/json\\\" },\n        \"body\": \"{ \\\"id\\\": \\\"test\\\" }\"\n      },\n      {\n        \"order\": 3,\n        \"uri\": \"https://httpbin.org/post\",\n        \"method\": \"POST\",\n        \"headers\": { \"content-type\": \"application/json\" },\n        \"body\": \"{ \\\"id\\\": \\\"test\\\" }\",\n        \"auth\": [\n          { \"credentials\": \"admin:password\" },\n          { \"preemptive\": \"true\" }\n        ]\n      },\n      {\n        \"order\": 4,\n        \"uri\": \"https://httpbin.org/post\",\n        \"method\": \"POST\",\n        \"headers\": { \"content-type\": \"application/x-www-form-urlencoded\" },\n        \"body\": \"login=admin\u0026pass=password\",\n        \"saveCookies\": true\n      }\n    ],\n    \"numConn\": 1000,\n    \"parallelLoaders\": 1,\n    \"followRedirect\": true,\n    \"monitTargets\": \"zero://target1,zero://target2\"\n  }\n}' http://127.0.0.1:8080/tests\n```\n## List all tests\n```\ncurl -v -H'content-type:application/json' http://127.0.0.1:8080/tests\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglobocom%2Fgrou","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fglobocom%2Fgrou","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fglobocom%2Fgrou/lists"}