aboutsummaryrefslogtreecommitdiff
path: root/test/test_data_v1.py
diff options
context:
space:
mode:
authorPaul Oliver <contact@pauloliver.dev>2026-07-07 23:30:52 +0200
committerPaul Oliver <contact@pauloliver.dev>2026-07-20 04:00:10 +0200
commita61a742245d429b8d085208e249bb3bc80e44fb6 (patch)
treebfa44c45de28f9890e15c5ef98ae8d1cec6e36a9 /test/test_data_v1.py
parent55928b51596de4cd1b7a2783529ecda3ff3087ce (diff)
data-tests (WIP)more_tests
Diffstat (limited to 'test/test_data_v1.py')
-rw-r--r--test/test_data_v1.py89
1 files changed, 89 insertions, 0 deletions
diff --git a/test/test_data_v1.py b/test/test_data_v1.py
new file mode 100644
index 0000000..ed933e8
--- /dev/null
+++ b/test/test_data_v1.py
@@ -0,0 +1,89 @@
+import json
+import os
+import signal
+import socket
+import subprocess
+
+from test_general import SalisTest
+
+ANC_SIZE = 12
+
+SERVER_HOST = "localhost"
+SERVER_PORT = 8080
+
+SIM_NAME = "def.sim"
+SIM_OPTS = {
+ "anc": "datat",
+ "anc_path": "test/anc",
+ "clones": 2,
+ "cores": 1,
+ "data_push_pow": 12,
+ "force": False,
+ "muta_pow": 32,
+ "mvec_pow": 8,
+ "seed": "0x0",
+ "vm_arch": "v1",
+ "sync_pow": 10,
+ "auto_save_pow": 36,
+}
+
+class TestDataV1(SalisTest):
+ def request_from_server(self, request):
+ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client:
+ client.connect((SERVER_HOST, SERVER_PORT))
+ client.sendall(json.dumps(request).encode())
+ client.shutdown(socket.SHUT_WR)
+ return json.load(client.makefile(mode="r"))
+
+ @SalisTest.run_ui_test(**SIM_OPTS, name=SIM_NAME, ui="push", ui_path="test/ui")
+ def test_data_flow(self):
+ with SalisTest.run_pipe(f"./salis.py server -H{self.tempdir.name}") as server_proc:
+ for line in server_proc.stdout:
+ if "Listening..." in line:
+ break
+
+ try:
+ self.assert_equal(self.request_from_server({"request": "name"})["name"], "def.sim")
+ self.assert_equal(self.request_from_server({"request": "hash"})["hash"], subprocess.check_output("git rev-parse HEAD".split()).decode().strip())
+ self.assert_equal(self.request_from_server({"request": "opts"}), SIM_OPTS)
+
+ data = self.request_from_server({
+ "request": "data",
+ "x-axis": "rowid",
+ "x-current": 0,
+ "x-high": 2,
+ "nth": 1,
+ "entries": 2,
+ "hm-left": 0,
+ "hm-pixel-count": 2 ** SIM_OPTS["mvec_pow"],
+ "hm-pixel-pow": 0,
+ })
+
+ with open(os.path.join(self.tempdir.name, SIM_NAME, "outputs.json"), "r") as f:
+ outputs = json.load(f)
+
+ # Check scalar values
+ #self.assert_equal(data["rowid"], [1, 2])
+ #self.assert_equal(data["cycl_0"], [0, 923])
+ #self.assert_equal(data["mall_0"], [ANC_SIZE * 2, (ANC_SIZE * 2) + 12])
+ #self.assert_equal(data["pnum_0"], [2, 5])
+ #self.assert_equal(data["pfst_0"], [0, 0])
+ #self.assert_equal(data["plst_0"], [1, 4])
+ #self.assert_equal(data["amb0_0"], [ANC_SIZE, ((ANC_SIZE * 2) + (4 * 3)) // 5])
+ #self.assert_equal(data["amb1_0"], [0, 0])
+ #self.assert_equal(data["emb0_0"], [0, 1872])
+ #self.assert_equal(data["emb1_0"], [0, 2])
+ #self.assert_equal(data["eliv_0"], [0, 1894])
+ #self.assert_equal(data["edea_0"], [0, 328])
+ #self.assert_equal(data["wmb0_0"], [0, 1])
+ #self.assert_equal(data["wmb1_0"], [0, 0])
+ #self.assert_equal(data["wdea_0"], [0, 0])
+
+ #self.assert_equal(data["step"], [0, 2 ** SIM_OPTS["data_push_pow"]])
+
+ print("\ndata ---->\n", json.dumps(data, sort_keys=True))
+ print("\noutputs ---->\n", json.dumps(outputs, sort_keys=True))
+
+ #self.assertDictEqual(data, outputs, "mismatch between server-data and ui outputs")
+ finally:
+ server_proc.send_signal(signal.SIGINT)