feat: add resumable file archive jobs and offline verification
This commit is contained in:
@@ -15,6 +15,12 @@ E2E_CREDENTIALS_FILE="$E2E_DIR/credentials.json"
|
||||
cleanup() {
|
||||
"$E2E_DOCKER" stop "$E2E_ORBIT" "$E2E_MYSQL" >/dev/null 2>&1 || true
|
||||
"$E2E_DOCKER" container rm "$E2E_ORBIT" "$E2E_MYSQL" >/dev/null 2>&1 || true
|
||||
if [ -d "$E2E_DIR/archive-job" ]; then
|
||||
for e2e_artifact in "$E2E_DIR/archive-job"/.lock "$E2E_DIR/archive-job"/manifest.json "$E2E_DIR/archive-job"/batch-000001.json; do
|
||||
if [ -f "$e2e_artifact" ]; then unlink "$e2e_artifact"; fi
|
||||
done
|
||||
rmdir "$E2E_DIR/archive-job" >/dev/null 2>&1 || true
|
||||
fi
|
||||
for e2e_artifact in "$E2E_DIR"/*; do
|
||||
if [ -f "$e2e_artifact" ]; then
|
||||
unlink "$e2e_artifact"
|
||||
@@ -250,4 +256,25 @@ assert status_retention == 401, status_retention
|
||||
print("console_task_data=ok succeeded_tasks=%d logout=ok unauthorized_after_logout=%d" % (sum(item.get("state") == "SUCCEEDED" for item in items), status))
|
||||
PY
|
||||
|
||||
printf '%s\n' "[archive] durable job and offline verification"
|
||||
E2E_NAMESPACE=$(python3 - "$E2E_CREDENTIALS_FILE" <<'PYCODE'
|
||||
import json, sys
|
||||
print(json.load(open(sys.argv[1], encoding="utf-8"))["namespace_id"])
|
||||
PYCODE
|
||||
)
|
||||
"$E2E_DOCKER" run --rm --network bridge --link "$E2E_MYSQL:mysql" \
|
||||
--env ORBIT_MYSQL_DSN="$E2E_DSN" --volume "$E2E_DIR:/run/orbit" \
|
||||
--entrypoint /usr/local/bin/orbit-admin "$E2E_IMAGE" retention archive \
|
||||
--namespace "$E2E_NAMESPACE" --kind tasks --revision 1 --directory /run/orbit/archive-job > "$E2E_DIR/archive-result.json"
|
||||
"$E2E_DOCKER" run --rm --network none --volume "$E2E_DIR:/run/orbit" \
|
||||
--entrypoint /usr/local/bin/orbit-admin "$E2E_IMAGE" retention verify-archive \
|
||||
--directory /run/orbit/archive-job > "$E2E_DIR/archive-verified.json"
|
||||
python3 - "$E2E_DIR/archive-result.json" "$E2E_DIR/archive-verified.json" <<'PYCODE'
|
||||
import json, sys
|
||||
result, verified = [json.load(open(p, encoding="utf-8")) for p in sys.argv[1:]]
|
||||
assert result == verified
|
||||
assert result["completed"] is True and result["batches"] == 1 and result["roots"] == 0
|
||||
print("durable_archive=ok offline_verification=ok roots=0 completed=true")
|
||||
PYCODE
|
||||
|
||||
printf '%s\n' "console-e2e=passed image=$E2E_IMAGE url=$E2E_URL"
|
||||
|
||||
Reference in New Issue
Block a user