Build Pigway Frame Flow with bilingual UI, complete KoKonna driver and safe automation
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
"""Record/check persistent Mock IDs across a process/container restart."""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import time
|
||||
from pathlib import Path
|
||||
from urllib.request import Request, urlopen
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("mode", choices=["record", "check"])
|
||||
args = parser.parse_args()
|
||||
base = os.getenv("FRAME_FLOW_URL", "http://127.0.0.1:18787").rstrip("/")
|
||||
token = os.getenv("FRAME_FLOW_TOKEN", "")
|
||||
if not token:
|
||||
for line in Path(".env").read_text().splitlines():
|
||||
if line.startswith("FRAME_FLOW_TOKEN="):
|
||||
token = line.split("=", 1)[1]
|
||||
|
||||
|
||||
def api(path, method="GET", payload=None):
|
||||
request = Request(
|
||||
base + path,
|
||||
method=method,
|
||||
data=json.dumps(payload).encode() if payload is not None else None,
|
||||
headers={
|
||||
"Authorization": "Bearer " + token,
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
)
|
||||
with urlopen(request, timeout=10) as response:
|
||||
return json.loads(response.read())
|
||||
|
||||
|
||||
assert api("/api/v1/settings")["mock"] is True, "Persistence test requires Mock mode"
|
||||
record = Path("data/persistence-acceptance.json")
|
||||
if args.mode == "record":
|
||||
job = api(
|
||||
"/api/v1/jobs",
|
||||
"POST",
|
||||
{
|
||||
"name": "Persistence acceptance (paused)",
|
||||
"enabled": False,
|
||||
"schedule": {"type": "daily", "time": "07:00"},
|
||||
"source": {"type": "template", "template": "quote"},
|
||||
},
|
||||
)
|
||||
accepted = api(
|
||||
"/api/v1/render",
|
||||
"POST",
|
||||
{
|
||||
"type": "template",
|
||||
"template": "quote",
|
||||
"data": {"title": "PERSISTENCE TEST"},
|
||||
},
|
||||
)
|
||||
for _ in range(20):
|
||||
op = api("/api/v1/operations/" + accepted["operation_id"])
|
||||
if op["status"] == "COMPLETED":
|
||||
break
|
||||
time.sleep(1)
|
||||
assert op["status"] == "COMPLETED"
|
||||
record.write_text(
|
||||
json.dumps(
|
||||
{
|
||||
"job_id": job["id"],
|
||||
"operation_id": op["operation_id"],
|
||||
"asset_id": op["result"]["asset_id"],
|
||||
}
|
||||
)
|
||||
)
|
||||
print("Persistent Mock job, operation and image recorded")
|
||||
else:
|
||||
saved = json.loads(record.read_text())
|
||||
assert any(j["id"] == saved["job_id"] for j in api("/api/v1/jobs"))
|
||||
assert api("/api/v1/operations/" + saved["operation_id"])["status"] == "COMPLETED"
|
||||
assert any(a["asset_id"] == saved["asset_id"] for a in api("/api/v1/assets"))
|
||||
assert api("/ready")["status"] == "ready"
|
||||
print("Restart persistence: 4 checks passed (job/operation/asset/readiness)")
|
||||
Reference in New Issue
Block a user