Add admin port support with other major refactorations #9
@@ -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}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user