-
Task
-
Resolution: Done
-
Critical
-
None
-
None
-
False
-
-
False
-
-
We currently have diverging implementations of how we execute Istio integration tests against OpenShift on Jenkins vs. OpenShift CI. We should move these into a common code base so that executing the integration tests against an OCP cluster becomes a matter of calling e.g. a bash script. Ideally, that common code base also contains the list of executed/skipped tests, so we don't have to manage them in both CI systems separately when we make progress on supporting more integration tests on OCP.
Acceptance Criteria:
- Running integration tests from either CI system becomes a matter of checking out the correct repo and running a simple command
- Determining which tests are run vs which tests are skipped is not done in CI, but that information is stored alongside the test execution scripts
- Push the change into the upstream framework to improve the way that the test can be executed
To achieve this we agree to try to push upstream a change that includes a way to execute the test against the installed control plane by using the Istio resource from Sail Operator. This is part of the meeting agreements:
- Create a sort of transformer script that take all the config that currently is in the upstream test and sets it in a folder of the sail repo.
This is probably the best solution - We would need code that converts IstioOperator->Istio/IstioCNI resources
- We should inject somewhere around pkg/test/framework/components/istio/istio.go#L165C28-L165C31
- Instead of running `newKube()`, we could e.g. output the Istio config to a file and run a custom command when a specific env var is set
If we keep the changeset small, we can get it merged upstream
Update:
From the last meeting, we continue with the idea of pushing upstream improvements to allow running the integration test and allow some flexibility to the framework:
- We will leave the string setup as IstioOperator values in the upstream setup: https://github.com/istio/istio/blob/809657ab107cfc7e4c27351e85ac2c1f1c5fb021/tests/integration/pilot/analysis/main_test.go#L35
- We will need to replace the cfg.DeployIstio bool to a more complex object that allows us to set installation method Istioctl or IstioOperator, Helm, external binary (To allow us to set an external binary that installs the control for us, for example, for sail-operator), skip deploy
- We will need to create a converter to helm values inside the same Istio repo to allow us to convert the IstioOperator Values to Helm values that will be used to run the helm template and install from there
- The current IstioOperator setup yaml is being written in a temporary location for each test here: https://github.com/istio/istio/blob/f8b2c7004757120be51f8cd742f0db0be672d5a8/pkg/test/framework/components/istio/kube.go#L242. So, we can take directly the var iopFiles and passed to the converter
Upstream Issue: https://github.com/istio/istio/issues/53990