Initial Dever 0.0.1

This commit is contained in:
Codex committed 2026-11-03 03:32:07 +00:00
commit 81233d098c
1479 files changed
+163782

No files matched your search

+52
View File
@@ -0,0 +1,52 @@
"""在验收容器的回环接口验证已脱离开发包的 HTTP/TLS 产物。"""
import http.client
import json
from pathlib import Path
import socket
import ssl
import subprocess
import time
root = Path("/work/http")
(root / "config").mkdir(exist_ok=True)
certificates = Path("/work/tls")
for encrypted in (False, True):
with socket.socket() as listener:
listener.bind(("127.0.0.1", 0))
port = listener.getsockname()[1]
settings = {"http": {"host": "127.0.0.1", "port": port},
"sites": {"public": {"path": "", "hosts": ["localhost"]}}}
if encrypted:
settings["http"]["tls"] = {"certificate": str(certificates / "server.pem"),
"key": str(certificates / "server-key.pem")}
(root / "config/setting.json").write_text(json.dumps(settings))
with (root / f"server-{encrypted}.log").open("w") as log:
server = subprocess.Popen([str(root / "app")], stdout=log, stderr=log)
try:
deadline = time.monotonic() + 10
while True:
assert server.poll() is None, (root / f"server-{encrypted}.log").read_text()
try:
with socket.create_connection(("127.0.0.1", port), timeout=1):
break
except ConnectionRefusedError:
assert time.monotonic() < deadline, "HTTP server startup timed out"
time.sleep(0.05)
if encrypted:
context = ssl.create_default_context(cafile=str(certificates / "root.pem"))
client = http.client.HTTPSConnection("localhost", port, context=context, timeout=5)
else:
client = http.client.HTTPConnection("localhost", port, timeout=5)
try:
client.request("GET", "/demo/greeting/greet?name=Dever")
response = client.getresponse()
assert response.status == 200, response.status
assert json.load(response)["data"] == "Hello, Dever"
finally:
client.close()
finally:
server.terminate()
server.wait(timeout=10)
print("HTTP_TLS_PASS")