aboutsummaryrefslogtreecommitdiff
path: root/test/test_data_v1.py
blob: 500a409e5bfcab6061552a83a8d48aa49aeed296 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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)