{"id":21357814,"url":"https://github.com/rcbops/exerstack","last_synced_at":"2025-07-13T00:33:21.149Z","repository":{"id":2355711,"uuid":"3318906","full_name":"rcbops/exerstack","owner":"rcbops","description":"devstack based cli exercisers","archived":false,"fork":false,"pushed_at":"2017-05-05T20:35:35.000Z","size":549,"stargazers_count":4,"open_issues_count":1,"forks_count":8,"subscribers_count":76,"default_branch":"master","last_synced_at":"2024-04-14T15:54:42.195Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Shell","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/rcbops.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}},"created_at":"2012-01-31T21:11:01.000Z","updated_at":"2016-12-03T06:27:01.000Z","dependencies_parsed_at":"2022-08-26T16:00:12.718Z","dependency_job_id":null,"html_url":"https://github.com/rcbops/exerstack","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcbops%2Fexerstack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcbops%2Fexerstack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcbops%2Fexerstack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcbops%2Fexerstack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rcbops","download_url":"https://codeload.github.com/rcbops/exerstack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225844818,"owners_count":17533161,"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-11-22T05:12:31.067Z","updated_at":"2024-11-22T05:12:31.709Z","avatar_url":"https://github.com/rcbops.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"exerstack  \n=========\n\nDescription\n--\nexerstack is a bash tool to test each of the python command line clients from the core OpenStack projects (glance, nova, swift, keystone, horizon)\n\n\nBasic usage\n--\n`exercise.sh [release] [tests]`\n\nExamples:\n\n`exercise.sh`\n\nwill run all tests that exist in the exercises directory against the default release (as defined in the top of the exerstack.sh script), unless skipped in testmap.conf\n\n`exercise.sh essex-final`\n\nwill run all tests that exist in the exercises directory, unless skipped in testmap.conf\n\n`exercise.sh essex-final glance.sh`\n\nwill run all glance tests that are valid for the essex-final release, unless skipped in testmap.conf\n\n\n\nFiles\n--\n`exercise.sh` - main script  \n`exercises/*` - each script in here defines a set of tests for a particular client  \n`exercises/include/*` - supporting files for some of the tests  \n`testmap.conf` - defines the tests you would like to skip, and the conditions under which you want to skip them  \n`openrc` - defines global environment variables  \n`localrc` - (optional) defines your own overrides for environment variables in here - gets called by openrc\n\nconfiguring testmap.conf\n--\n\ntestmap.conf can skip entire test sets (an entire *.sh file in exercises/), or individual tests within a test set.  Since OpenStack releases are alphabetical, it uses lexical comparison to see if a release is 'older than' or 'newer than' the one specified in the skip condition (ie diablo-final is 'older than' essex-e2 because d comes before e in the alphabet)\n\nThe structure of a skip condition is as follows:\n\n`[test_set:optional_test_name]=\"condition (\u003c=\u003e) release : message`\n\nExamples:\n\n`[keystone-manage]=\"\u003c essex-e4 : keystone-legacy was replaced with keystone-ksl in essex \u003e= e4\"`  \n\nskips the entire keystone-manage.sh test set for any release that is 'newer than' essex-e4.\n\n`[glance:011_glance_delete-TOKEN]=\"\u003c essex-e3 : glance token auth works on essex \u003c e3\"`\n\nskips the test '011\\_glance\\_delete-TOKEN' within the glance.sh test set, for any release that is 'newer than' essex-e3\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frcbops%2Fexerstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frcbops%2Fexerstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frcbops%2Fexerstack/lists"}