mirror of
https://github.com/This-weiyuqing/mi-fitness-health.git
synced 2026-10-18 11:13:48 +08:00
保存 NAS 健康系统 UI7 代码与本机维护基线
This commit is contained in:
1 parent
1767b4921a
commit
8546ba23ff
80 files changed
+4984
-381
No files matched your search
@@ -0,0 +1,55 @@
|
||||
import asyncio
|
||||
import json
|
||||
import os
|
||||
import sqlite3
|
||||
import tempfile
|
||||
import time
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from pathlib import Path
|
||||
|
||||
import httpx
|
||||
|
||||
root=Path(tempfile.mkdtemp())
|
||||
os.environ['XDG_CONFIG_HOME']=str(root/'config')
|
||||
os.environ['XDG_DATA_HOME']=str(root/'data')
|
||||
os.environ['HOME']=str(root)
|
||||
from mi_fitness_mcp.api import app
|
||||
from mi_fitness_mcp.models import HeartRateSample
|
||||
from mi_fitness_mcp.services.sync_service import SyncService
|
||||
from mi_fitness_mcp.storage import Database
|
||||
|
||||
|
||||
class SlowDisk(Database):
|
||||
def insert_heart_rate_sample(self, sample, **kwargs):
|
||||
time.sleep(0.01)
|
||||
return super().insert_heart_rate_sample(sample, **kwargs)
|
||||
|
||||
|
||||
class SyntheticAdapter:
|
||||
def is_connected(self): return True
|
||||
async def iter_heart_rate(self,start,end):
|
||||
stamp=datetime(2026,10,15,tzinfo=timezone.utc)
|
||||
for i in range(40):
|
||||
yield HeartRateSample(id=f'local-proof-{i}',provider='mi_fitness',source_type='cloud_session',user_id='synthetic-only',timestamp=stamp+timedelta(minutes=i),bpm=70)
|
||||
|
||||
|
||||
async def main():
|
||||
db=SlowDisk(root/'health.sqlite')
|
||||
service=SyncService(SyntheticAdapter(),db)
|
||||
task=asyncio.create_task(service.sync_data_type('heart_rate','2026-10-15','2026-10-15'))
|
||||
await asyncio.sleep(0.02)
|
||||
async with httpx.AsyncClient(transport=httpx.ASGITransport(app=app),base_url='http://127.0.0.1') as client:
|
||||
started=time.perf_counter()
|
||||
r=await client.get('/')
|
||||
elapsed=time.perf_counter()-started
|
||||
responsive=not task.done()
|
||||
result=await task
|
||||
with sqlite3.connect(db.db_path) as c:
|
||||
rows=c.execute('SELECT count(*) FROM heart_rate_samples').fetchone()[0]
|
||||
integrity=c.execute('PRAGMA quick_check').fetchone()[0]
|
||||
report={'linux_http_status_during_disk_wait':r.status_code,'request_returned_while_sync_active':responsive,'local_request_ms':round(elapsed*1000,1),'synthetic_records_stored':rows,'sync_status':result['status'],'database_quick_check':integrity}
|
||||
print(json.dumps(report))
|
||||
assert r.status_code==200 and responsive and rows==40 and integrity=='ok'
|
||||
|
||||
|
||||
asyncio.run(main())
|
||||
Reference in new issue
Block a user