-
Notifications
You must be signed in to change notification settings - Fork 28
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
Add capability to run test services on different OCP than Quarkus application #844
Comments
Can we have time estimation for individual items + analysis for necessary changes in https://github.com/quarkus-qe/quarkus-test-suite ? Will be the change backwards compatible and transparent for users of one cluster? @michalvavrik any thoughts on this analysis? |
Many, but sorry, don't have time. I need to finish other stuff right now, I shall comment on this later this week. |
I glanced at the description it seems like a whole lot of changes, and if I get it you right (+ few assumptions):
If I read it correctly, you basically have a choice, either run all the services on different cluster or none? I presume it would be complicated for containers to communicate between each other when on different clusters for we would need to adjust routes, urls, etc.?
At least this feature should only be activated for test classes that really needs it. It must not be enabled for all the tests so that we actually test on ARM what we can. That is why I suggested to only enable it based on list of non-compatible images rather than one flag.
Plus, I can't imagine it will ever work if we use |
I'll respond inline:
This is by design. It's kind of hard for me to figure out how to sanely do operators - for example, in case of serverless, the Quarkus application needs to be on the same cluster as the operator as it is operand. For operators that 'only' provide services, it could be done too. If we made a change to operators, we would need to be aware of it in tests.
I would actually like to run all the test services on different cluster if different testing cluster is specified.
Yes, I think this is correct.
Not sure what this means. Ideally, workflow in my mind was this: If the properties (API endpoint, username, password) for the service/application cluster are not set, try to fall back on default kubernetes auth and use this auth for both the service and application clients, which would kind of ensure compatibility of behaviour in the most cases. We would actually have to inject two clients, though - the 'service' cluster one and the 'application' cluster one. We need to do this because we have tests configuring the test services (for example the ones configuring Streams/Infinispan with SSL/SASL).
Correct. I don't think this change is hardest, to be honest - all the OpenShift managed resources are deployed using -some- templates, which are parameterized. IIRC the logic for getting URLs/ports is done around https://github.com/quarkus-qe/quarkus-test-framework/blob/main/quarkus-test-openshift/src/main/java/io/quarkus/test/services/containers/OpenShiftContainerManagedResource.java#L70 . Those would need to be updated to return routes rather than internal OpenShift service URLs.
This is a possible way, but the ARM profile is currently test-suite only. I kind of wanted to do this feature the most general/useful way possible. The codebase is kinda complicated already as it is, and I think additional fork in processing that's not general in configuration would make it even harder to maintain.
This is one thing I didn't really realise, and that's just how much the Also, I think this will be the harder part. |
This issue seems like a wonderful opportunity to also address |
Add capability to run test services on different OCP than the tested Quarkus application. This is to allow for e.g. running the tested Quarkus version on different platform than OCP.
Required steps:
quarkus-test-openshift
JUnit plugin with credentials and API url for the two clusters.oc
client locationquarkus-test-service-*
need to be updated also to expose the routes for the same reasonThe text was updated successfully, but these errors were encountered: