import json import signal import socket import subprocess from test_general import SalisTest ANC_SIZE = 12 SERVER_HOST = "localhost" SERVER_PORT = 8080 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, ui="push", ui_path="test/ui") def test_data(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, }) # 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("---->", data) finally: server_proc.send_signal(signal.SIGINT)