ClickHouse/tests/integration/test_tcp_handler_http_responses/test_case.py
Braulio Valdivielso 3fdc2aae19 test that the tcp handler returns correct http responses
I have added two tests. One checks the usual scenario where the
instance's config specifies a `http_port`. In that case, we expect the
`http_port` to be part of the response. The other scenario checks what
happens when the config doesn't specify a `http_port`. It's hard to
nail down the expectation there without hardcoding the error
response (which is not what we generally want) but I'm mainly checking
that no HTTP port is mentioned. This particular test would have failed
before my previous fix, because the TCP handler wouldn't have managed
to send back an HTTP response and `requests.post` would have thrown an
exception.
2021-08-07 11:56:05 +01:00

43 lines
1.1 KiB
Python

"""Test HTTP responses given by the TCP Handler."""
from pathlib import Path
import pytest
from helpers.cluster import ClickHouseCluster
import requests
cluster = ClickHouseCluster(__file__)
node_with_http = cluster.add_instance(
'node_with_http',
main_configs=["configs/config.d/http-port-31337.xml"]
)
HTTP_PORT = 31337
node_without_http = cluster.add_instance(
'node_without_http',
main_configs=["configs/config.d/no-http-port.xml"]
)
@pytest.fixture(scope="module")
def start_cluster():
try:
cluster.start()
yield cluster
finally:
cluster.shutdown()
def test_request_to_http_full_instance(start_cluster):
response = requests.get(
f'http://{node_with_http.ip_address}:9000'
)
assert response.status_code == 400
assert str(HTTP_PORT) in response.text
def test_request_to_http_less_instance(start_cluster):
response = requests.post(
f'http://{node_without_http.ip_address}:9000'
)
assert response.status_code == 400
assert str(HTTP_PORT) not in response.text
assert "8123" not in response.text