Adding a better testing method without needing TNC or radio.

This commit is contained in:
Michael Woods
2025-03-16 00:58:25 -04:00
parent b9a6f35582
commit f0e5bb288d
6 changed files with 503 additions and 30 deletions

View File

@@ -0,0 +1,84 @@
"""Example file for using a directory test server to test without a TNC or radio."""
import msgpack
from packetserver.common import Request, Response, Message
from packetserver.common.testing import DirectoryTestServerConnection, SimpleDirectoryConnection
from packetserver.server.testserver import DirectoryTestServer
from packetserver.server.objects import Object
from packetserver.server.messages import Message as Mail
from packetserver.server.messages import Attachment
import time
import logging
import json
import os
import os.path
from shutil import rmtree
logging.basicConfig(level=logging.DEBUG)
server_callsign = "KQ4PEC"
client_callsign = 'KQ4PEC-7'
#client_callsign = "TEST1"
conn_dir = "/tmp/ts_conn_dir"
data_dir = "/tmp/tmp_ps_data"
if os.path.isdir(conn_dir):
rmtree(conn_dir)
os.mkdir(conn_dir)
else:
os.mkdir(conn_dir)
if not os.path.isdir(data_dir):
os.mkdir(data_dir)
ts = DirectoryTestServer(server_callsign, connection_directory=os.path.abspath(conn_dir),
data_dir=os.path.abspath(data_dir), zeo=True)
ts.start()
time.sleep(1)
print("creating connection")
new_conn_dir = os.path.join(conn_dir,f"{client_callsign}--{server_callsign}")
os.mkdir(new_conn_dir)
conn = SimpleDirectoryConnection.create_directory_connection(client_callsign, new_conn_dir)
print(conn.remote_callsign)
print(conn.call_to)
print(conn.call_from)
req = Request.blank()
#req.set_var('fetch_attachments', 1)
req.path = ""
req.method = Request.Method.GET
#req.method=Request.Method.POST
#attach = [Attachment("test.txt", "Hello sir, I hope that this message finds you well. The other day..")]
#req.payload = Mail("Hi there from a test user!", "KQ4PEC", attachments=attach).to_dict()
#req.payload = Object(name="test.txt", data="hello there").to_dict()
print("sending request")
conn.send_data(req.pack())
print("Waiting on response.")
data = None
while data is None:
conn.check_for_data()
try:
data = conn.data.unpack()
except msgpack.OutOfData:
pass
time.sleep(.5)
ts.stop()
print("Waiting for server to stop.")
time.sleep(2)
#print(f"Got some data: {data}")
msg = data
print(f"msg: {msg}")
response = Response(Message.partial_unpack(msg))
#print(type(response.payload))
#print(f"Response: {response}: {response.payload}")
print(json.dumps(response.payload, indent=4))