 Martin Kopec
		
	
	f018caa06e
	
	
	Unite tempest_dir in _get_next_stream_subunit_output_file
			Martin Kopec
		
	
	f018caa06e
	
	
	Unite tempest_dir in _get_next_stream_subunit_output_file
		
			
			The method have used tempest_dir value given by the argument as well as self.tempest_dir value which was confusing and lead to a unit test failure in the case when tempest_dir was a valid path to an existing tempest environment. Usually self.tempest_dir and tempest_dir were the same, the values were different only in a unittest which was editing the tempest dir path for test purposes. The docstring suggests that the method should use the value from the argument, therefore the patch removes the self.tempest_dir occurrence. Change-Id: I80dc38e6f0dcff1956f2881894d51a1c35577b33
RefStack Client
RefStack-client team and repository tags
Overview
refstack-client is a command line utility that allows you to execute Tempest test runs based on configurations you specify. When finished running Tempest it can send the passed test data to a RefStack API server.
Environment setup
We've created an "easy button" for Ubuntu, Centos, RHEL and openSUSE.
- Make sure you have - gitinstalled
- Get the refstack client: - git clone https://opendev.org/osf/refstack-client.git
- Go into the refstack-client directory: - cd refstack-client
- Run the "easy button" setup: - ./setup_env- Options: - a. -c option allows to specify SHA of commit or branch in Tempest repository which will be installed. - b. -t option allows to specify tag in Tempest repository which will be installed. For example: execute - ./setup_env -t tags/3to install Tempest tag-3.- c. By default, Tempest will be installed from commit 8316f962c52b01edc5be466b18e54904e2a1248a (Sept, 2018). 
Usage
- Prepare a tempest configuration file that is customized to your cloud environment. Samples of minimal Tempest configurations are provided in the - etcdirectory in- tempest.conf.sampleand- accounts.yaml.sample. Note that these samples will likely need changes or additional information to work with your cloud.- Note: Use Tempest Pre-Provisioned credentials to provide user test accounts. : 
- Go into the refstack-client directory: - cd ~/refstack-client
- Source to use the correct Python environment: - source .venv/bin/activate
- Generate tempest.conf using refstack-client: - refstack-client config --use-test-accounts <path to account file>- The above command will create the tempest.conf in etc folder. - Note: If account file is not available, then: - Source the keystonerc file containing cloud credentials and run: - refstack-client config- It will create accounts.yaml and temepst.conf file in etc folder. 
 
- Validate your setup by running a short test: - refstack-client test -c <Path of the tempest configuration file to use> -v -- --regex tempest.api.identity.v3.test_tokens.TokensV3Test.test_create_token
- Run tests. - To run the entire API test set: - refstack-client test -c <Path of the tempest configuration file to use> -v- To run only those tests specified in an OpenStack Powered (TM) Guideline: - refstack-client test -c <Path of the tempest configuration file to use> -v --test-list <Absolute path of test list>- For example: - refstack-client test -c ~/tempest.conf -v --test-list "https://refstack.openstack.org/api/v1/guidelines/2018.02/tests?target=platform&type=required&alias=true&flag=false"- This will run only the test cases required by the 2018.02 guidelines that have not been flagged. - Note: - Adding the -voption will show the Tempest test result output.
- Adding the --uploadoption will have your test results be uploaded to the default RefStack API server or the server specified by--url.
- Adding the --test-listoption will allow you to specify the file path or URL of a test list text file. This test list should contain specific test cases that should be tested. Tests lists passed in using this argument will be normalized with the current Tempest environment to eliminate any attribute mismatches.
- Adding the --urloption will allow you to change where test results should be uploaded.
- Adding the -roption with a string will prefix the JSON result file with the given string (e.g.-r my-testwill yield a result file like 'my-test-0.json').
- Adding --enables you to pass arbitrary arguments to tempest run. After the first--, all other subsequent arguments will be passed to tempest run as is. This is mainly used for quick verification of the target test cases. (e.g.-- --regex tempest.api.identity.v2.test_token)
- If you have provisioned multiple user/project accounts you can run
parallel test execution by enabling the --parallelflag.
 - Use - refstack-client test --helpfor the full list of arguments.
- Adding the 
- Upload your results. - If you previously ran a test with refstack-client without the - --uploadoption, you can later upload your results to a RefStack API server with your digital signature. By default, the results are private and you can decide to share or delete the results later.- Following is the command to upload your result: - refstack-client upload <Path of results file> -i <path-to-private-key>- The results file is a JSON file generated by refstack-client when a test has completed. This is saved in .tempest/.stestr. When you use the - uploadcommand, you can also override the RefStack API server uploaded to with the- --urloption.- Alternatively, you can use the - upload-subunitcommand to upload results using an existing subunit file. This requires that you pass in the Keystone endpoint URL for the cloud that was tested to generate the subunit data:- refstack-client upload-subunit \ --keystone-endpoint http://some.url:5000/v3 <Path of subunit file> \ -i <path-to-private-key>- Intructions for uploading data with signature can be found at https://opendev.org/osf/refstack/src/branch/master/doc/source/uploading_private_results.rst 
- Create a JSON web token to use for authentication to your privately uploaded data - In order to authenticate to the refstack-server to which you have uploaded your data, you will need to generate a JSON webtoken. To generate a valid token, use the command: - jwt --key="$( cat %path to private key% )" --alg=RS256 user_openid=%openstackid% exp=+100500- To test authentication in the API, use the command: - curl -k --header "Authorization: Bearer %token%" https://localhost.org/v1/profile
- List uploaded test set. - You can list previously uploaded data from a RefStack API server by using the following command: - refstack-client list --url <URL of the RefStack API server>
Tempest hacking
By default, refstack-client installs Tempest into the
.tempest directory. If you're interested in working with
Tempest directly for debugging or configuration, you can activate a
working Tempest environment by switching to that directory and using the
installed dependencies.
- cd .tempest
- source ./.venv/bin/activateand run tests manually with- tempest run.
This will make the entire Tempest environment available for you to
run, including tempest run.