更新
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, '/www/server/xingyu-im/ops')
|
||||
from baota_publish_test_users import BT, WEB, database, digest, env_values, query
|
||||
|
||||
backup = Path('/www/backup/xingyu-application-20260831-121140')
|
||||
state = json.loads((backup / 'result.json').read_text())
|
||||
expected = state['backendSha256']
|
||||
assert digest(BT / 'xingyu-api') == expected
|
||||
assert str((WEB / 'admin').resolve()) == state['admin']
|
||||
assert str((WEB / 'app').resolve()) == state['h5']
|
||||
running = []
|
||||
for proc in Path('/proc').iterdir():
|
||||
if not proc.name.isdigit():
|
||||
continue
|
||||
try:
|
||||
if os.readlink(str(proc / 'exe')) == str(BT / 'xingyu-api'):
|
||||
assert digest(proc / 'exe') == expected
|
||||
running.append(int(proc.name))
|
||||
except (FileNotFoundError, PermissionError):
|
||||
pass
|
||||
assert len(running) == 1, 'expected one process running the released executable'
|
||||
conn, _ = database(env_values())
|
||||
try:
|
||||
migrations = dict(query(conn, 'SELECT version,checksum FROM schema_migrations'))
|
||||
for name in state['migrationsApplied']:
|
||||
assert migrations[name] == digest(BT / 'migrations' / name)
|
||||
counts = {}
|
||||
for table in ['users', 'admin_users', 'user_sessions', 'orders', 'posts']:
|
||||
counts[table] = query(conn, 'SELECT COUNT(*) FROM ' + table)[0][0]
|
||||
cos_count = query(conn, "SELECT COUNT(*) FROM users u JOIN user_profiles p ON p.user_id=u.id WHERE u.is_test=1 AND p.avatar_url LIKE 'https://gz-1349751149.cos.ap-guangzhou.myqcloud.com/media/test-users/cn-adults-20260831-v1/%%'")[0][0]
|
||||
assert cos_count == 100
|
||||
permission_count = query(conn, "SELECT COUNT(*) FROM admin_role_permissions rp JOIN admin_roles r ON r.id=rp.role_id WHERE r.role_code='super_admin' AND rp.permission_code='users:create'")[0][0]
|
||||
assert permission_count == 1
|
||||
assert backup.stat().st_mode & 0o777 == 0o700
|
||||
assert (backup / 'im.sql.gz').stat().st_size > 0
|
||||
assert (backup / 'im.sql.gz').stat().st_mode & 0o777 == 0o600
|
||||
print(json.dumps({'release': state, 'runningPids': running, 'migrationsRecorded': len(migrations), 'recordCounts': counts, 'testCosAvatars': cos_count, 'superAdminCreateUserPermission': True, 'backupProtected': True}))
|
||||
finally:
|
||||
conn.close()
|
||||
Reference in New Issue
Block a user