Frontend: - trace empty-state now shows connection status + capture mode (boxed, colored) in the center, updated live via checkConnection - capture-mode uses amber warning style (gsmtap/disabled), green for direct - stopCapture clears currentSessionId Server: - gsmtap read_packet catches OSError on socket close (no more EBADF traceback on stop) - stop_session joins the loop and discards a session with zero messages; /api/capture/stop reports discarded - startup prints server version Tests: 122 (gsmtap close, empty/non-empty capture lifecycle).
17 lines
381 B
Python
17 lines
381 B
Python
"""Tests for GSMTAP receiver shutdown behavior."""
|
|
|
|
import unittest
|
|
|
|
from simtrace2_pysniff.gsmtap import GsmtapReceiver
|
|
|
|
|
|
class TestGsmtapReceiver(unittest.TestCase):
|
|
def test_read_after_close_returns_none(self):
|
|
r = GsmtapReceiver(bind_port=0)
|
|
r.close()
|
|
self.assertEqual(r.read_packet(), (None, None))
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|