{"id":15610404,"url":"https://github.com/awcodify/j-man","last_synced_at":"2025-11-08T04:03:51.111Z","repository":{"id":125584417,"uuid":"241589333","full_name":"awcodify/j-man","owner":"awcodify","description":"All in One JMeter Manager","archived":false,"fork":false,"pushed_at":"2020-04-14T05:06:46.000Z","size":1357,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-03-23T02:12:23.094Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/awcodify.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-19T10:07:18.000Z","updated_at":"2024-06-19T11:08:41.958Z","dependencies_parsed_at":null,"dependency_job_id":"f5bc91cc-8192-43be-96ae-2462eaac4504","html_url":"https://github.com/awcodify/j-man","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awcodify%2Fj-man","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awcodify%2Fj-man/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awcodify%2Fj-man/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/awcodify%2Fj-man/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/awcodify","download_url":"https://codeload.github.com/awcodify/j-man/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240331360,"owners_count":19784646,"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","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":"2024-10-03T06:01:31.310Z","updated_at":"2025-11-08T04:03:51.068Z","avatar_url":"https://github.com/awcodify.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# j-man [![codecov](https://codecov.io/gh/awcodify/j-man/branch/master/graph/badge.svg)](https://codecov.io/gh/awcodify/j-man) ![Go](https://github.com/awcodify/j-man/workflows/Go/badge.svg)\nAll in One JMeter Manager\n\n## Development\n ```bash \n ❯ cp config.yaml.example config.development.yaml\n ❯ cp air.conf.example air.conf\n ❯ air -c air.conf\n```\n## Guide\n### Database \u0026 Migrations\n* To create migration file, we are using [sql-migrate](https://github.com/rubenv/sql-migrate).\n* We are a \"database-first\" oriented. Use [sqlboiler](https://github.com/volatiletech/sqlboiler) to generate models (inside `app/models`).\n  * create config --\u003e `touch ~/.config/sqlboiler/sqlboiler.toml`\n  ```\n  [psql]\n\n   dbname    = \"jmanager\"\n   host      = \"localhost\"\n   port      = 5432\n   user      = \"jmanager_user\"\n   password  = \"password\"\n   sslmode   = \"disable\"\n  ```\n  * make sure you are on the root folder of project\n  * `sqlboiler psql --wipe -o app/models`\n* For extending the models to create helper or custom function, please put it inside `app/modext`\n\n### Build \u0026 Run\n```bash\n❯ go build -o jman cmd/jmanager/main.go\n❯ ./jman -e development app|web\n```\n\n### Use as Packages\n```Go\npackage main\n\nimport (\n\t\"flag\"\n\t\"log\"\n\n\t\"github.com/awcodify/j-man/aggregator\"\n\t\"github.com/awcodify/j-man/runner\"\n\t\"github.com/awcodify/j-man/utils\"\n\t\"github.com/awcodify/j-man/config\"\n)\n\nvar (\n\tjmeterPath, scriptPath, resultPath string\n\tusers, rampUp, duration            int64\n)\n\nfunc init() {\n\tflag.StringVar(\u0026jmeterPath, \"jmeterPath\", \"bin/jmeter\", \"Location of executable JMeter\")\n\tflag.StringVar(\u0026scriptPath, \"scriptPath\", \"./scripts/google.jmx\", \"Location of testing script\")\n\tflag.StringVar(\u0026resultPath, \"resultPath\", \"./results/log.csv\", \"Where the result file will be stored\")\n\tflag.Int64Var(\u0026users, \"users\", 1, \"How many users needed to test\")\n\tflag.Int64Var(\u0026rampUp, \"rampUp\", 1, \"Amount of time Jmeter should take to get all the threads sent for the execution\")\n\tflag.Int64Var(\u0026duration, \"duration\", 1, \"How the test will be running? (in miliseconds)\")\n}\n\nfunc main() {\n\tflag.Parse()\n\n\toptions := runner.Options{\n\t\tScriptPath:     scriptPath,\n\t\tResultFilePath: resultPath,\n\t\tUsers:          users,\n\t\tRampUp:         rampUp,\n\t\tDuration:       duration,\n\t}\n\tresultFilePath, err := runner.Run(jmeterPath, options)\n\tutils.DieIf(err)\n\n\tresult := aggregator.Collect(resultFilePath).ToResult().Aggregate()\n\n\tlog.Println(result)\n}\n\n```\n\nIt will return something like:\n```bash\n~/Documents/playground/j-man\n❯ go run cmd/jmanager/main.go\nCreating summariser \u003csummary\u003e\nCreated the tree successfully using ./scripts/google.jmx\nStarting the test @ Mon Feb 24 15:20:09 WIB 2020 (1582532409595)\nWaiting for possible Shutdown/StopTestNow/Heapdump message on port 4445\nsummary =      1 in 00:00:05 =    0.2/s Avg:  4667 Min:  4667 Max:  4667 Err:     0 (0.00%)\nTidying up ...    @ Mon Feb 24 15:20:14 WIB 2020 (1582532414711)\n... end of run\n2020/02/24 15:20:15 {{1514.8333333333333 3341}}\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawcodify%2Fj-man","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fawcodify%2Fj-man","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fawcodify%2Fj-man/lists"}