Run network direct dial lookup once per stream

master
Simon 3 weeks ago
parent 044a9b8f55
commit 89e629fd4e

@ -2230,6 +2230,8 @@ class routerOBP(OPENBRIDGE):
else:
self._report.send_bridgeEvent('{},DATA,RX,{},{},{},{},{},{}'.format(_data_event, self._system, int_id(_stream_id), int_id(_peer_id), int_id(_rf_src), _slot, int_id(_dst_id)).encode(encoding='utf-8', errors='ignore'))
if not _data_control:
activate_network_direct_dial(_dst_id, pkt_time)
else:
if 'packets' in self.STATUS[_stream_id]:
@ -2349,9 +2351,6 @@ class routerOBP(OPENBRIDGE):
logger.debug('(%s) Bridge for STAT TG %s does not exist. Creating',self._system, int_id(_dst_id))
make_stat_bridge(_dst_id)
if not _data_control:
activate_network_direct_dial(_dst_id, pkt_time)
_sysIgnore = deque()
for _bridge in BRIDGES:
for _system in BRIDGES[_bridge]:

@ -1391,6 +1391,52 @@ NETWORK_DIRECT_DIAL_SLOT: {value}
)
self.assertTrue(entry["ACTIVE"])
def test_network_direct_dial_lookup_runs_once_per_stream(self):
config = minimal_config(("MASTER-A",))
add_openbridge_system(config, "OBP-1", network_id=3001)
with DeterministicScenario(config=config) as scenario:
scenario.register_peer("MASTER-A", 1001)
scenario.clock.advance(6)
calls = []
activate = scenario.bm.activate_network_direct_dial
def record_activation(dst_id, pkt_time):
calls.append((dst_id, pkt_time))
activate(dst_id, pkt_time)
scenario.bm.activate_network_direct_dial = record_activation
try:
scenario.inject_obp(
"OBP-1",
PacketSpec(dst_id=1001, stream_id=0x01020304, seq=0),
)
scenario.inject_obp(
"OBP-1",
PacketSpec(
dst_id=1001,
stream_id=0x01020304,
seq=1,
payload=b"\x01" * 33,
),
)
scenario.inject_obp(
"OBP-1",
PacketSpec(
dst_id=1001,
stream_id=0x01020305,
seq=0,
payload=b"\x02" * 33,
),
)
finally:
scenario.bm.activate_network_direct_dial = activate
self.assertEqual(len(calls), 2)
self.assertEqual(calls[0][0], bytes_3(1001))
self.assertEqual(calls[1][0], bytes_3(1001))
def test_network_direct_dial_can_route_to_slot2_for_dmo_clients(self):
config = minimal_config(("MASTER-A",))
config["SYSTEMS"]["MASTER-A"]["NETWORK_DIRECT_DIAL_SLOT"] = 2

Loading…
Cancel
Save

Powered by TurnKey Linux.