diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2586551a9..50e403f78 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -60,7 +60,7 @@ Once your changes and tests are ready to submit for review: Ensure that all tests pass by running `make check-all`. This runs sequentially lint checks, unit tests and integration tests. These can be executed in isolation using `make lint`, `make test` and `make it` respectively, in case you need to iterate over a subset of tests. - Note: Integration tests are much slower than unit tests. + Note: Integration tests are much slower than unit tests and require `docker-compose`. 3. Sign the Contributor License Agreement diff --git a/esrally/driver/runner.py b/esrally/driver/runner.py index 137bf4a4d..362fa903d 100644 --- a/esrally/driver/runner.py +++ b/esrally/driver/runner.py @@ -2892,6 +2892,7 @@ async def __call__(self, es, params): query = mandatory(params, "query", self) body = params.get("body", {}) body["query"] = query + body["version"] = params.get("version", "2024.04.01.🚀") query_filter = params.get("filter") if query_filter: body["filter"] = query_filter diff --git a/tests/driver/runner_test.py b/tests/driver/runner_test.py index 910c1de95..48454cff0 100644 --- a/tests/driver/runner_test.py +++ b/tests/driver/runner_test.py @@ -7686,7 +7686,7 @@ async def test_esql_without_query_filter(self, es): esql = runner.Esql() result = await esql(es, params={"query": "from logs-* | stats c = count(*)"}) assert result == {"weight": 1, "unit": "ops", "success": True} - expected_body = {"query": "from logs-* | stats c = count(*)"} + expected_body = {"query": "from logs-* | stats c = count(*)", "version": "2024.04.01.🚀"} es.perform_request.assert_awaited_once_with(method="POST", path="/_query", headers=None, body=expected_body, params={}) @mock.patch("elasticsearch.Elasticsearch") @@ -7698,7 +7698,7 @@ async def test_esql_with_query_filter(self, es): query_filter = {"range": {"@timestamp": {"gte": "2023"}}} result = await esql(es, params={"query": "from * | limit 1", "filter": query_filter}) assert result == {"weight": 1, "unit": "ops", "success": True} - expected_body = {"query": "from * | limit 1", "filter": query_filter} + expected_body = {"query": "from * | limit 1", "version": "2024.04.01.🚀", "filter": query_filter} es.perform_request.assert_awaited_once_with(method="POST", path="/_query", headers=None, body=expected_body, params={}) @mock.patch("elasticsearch.Elasticsearch") @@ -7711,5 +7711,16 @@ async def test_esql_with_body(self, es): result = await esql(es, params={"query": "from * | limit 1", "body": {"pragma": pragma}}) assert result == {"weight": 1, "unit": "ops", "success": True} - expected_body = {"pragma": pragma, "query": "from * | limit 1"} + expected_body = {"pragma": pragma, "query": "from * | limit 1", "version": "2024.04.01.🚀"} + es.perform_request.assert_awaited_once_with(method="POST", path="/_query", headers=None, body=expected_body, params={}) + + @mock.patch("elasticsearch.Elasticsearch") + @pytest.mark.asyncio + async def test_esql_with_version(self, es): + es.options.return_value = es + es.perform_request = mock.AsyncMock() + esql = runner.Esql() + result = await esql(es, params={"query": "from * | limit 1", "version": "wow"}) + assert result == {"weight": 1, "unit": "ops", "success": True} + expected_body = {"query": "from * | limit 1", "version": "wow"} es.perform_request.assert_awaited_once_with(method="POST", path="/_query", headers=None, body=expected_body, params={})