-
Notifications
You must be signed in to change notification settings - Fork 64
Create e2e test to emulate deployment use cases for MCAD #399
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
Comments
The most critical scenario is the clean, orchestrated MCAD deployment and configuration.
We can then relax this scenario by deploying either:
We can then consider scenarios including existing AppWrappers (running or not). |
the above step is a 3rd AW, correct? Based on the next step there is still available quota but not enough for the AW in the next step?
the above step is 4th AW, correct? This is assuming available quota < 4th AW quota demand?
this is assuming the 4th AW, correct? implying 4th AW quota demand <= current available quota + quota demand from in step 2, correct?
this is assuming a 5th AW quota demand <= quota node entitlement + borrowing if applicable? |
Would this test case have different behavior if the AW
@z103cb could you explain a bit more about what this test case is testing? Plus can I assume the # of AWs submitted is the same as the previous test case? |
this is assuming this final AW quota demand <= quota node entitlement + borrowing if applicable? |
Thanks @z103cb for the test case descriptions above. A couple scenario, not necessarily related to
Another Scenario
|
@tardieu I believe that these scenarios are mostly covered by the existing e2e test. A slight modification to tests would be needed to flip the order of steps in the test setup as such: - script: helm upgrade --install mcad-controller deployment/mcad-controller --skip-crds --namespace kube-system --wait --set loglevel=${LOG_LEVEL} --set resources.requests.cpu=1000m --set resources.requests.memory=1024Mi --set resources.limits.cpu=4000m --set resources.limits.memory=4096Mi --set image.repository=$IMAGE_REPOSITORY_MCAD --set image.tag=$IMAGE_TAG_MCAD --set image.pullPolicy=$MCAD_IMAGE_PULL_POLICY --set configMap.quotaEnabled='"true"' --set quotaManagement.rbac.apiGroup=ibm.com --set quotaManagement.rbac.resource=quotasubtrees --set configMap.name=mcad-controller-configmap --set configMap.preemptionEnabled='"true"'
- command: kubectl apply -f ./e2e-kuttl/install-quota-subtree.yaml Is this alteration sufficient or you think we need a separate test to cover the scenario you have described ? |
|
Yes, that is correct. |
@dmatch01 I think that these scenarios should be perhaps be incorporated into the existing end to end tests. I feel that they are perhaps outside the scope / purpose of this issue which is to define the test cases that would allow us to validate that MCAD works when is deployed with or without quota management feature enabled and pre existing running / submitted app wrappers. Do you mind if I create a separate issue to track their implementation ? |
No problem, thank you! |
Yes this should cover the 1st scenario I described. |
AFAIK scenarios 1 and 2 are targeting hard quotas since they assume some AWs will remaining pending which implies they cannot successfully borrow. We should also test the introduction of soft quotas, borrowing, and preemption. Variation of scenario 1 should be something like:
For the restart scenario:
If we want to cover all possible states at the time we either 1 enable quotas or 2 restart MCAD we also need to consider states where we have pending AWs in 1 because of lack of resources in 2 because of lack of resources and/or lack of quota. In particular for 2, we would like the running AWs to continue running and pending AWs to remain pending. While this is probably less important in practice, we could also have a default hard quota that is below the volume of running AWs at the time we enable quotas. |
Looking more carefully at scenario 1 in #400, it looks like you already have soft and hard quotas, so variation of scenario 1 above could probably be instead an extension of the implemented scenario where step 10 verifies that the AW launched at step 6 has been preempted by the AW launched at step 9. This can probably be achieved by making |
Blocked by #297 |
Uh oh!
There was an error while loading. Please reload this page.
Description
We need the to ensure that MCAD functions correctly in the following deployment scenarios which are most likely encountered when upgrading / deploying a new version of MCAD with the quota management feature enabled. It is assumed that the changes in #396, are incorporated and that the "default" quota node is available.
To achieve the goals, we'll need to augment our
kuttl
end to end tests to support the following scenarios. It is assumed that the same kind configuration / cluster setup as the existing end to end tests is used. The scenarios below assume that the kind cluster is up and running.Deployment Scenarios
Deploy in cluster with running app wrappers where quota management was not previously deployed
Purpose
To validate that we can deploy MCAD with quota management feature turned on a cluster where there are app wrappers in a RUNNING, COMPLETED, RUNNING HOLD COMPLETION state which did not specify quota labels. Once the MCAD is re-deployed in with quota management feature enabled, it is expected that existing app wrappers in RUNNING and RUNNING HOLD COMPLETION state without any quota management labels will use the quota from the "default" quota node.
Steps
Deploy in cluster with running app wrappers where quota management was previously deployed
Purpose
To validate that we can deploy and re deploy MCAD with quota management feature turned on a cluster where there are app wrappers in a RUNNING, COMPLETED, RUNNING HOLD COMPLETION with specific quota labels. Once the MCAD is re-deployed in with quota management feature enabled, it is expected that existing app wrappers in RUNNING and RUNNING HOLD COMPLETION state would use up the quota from their respective nodes.
Steps:
Note: This scenario should be probably incorporated into the existing quota management e2e test.
Update quota trees in a running cluster
Purpose
To validate that updates to the quota trees can be processed while MCAD is running and there are no disruption in processing for existing app wrappers and new app wrappers can be submitted.
Steps
The text was updated successfully, but these errors were encountered: