feat: indie status page MVP -- FastAPI + SQLite
- 8 DB models (services, incidents, monitors, subscribers, etc.) - Full CRUD API for services, incidents, monitors - Public status page with live data - Incident detail page with timeline - API key authentication - Uptime monitoring scheduler - 13 tests passing - TECHNICAL_DESIGN.md with full spec
This commit is contained in:
commit
902133edd3
4655 changed files with 1342691 additions and 0 deletions
|
|
@ -0,0 +1,35 @@
|
|||
import gc
|
||||
import weakref
|
||||
|
||||
|
||||
import greenlet
|
||||
from . import TestCase
|
||||
|
||||
class WeakRefTests(TestCase):
|
||||
def test_dead_weakref(self):
|
||||
def _dead_greenlet():
|
||||
g = greenlet.greenlet(lambda: None)
|
||||
g.switch()
|
||||
return g
|
||||
o = weakref.ref(_dead_greenlet())
|
||||
gc.collect()
|
||||
self.assertEqual(o(), None)
|
||||
|
||||
def test_inactive_weakref(self):
|
||||
o = weakref.ref(greenlet.greenlet())
|
||||
gc.collect()
|
||||
self.assertEqual(o(), None)
|
||||
|
||||
def test_dealloc_weakref(self):
|
||||
seen = []
|
||||
def worker():
|
||||
try:
|
||||
greenlet.getcurrent().parent.switch()
|
||||
finally:
|
||||
seen.append(g())
|
||||
g = greenlet.greenlet(worker)
|
||||
g.switch()
|
||||
g2 = greenlet.greenlet(lambda: None, g)
|
||||
g = weakref.ref(g2)
|
||||
g2 = None
|
||||
self.assertEqual(seen, [None])
|
||||
Loading…
Add table
Add a link
Reference in a new issue