change integration to functional test

This commit is contained in:
ortyomka 2024-10-21 19:00:01 +02:00
parent 54af5c7ba7
commit c8d3de8d9f
5 changed files with 27 additions and 104 deletions

View File

@ -1,50 +0,0 @@
import http.server
import sys
class RequestHandler(http.server.BaseHTTPRequestHandler):
def get_response(self):
if self.path == "/":
return "OK", 200
# Resource not found.
return 404
def check_request(self):
content_type = self.headers.get("Content-Type")
if content_type is None:
return "No Content-Type", 400
correct_content_type = self.headers.get("X-Test-Answer")
if correct_content_type is None:
return "No X-Test-Answer", 400
if content_type != correct_content_type:
return "Wrong Content-Type", 400
return self.get_response()
def do_POST(self):
response, code = self.check_request()
self.send_response(code)
self.send_header("Content-Type", "text/plain")
self.send_header("Content-Length", len(response.encode()))
self.end_headers()
self.wfile.write(response.encode())
def do_HEAD(self):
response, code = self.get_response()
self.send_response(code)
self.send_header("Content-Type", "text/plain")
self.send_header("Content-Length", len(response.encode()))
self.end_headers()
return response, code
def do_GET(self):
response, _ = self.do_HEAD()
self.wfile.write(response.encode())
httpd = http.server.HTTPServer(("0.0.0.0", int(sys.argv[1])), RequestHandler)
httpd.serve_forever()

View File

@ -1,54 +0,0 @@
import os
import pytest
from helpers.cluster import ClickHouseCluster
from helpers.mock_servers import start_mock_servers
SERVER_HOSTNAME = "resolver"
SERVER_PORT = 8080
cluster = ClickHouseCluster(__file__)
node = cluster.add_instance("instance")
def start_server():
script_dir = os.path.join(os.path.dirname(__file__), "mock_server")
start_mock_servers(
cluster,
script_dir,
[
(
"simple_server.py",
SERVER_HOSTNAME,
SERVER_PORT,
)
],
)
@pytest.fixture(scope="module", autouse=True)
def start_cluster():
try:
cluster.start()
start_server()
yield
finally:
cluster.shutdown()
def test_url_content_type_override():
assert (
"200"
== node.query(
f"INSERT INTO FUNCTION url('http://{SERVER_HOSTNAME}:{SERVER_PORT}/', JSONEachRow, 'x UInt8', headers('X-Test-Answer' = 'application/x-ndjson; charset=UTF-8')) SELECT 1)"
).strip()
)
assert (
"200"
== node.query(
f"INSERT INTO FUNCTION url('http://{SERVER_HOSTNAME}:{SERVER_PORT}/', JSONEachRow, 'x UInt8', headers('Content-Type' = 'upyachka', 'X-Test-Answer' = 'upyachka')) SELECT 1)"
).strip()
)

View File

@ -0,0 +1,2 @@
Content-Type: application/x-ndjson; charset=UTF-8
Content-Type: upyachka

View File

@ -0,0 +1,25 @@
#!/usr/bin/env bash
# Tags: no-parallel
CUR_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
. "$CUR_DIR"/../shell_config.sh
nc -l -p 61845 -q 0 > response.txt &
$CLICKHOUSE_CLIENT --query "INSERT INTO FUNCTION url('http://localhost:61845/', JSONEachRow, 'x UInt8') SELECT 1" > /dev/null 2>&1
( echo -e "Finish him\n" | nc localhost 61845 ) 2>/dev/null || true
wait
grep "Content-Type" response.txt
nc -l -p 61846 -q 0 > response.txt &
$CLICKHOUSE_CLIENT --query "INSERT INTO FUNCTION url('http://localhost:61846/', JSONEachRow, 'x UInt8', headers('Content-Type' = 'upyachka')) SELECT 1" > /dev/null 2>&1
( echo -e "Finish him\n" | nc localhost 61846 ) 2>/dev/null || true
wait
grep "Content-Type" response.txt