import json import sys from pathlib import Path stage = Path('/www/server/xingyu-im/releases/avatars-20260831-180014') backup = Path('/www/backup/xingyu-avatars-20260831-180014') sys.path.insert(0, str(stage)) import baota_publish_avatars as release result = json.loads((backup / 'result.json').read_text()) assert release.digest(release.BT/'xingyu-api') == result['backendSha256'] assert release.running(result['backendSha256']) == result['runningPids'] assert str((release.WEB/'app').resolve()) == result['h5'] assert str((release.WEB/'admin').resolve()) == result['adminUnchanged'] assert backup.stat().st_mode & 0o777 == 0o700 assert (backup/'im.sql.gz').stat().st_mode & 0o777 == 0o600 conn, _ = release.database(release.env_values()) try: assert release.marker(conn) == result['before'] result['verificationCounts'] = {table:release.query(conn,'SELECT COUNT(*) FROM '+table)[0][0] for table in ['users','user_profiles','media_assets','admin_users','im_messages','schema_migrations']} result['verifiedRunningBinary'] = True print(json.dumps(result)) finally: conn.close()