- 
                Notifications
    
You must be signed in to change notification settings  - Fork 96
 
Stream Smoke Test
Proton smoke tests are located in the folder: proton/tests/stream/test_stream_smoke, overall structure lays in:
proton    
│
└───tests
    │
    └───stream
        │   ci_runner.py
        │   ...
        └───helpers
        │   │   rockets.py 
        │   │   ... 
        │        
        └───test_stream_smoke
            │   test_query_smoke.py
            │   0000_smoke_case.json
            │   0001_view_case.json
            │   ...
            │   0014_versioned_kv_case.json
            │   ...
            └───configs
                │   config.json
                │   docker-compose.yaml
    
Proton stream smoke test leverage Pytest as main test automation framework. The main components includes:
The main entrance of smoke tests, it will scan all the folders specified in --test_folders for the test suite files (end with .json or .yaml or .yml such as 0000_smoke_case.json, ..., 0099_fixed_issues.json) in the stream folder and run tests based on the command parameters, main parameters are:
- --local: specify if ci_runner runs the tests in local mode, ci_runner.py will assume proton env is ready and Timeplus edition of clickhouse python driver is installed therefore won't use docker-compose to create proton environments or install proton python client. If no --local specified ci_runner will use docker-compose to create several proton dockers and try to install the Timeplus edition of clickhouse python driver and distribute test suite running on proton containers evenly.
 - --settings: nativelog or redp, specify which proton stream store settings will be tested. Proton has 2 types of stream store, one is to use own nativelog stream store and another is to use external kafka or redpanda as stream store. Under nativelog setting ci_runner will create nativelog stream store based proton container deployments and under redp setting ci_runner will create redpanda stream store based proton deployments. By specifying --settings=nativelog or --settings=redp or --settings=nativelog,redp, you could let ci_runner to proton container deployments for nativelog stream store setting or redpanda stream store setting or both and run all test suites on proton deployments in parallel.
 - --test_folders: specify which folders ci_runner.py should scan for test suite files
 - --debug: means open all the debug log, by default only info log is printed if no --debug specified when running ci_runner.py
 - --no_retry:
 - --test_suites: specify which tests suites will be run, if no test_suties specified, ci_runner.py will run all the test suites
 - --id: specify ids of test cases to be run, usually the test_suites need to be specified with id together, otherwise ci_runner.py will try to run all test cases with the id in all test suites that's meaningless
 - --help: show this help message and exit.
 
how to start ci_runner.py
Install python dependencies, get the requirements.txt from tests/stream/helpers and run pip -r requirements.txt
Enter the test/stream folder:
- start ci_runner in local mode: run 
python3 ./ci_runner.py --local --debug, it will run all the test suites on the nativelog settings. Note that proton-server must be started locally before running ci_runner.py. 
The main lib proton smoke tests uses is rockets.py
All the proton functional smoke tests.
- configs: config.json contains all the test environment configuration information for the settings including rest_settings which is about URIs of rest endpoints, proton informations (proton_server, proton_server_native_port, proton_admin, proton_server_contain_name) needed by the test scripts. For example there is a json object of "redp" in configs.json, when settings=redp