46 lines
1.6 KiB
Python
46 lines
1.6 KiB
Python
"""端到端互操作:Python 客户端 ←→ Node 服务端(跨实现)。
|
||
|
||
价值:这是**唯一能证明协议层真通**的测试 ——
|
||
两边是完全独立的实现,若我的 protodef 有偏差,握手不可能成功。
|
||
|
||
用法:
|
||
1) cd /home/newqqagent/plugin_data/mc/runtime && node testserver.js &
|
||
2) python3 tests/test_e2e_interop.py
|
||
"""
|
||
import sys, os, socket
|
||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||
from mcfold.client import Client
|
||
|
||
HOST, PORT = "127.0.0.1", 25599
|
||
|
||
def reachable():
|
||
try:
|
||
socket.create_connection((HOST, PORT), timeout=2).close(); return True
|
||
except OSError:
|
||
return False
|
||
|
||
def test_interop():
|
||
if not reachable():
|
||
print(f" - 服务端 {HOST}:{PORT} 未运行,跳过(见本文件顶部用法)"); return
|
||
c = Client(HOST, PORT, "PyProbe", "1.20.1")
|
||
try:
|
||
r = c.run_smoke()
|
||
assert r["protocol"] == 763, r
|
||
assert r["login_ok"], r
|
||
assert "success" in r["packets"], r
|
||
print(f" ✓ 跨实现互操作: 协议={r['protocol']} 包={r['packets']} 登录成功")
|
||
finally:
|
||
c.close()
|
||
|
||
def test_protocol_version_from_folder():
|
||
"""协议版本必须由「实例文件夹」决定,而不是硬编码。"""
|
||
c = Client(HOST, PORT, "x", "1.20.1")
|
||
c.load_protocol()
|
||
assert c.proto_num == 763, c.proto_num
|
||
print(f" ✓ 版本来自 version.json: 1.20.1 -> 协议 {c.proto_num}")
|
||
|
||
if __name__ == "__main__":
|
||
test_protocol_version_from_folder()
|
||
test_interop()
|
||
print("\n端到端互操作:通过")
|