Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TA-3042 redis service and db #265

Merged
merged 107 commits into from
Mar 26, 2025
Merged

TA-3042 redis service and db #265

merged 107 commits into from
Mar 26, 2025

Conversation

solomonahmed
Copy link
Contributor

@solomonahmed solomonahmed commented Feb 4, 2025

What does this pull request do?

Please describe what you did.
Modified the circleci config file to populate a redis list with a list of feature tests to run.

Why make these changes?

Please describe why the changes were needed.
Tests will eventually be popped off the list by pods running in parallel to facilitate parallel running and partial test runs.

The following changes have been made:-

  • circleci jobs have been amended and new ones created as well as amendments to the workflow.

  • A new generate_release_name job has been created which runs a ruby script to generate a unique release name used by the helm install commands in the circleci config file. This is because the number of resources in the k8s cluster is going to increase per test run as we move to running ft's in parallel and associating a test run with a resource name will help manage this situation.

  • 2 helm install commands now create resources in 2 stages. There is a setup stage which creates the k8s redis db and service as well as a setup pod which populates a redis list. There is also a run stage which runs the feature tests as normal (currently sequentially in one pod).

  • The 2 stages are run by setting flags --set setup=true and --set run=true. These flags are intialised in the Values.yaml file and used in templates\main.yaml to include resources to run for each stage. The 2 types of resources are placed in either templates\stage or templates\run.

  • A redis-setup image is created in an early job which is referenced in the redis-setup.yaml k8s resource file. When run it checks for the existence of a features.txt file in the root folder. If it exists and it is not empty then it is assumed within it is a list of feature tests to run. These are then pushed one by one onto a redis list called features_list. If the file is empty (or the file doesn't exist) it is assumed that the full list of *.feature files found in the features folder needs to be pushed into the list. Eventually, moving forward it is this list which will be used by pods when running tests. Pods will pop tests of the list and run individual tests. This will facilitate running partial test runs as well as allowing pods to run in parallel pulling test info from this central work queue.

Checklist

@solomonahmed solomonahmed requested a review from a team as a code owner February 4, 2025 15:30
@vimalsuresh vimalsuresh merged commit 6026f76 into main Mar 26, 2025
10 of 12 checks passed
@vimalsuresh vimalsuresh deleted the TA-3042_redis_service_and_db branch March 26, 2025 22:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants