Add admin port support with other major refactorations #9

Merged
kovagoadi merged 3 commits from add-admin-port-support into main 2026-06-29 20:00:38 +02:00
3 changed files with 15 additions and 12 deletions
Showing only changes of commit c69f146e65 - Show all commits

View File

@@ -10,6 +10,7 @@ sys.path.insert(0, os.path.dirname(__file__))
from openttd import OpenTTDClient, OpenTTDAdminClient from openttd import OpenTTDClient, OpenTTDAdminClient
from openttd.protocol import OpenTTDProtocol, OpenTTDAdminProtocol from openttd.protocol import OpenTTDProtocol, OpenTTDAdminProtocol
import tests.test_e2e as test_e2e
# 1. Gather public functions dynamically at runtime using reflection # 1. Gather public functions dynamically at runtime using reflection
classes = [OpenTTDClient, OpenTTDAdminClient, OpenTTDProtocol, OpenTTDAdminProtocol] classes = [OpenTTDClient, OpenTTDAdminClient, OpenTTDProtocol, OpenTTDAdminProtocol]
@@ -48,7 +49,6 @@ for cls in classes:
public_funcs[name] = has_params public_funcs[name] = has_params
# 2. Inspect E2E test module dynamically at runtime using reflection # 2. Inspect E2E test module dynamically at runtime using reflection
import tests.test_e2e as test_e2e
calls = {name: [] for name in public_funcs} calls = {name: [] for name in public_funcs}

View File

@@ -253,7 +253,8 @@ class OpenTTDAdminProtocol(OpenTTDProtocol):
updates = {} updates = {}
while True: while True:
has_more, data = read_uint8(data) has_more, data = read_uint8(data)
if not has_more: break if not has_more:
break
ut, data = read_uint16(data) ut, data = read_uint16(data)
freqs, data = read_uint16(data) freqs, data = read_uint16(data)
updates[ut] = freqs updates[ut] = freqs
@@ -413,14 +414,19 @@ class OpenTTDAdminProtocol(OpenTTDProtocol):
def receive_ServerCompanyEconomy(source, data): def receive_ServerCompanyEconomy(source, data):
import struct import struct
cid, data = read_uint8(data) cid, data = read_uint8(data)
money = struct.unpack("<Q", data[:8])[0]; data = data[8:] money = struct.unpack("<Q", data[:8])[0]
loan = struct.unpack("<Q", data[:8])[0]; data = data[8:] data = data[8:]
income = struct.unpack("<q", data[:8])[0]; data = data[8:] loan = struct.unpack("<Q", data[:8])[0]
data = data[8:]
income = struct.unpack("<q", data[:8])[0]
data = data[8:]
delivered, data = read_uint16(data) delivered, data = read_uint16(data)
val_lq = struct.unpack("<Q", data[:8])[0]; data = data[8:] val_lq = struct.unpack("<Q", data[:8])[0]
data = data[8:]
perf_lq, data = read_uint16(data) perf_lq, data = read_uint16(data)
del_lq, data = read_uint16(data) del_lq, data = read_uint16(data)
val_pq = struct.unpack("<Q", data[:8])[0]; data = data[8:] val_pq = struct.unpack("<Q", data[:8])[0]
data = data[8:]
perf_pq, data = read_uint16(data) perf_pq, data = read_uint16(data)
del_pq, _ = read_uint16(data) del_pq, _ = read_uint16(data)
return { return {
@@ -456,7 +462,7 @@ class OpenTTDAdminProtocol(OpenTTDProtocol):
import json import json
try: try:
return {"data": json.loads(json_str)} return {"data": json.loads(json_str)}
except: except Exception:
return {"raw_data": json_str} return {"raw_data": json_str}
@staticmethod @staticmethod

View File

@@ -4,8 +4,6 @@ import pytest_asyncio
import sys import sys
import os import os
import random import random
from unittest.mock import MagicMock, AsyncMock
# Add lib to path # Add lib to path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'lib')) sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', 'lib'))
@@ -15,8 +13,7 @@ from openttd.protocol import (
OpenTTDAdminProtocol, OpenTTDAdminProtocol,
AdminUpdateType, AdminUpdateType,
AdminUpdateFrequency, AdminUpdateFrequency,
PacketGameType, PacketGameType
PacketAdminType
) )