-
Notifications
You must be signed in to change notification settings - Fork 24.5k
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
Expand CCS tests coverage #84481
Comments
Pinging @elastic/es-search (Team:Search) |
Currently this qa module runs integration tests that cover cross-cluster search with both the local and the remote cluster on the same version. In order to also cover cross-cluster communication across multiple versions, this change adds additional test tasks that also start a remote cluster in the precious minor version and run the same tests against this configuration. Relates elastic#84481
As a first step I opened a PR that runs the existing qa:multi-cluster-search tests also against the previous minor version (#85281) |
Currently this qa module runs integration tests that cover cross-cluster search with both the local and the remote cluster on the same version. In order to also cover cross-cluster communication across multiple versions, this change adds additional test tasks that also start a remote cluster in all wire-compatible previous minor version and run the same tests against this configuration. Relates #84481
Currently the "skip" section in out rest yaml tests take into account the lowest minor version of nodes in the connected local cluster. For some multi cluster CCS test we will also need the ability to skip certain tests based on the connected remote cluster version, e.g. if in bwc tests some functionality isn't available yet on some bwc versions we test against. This change adds that ability to yaml rest test in the :qa:multi-cluster-search module. Relates to elastic#84481
Currently the "skip" section in out rest yaml tests take into account the lowest minor version of nodes in the connected local cluster. For some multi cluster CCS test we will also need the ability to skip certain tests based on the connected remote cluster version, e.g. if in bwc tests some functionality isn't available yet on some bwc versions we test against. This change adds that ability to yaml rest test in the :qa:multi-cluster-search module. Relates to #84481
Currently this qa module runs integration tests that cover cross-cluster search with both the local and the remote cluster on the same version. In order to also cover cross-cluster communication across multiple versions, this change adds additional test tasks that also start a remote cluster in all wire-compatible previous minor version and run the same tests against this configuration. Relates elastic#84481
Currently this qa module runs integration tests that cover cross-cluster search with both the local and the remote cluster on the same version. In order to also cover cross-cluster communication across multiple versions, this change adds additional test tasks that also start a remote cluster in all wire-compatible previous minor version and run the same tests against this configuration. Relates #84481
Currently the "skip" section in out rest yaml tests take into account the lowest minor version of nodes in the connected local cluster. For some multi cluster CCS test we will also need the ability to skip certain tests based on the connected remote cluster version, e.g. if in bwc tests some functionality isn't available yet on some bwc versions we test against. This change adds that ability to yaml rest test in the :qa:multi-cluster-search module. Relates to elastic#84481
Currently the "skip" section in out rest yaml tests take into account the lowest minor version of nodes in the connected local cluster. For some multi cluster CCS test we will also need the ability to skip certain tests based on the connected remote cluster version, e.g. if in bwc tests some functionality isn't available yet on some bwc versions we test against. This change adds that ability to yaml rest test in the :qa:multi-cluster-search module. Relates to #84481
Currently we only test a small subset of cross cluster search in rest tests in the 'multi-cluster-search' qa module. In order to increase test coverage for basic CCS setups, this change adds a new qa modula that uses a subset of existing search rest tests tests and runs them in a CCS scenario. Relates to elastic#84481
Regarding the last bullet point on the list I just did a quick sweep through the tests that somehow use the "proxy" mode setting instead of the default "sniff" mode. I found the following references test/framework/src/main/java/org/elasticsearch/test/AbstractMultiClustersTestCase.java
qa/multi-cluster-search/src/test/resources/rest-api-spec/test/multi_cluster/20_info.yml
qa/multi-cluster-search/src/test/resources/rest-api-spec/test/multi_cluster/15_connection_mode_configuration.yml
server/src/internalClusterTest/java/org/elasticsearch/search/ccs/CrossClusterSearchLeakIT.java
qa/ccs-rolling-upgrade-remote-cluster/src/test/java/org/elasticsearch/upgrades/SearchStatesIT.java
x-pack/qa/multi-cluster-search-security/src/test/resources/rest-api-spec/test/multi_cluster/70_connection_mode_configuration.yml
qa/remote-clusters/src/test/java/org/elasticsearch/cluster/remote/test/RemoteClustersIT.java
From what I can see so far it seems to me we do have some good coverage of the basic scenarios here. We might consider moving randomization of the connection to AbstractMultiClustersTestCase (similar to the setup in SearchStatesIT) and see if that breaks any existing tests. Also we can probably randomize the connection mode for the CCS test we currently add in #86521 |
Currently tests extending AbstractMultiClustersTestCase, i.e. mostly the CCS tests, use the default connection mode configuration of the abstract base tests, which is the default "sniff" mode. In order to increase coverage for "proxy" mode connections this change starts to randomize the connection type in the setup. Subclasses of this test are free to use or overwrite this behaviour. Relates to elastic#84481
Agreed @cbuescher thanks for digging. |
Currently tests extending AbstractMultiClustersTestCase, i.e. mostly the CCS tests, use the default connection mode configuration of the abstract base tests, which is the default "sniff" mode. In order to increase coverage for "proxy" mode connections this change starts to randomize the connection type in the setup. Subclasses of this test are free to use or overwrite this behaviour. Relates to #84481
Currently we only test a small subset of cross cluster search functionality in rest tests living in the 'multi-cluster-search' qa module. In order to increase test coverage for basic CCS functionality , this change adds a new qa modula that re-uses a subset of existing yaml rest tests and runs them in a slightly modified fashion in a CCS scenario. Document data and other write operations are executed agains a "remote" cluster, while all calls to the search API aand other APIs that support CCS are performed on a local cluster connected to the remote with all the data via CCS. Relates to #84481
@cbuescher sounds like this can be closed? :) |
Yes, we can close this, we covered all major points here. |
We currently have integration tests that cover cross-cluster search. What they don't cover is cross-cluster communication across multiple versions. We should make sure that these tests run against the previous minor version and double check their coverage (e.g. do they use the fields API? do they also cover field_caps? Which features of search and field_caps they cover?).
As a natural follow-up, it might make sense to consider reusing the existing field_caps and search tests yaml tests and run them in a CCS scenario, so that we don't need to maintain parallel CCS tests manually, as they tend to be forgotten over time.
Perhaps related to #78472 as it involves more CCS testing
Currently the steps we identified to reach better coverage are
proxy mode
in CCS is covered well in tests or if it also needs more coverageThe text was updated successfully, but these errors were encountered: