Rename project to SIMtrace Analyser (v2.0.0)

- move the analysis server out of simtrace2_pysniff into simtrace_analyser;
  simtrace2_pysniff stays as the simtrace2-sniff replacement capture utility
- new server CLI: simtrace-analyser-server; python -m simtrace_analyser
  (simtrace2-pysniff-server and python -m simtrace2_pysniff.server dropped)
- simtrace2_pysniff lazy-imports hardware symbols, so the server no longer
  pulls PyUSB at startup; the GSMTAP/PCAP codecs work without libusb
- version 2.0.0 everywhere (was 1.22.21); PWA SW cache simtrace-analyser-v54
- frontend: server name, clone URL and i18n strings updated; vendored-parser
  reference otaman -> SIMple
- README/README_RUS reworked product-first (analyser first, utility second)
- DB dir ~/.simtrace-analyser, /api status payload and hosted PWA unchanged
This commit is contained in:
catarrh committed 2026-09-19 12:34:16 +03:00
1 parent 8441b56e99
commit 38650b4797
20 files changed
+392 -323

No files matched your search

+7 -7
View File
@@ -7,8 +7,8 @@ import tempfile
import time
import unittest
from simtrace2_pysniff.server.capture import CaptureManager, gsmtap_msg_type
from simtrace2_pysniff.server.database import Database
from simtrace_analyser.capture import CaptureManager, gsmtap_msg_type
from simtrace_analyser.database import Database
class TestGsmtapSubtypeMapping(unittest.TestCase):
@@ -67,7 +67,7 @@ class TestCaptureManager(unittest.TestCase):
self.assertEqual(db.count_messages(sid), 1)
def test_direct_sniffer_device_disconnect(self):
from simtrace2_pysniff.server.capture import DirectSniffer
from simtrace_analyser.capture import DirectSniffer
sn = DirectSniffer()
sn._session = _DisconnectingSession()
self.assertEqual(list(sn.iter_messages()), [])
@@ -84,7 +84,7 @@ class TestCaptureManager(unittest.TestCase):
self.assertEqual([m['type'] for m in msgs], ['gap', 'tpdu'])
def test_direct_sniffer_connected(self):
from simtrace2_pysniff.server.capture import DirectSniffer
from simtrace_analyser.capture import DirectSniffer
class _FakeSession:
connected = True
@@ -96,7 +96,7 @@ class TestCaptureManager(unittest.TestCase):
self.assertFalse(sn.connected)
def test_device_connected_gsmtap_none(self):
from simtrace2_pysniff.server.capture import GsmtapListener
from simtrace_analyser.capture import GsmtapListener
listener = GsmtapListener(bind_port=0)
self.addCleanup(listener.stop)
mgr, _ = self._manager(listener)
@@ -170,7 +170,7 @@ class _RaisingBackend:
class TestGsmtapListenerRobustness(unittest.TestCase):
def test_listener_survives_bad_packet(self):
from simtrace2_pysniff.server.capture import GsmtapListener
from simtrace_analyser.capture import GsmtapListener
listener = GsmtapListener(bind_port=0)
listener._receiver.close() # drop the real socket before swapping
listener._receiver = _FlakyReceiver(listener, ['raise_non_sim', 'good'])
@@ -181,7 +181,7 @@ class TestGsmtapListenerRobustness(unittest.TestCase):
self.assertEqual(listener.dropped, 1)
def test_listener_survives_short_packet(self):
from simtrace2_pysniff.server.capture import GsmtapListener
from simtrace_analyser.capture import GsmtapListener
listener = GsmtapListener(bind_port=0)
listener._receiver.close() # drop the real socket before swapping
listener._receiver = _FlakyReceiver(listener, ['raise_short', 'good'])
+146 -146
View File
File diff suppressed because it is too large. Load diff
+1 -1
View File
@@ -4,7 +4,7 @@ import struct
import unittest
from simtrace2_pysniff.pcap import build_pcap, PCAP_MAGIC, LINKTYPE_ETHERNET
from simtrace2_pysniff.server.server import _content_disposition
from simtrace_analyser.server import _content_disposition
FRAMING = 14 + 20 + 8 # Ethernet + IPv4 + UDP
+7 -7
View File
@@ -147,8 +147,8 @@ class TestTsresol(unittest.TestCase):
class TestImportEndpoint(unittest.TestCase):
def _handler(self, body):
from simtrace2_pysniff.server.server import RequestHandler
from simtrace2_pysniff.server.database import Database
from simtrace_analyser.server import RequestHandler
from simtrace_analyser.database import Database
class Fake(RequestHandler):
def __init__(self, body, db):
@@ -224,12 +224,12 @@ class TestImportEndpoint(unittest.TestCase):
class TestVersion(unittest.TestCase):
def test_package_version(self):
from simtrace2_pysniff import __version__
self.assertEqual(__version__, '1.22.21')
self.assertEqual(__version__, '2.0.0')
def test_status_includes_version(self):
import os
from simtrace2_pysniff.server.server import RequestHandler
from simtrace2_pysniff.server.database import Database
from simtrace_analyser.server import RequestHandler
from simtrace_analyser.database import Database
from simtrace2_pysniff import __version__
class FakeCapture:
@@ -259,8 +259,8 @@ class TestVersion(unittest.TestCase):
class TestCaptureDisabled(unittest.TestCase):
def _handler(self, capture_mode):
import os
from simtrace2_pysniff.server.server import RequestHandler
from simtrace2_pysniff.server.database import Database
from simtrace_analyser.server import RequestHandler
from simtrace_analyser.database import Database
class Fake(RequestHandler):
def __init__(self, db, capture_mode):