world_sync/tests/_m11b2d_scratch.py

114 lines
4.8 KiB
Python

import sys
sys.path.insert(0, "/d/pipeline/workspaces/0/sdlc_general/modules/world_sync/tests")
import _m11b2_compat as c
_orig = c._default_clause
def patched(fd):
dv = fd.get("default")
if isinstance(dv, str) and dv.strip() == "":
return " DEFAULT ''"
return _orig(fd)
c._default_clause = patched
e = c.RuntimeEngine()
c.install(e)
r = c.apply(tenant_id=7, world_id=11, session_id=22, event_type="unit.move",
payload={"dx": 1}, state_updates=[{"entity_id": "e1", "state": {"hp": 2}}],
client_event_id="ev-1", actor_id="u1")
print("R1", r)
print("trace", c.trace_kinds(e))
print("counts", e.count(c.EVENT_TABLE), e.count(c.STATE_TABLE))
print("updates", c.update_statements(e))
print("inserts_event", len(c.insert_statements(e, c.EVENT_TABLE)))
print("broadcasts", len(e.broadcasts), e.broadcasts[0]["channel"] if e.broadcasts else None)
print("read", c.read(tenant_id=7, session_id=22))
e.seed_state(7, 22, "e9", '{"hp":1}', state_version=3)
r2 = c.apply(tenant_id=7, world_id=11, session_id=22, event_type="unit.move",
payload={"dx": 2}, state_updates=[{"entity_id": "e9", "state": {"hp": 5}}],
client_event_id="ev-2", actor_id="u2", base_version=3)
print("R2", r2)
print("state row", e.query("SELECT * FROM pbl_entity_state WHERE entity_id='e9'"))
print("stmt counts r1/r2", r["stmt_count"], r2["stmt_count"])
r3 = c.apply(tenant_id=7, world_id=11, session_id=22, event_type="unit.move",
payload={"dx": 2}, state_updates=[{"entity_id": "e9", "state": {"hp": 9}}],
client_event_id="ev-2", actor_id="u2")
print("R3 dedup", r3)
print("counts after dedup", e.count(c.EVENT_TABLE), e.count(c.STATE_TABLE))
print("trace", c.trace_kinds(e))
print("broadcasts n", len(e.broadcasts))
try:
c.apply(tenant_id=7, world_id=11, session_id=22, event_type="unit.move",
payload={"dx": 3}, state_updates=[{"entity_id": "e9", "state": {"hp": 99}}],
client_event_id="ev-4", base_version=1)
except Exception as exc:
print("CONFLICT", type(exc).__name__, getattr(exc, "code", None), str(exc)[:140])
print("trace tail", c.trace_kinds(e)[-4:])
print("counts after conflict", e.count(c.EVENT_TABLE), e.count(c.STATE_TABLE))
print("state after conflict", e.query("SELECT state_version FROM pbl_entity_state WHERE entity_id='e9'"))
r5 = c.apply(tenant_id=7, world_id=11, session_id=22, event_type="snap",
payload={}, state_updates=[], client_event_id="ev-5",
snapshot={"reason": "reconnect", "entities": {"e9": {"hp": 5}}})
print("R5", {k: r5[k] for k in ("ok", "seq", "state_rows", "stmt_count", "channel")})
print("snap count", e.count(c.SNAPSHOT_TABLE))
try:
c.apply(tenant_id=None, world_id=11, session_id=22, event_type="x")
except Exception as exc:
print("TENANT", type(exc).__name__, getattr(exc, "code", None))
try:
c.apply(tenant_id=7, world_id=None, session_id=22, event_type="x")
except Exception as exc:
print("PARAM", type(exc).__name__, getattr(exc, "code", None))
try:
c.apply(tenant_id=7, world_id=11, session_id=22, event_type="x", state_updates="no")
except Exception as exc:
print("PARAM2", type(exc).__name__, getattr(exc, "code", None))
try:
c.apply(tenant_id=7, world_id=11, session_id=22, event_type="x",
state_updates=[{"state": {"a": 1}}])
except Exception as exc:
print("PARAM3", type(exc).__name__, getattr(exc, "code", None))
try:
c.apply(tenant_id=7, world_id=11, session_id=22, event_type="x",
state_updates=[{"entity_id": "e1"}])
except Exception as exc:
print("PARAM4", type(exc).__name__, getattr(exc, "code", None))
print("trace after validation", c.trace_kinds(e)[-3:])
try:
c.build_row(c.EVENT_TABLE, {"no_such_col": 1})
except Exception as exc:
print("UNKNOWN", getattr(exc, "code", None), str(exc)[:90])
try:
c.build_row(c.STATE_TABLE, {"tenant_id": "t1"})
except Exception as exc:
print("MISSING", getattr(exc, "code", None), str(exc)[:140])
try:
c.build_row(c.STATE_TABLE, {"state_json": "{}", "created_at": "x"}, strict=True, full_row=False)
except Exception as exc:
print("IMMUTABLE", getattr(exc, "code", None), str(exc)[:140])
try:
c.assert_append_only("UPDATE", c.EVENT_TABLE)
except Exception as exc:
print("APPEND", getattr(exc, "code", None), str(exc)[:90])
try:
c.assert_append_only("DELETE", "world")
except Exception as exc:
print("BASE", getattr(exc, "code", None), str(exc)[:90])
print("percentile empty", c.percentile([], 99), "single", c.percentile([5], 99),
"range99", c.percentile(list(range(100)), 99))
print("ERR codes", c.ERR_STATE_CONFLICT, c.ERR_APPEND_ONLY, c.ERR_UNKNOWN_COLUMN,
c.ERR_MISSING_NOT_NULL, c.ERR_IMMUTABLE_COLUMN, c.ERR_TENANT_MISSING, c.ERR_BAD_PARAM,
c.ERR_BROADCAST_AFTER_COMMIT)
print("tables", c.EVENT_TABLE, c.STATE_TABLE, c.SNAPSHOT_TABLE)
c.uninstall()
print("OK DONE")