@@ -429,6 +429,88 @@ async def test_assign_endpoint_static_varies(dbus, mctpd):
429429 assert str (ex .value ) == "Already assigned a different EID"
430430
431431
432+ async def test_assign_bridge_static (dbus , mctpd ):
433+ """Test that AssignBridgeStatic assigns the requested EID and pool to a
434+ bridge endpoint, and marks it as new on first call.
435+ """
436+ iface = mctpd .system .interfaces [0 ]
437+ dev = mctpd .network .endpoints [0 ]
438+ mctp = await mctpd_mctp_iface_obj (dbus , iface )
439+ static_eid = 12
440+ pool_size = 3
441+ pool_start = static_eid + 1
442+
443+ for _ in range (pool_size ):
444+ dev .add_bridged_ep (Endpoint (iface , bytes ()))
445+
446+ (eid , pool_start_out , _ , _ , new ) = await mctp .call_assign_bridge_static (
447+ dev .lladdr , static_eid , pool_start , pool_size
448+ )
449+
450+ assert eid == static_eid
451+ assert pool_start_out == pool_start
452+ assert new
453+
454+
455+ async def test_assign_bridge_static_zero_start (dbus , mctpd ):
456+ """Test that AssignBridgeStatic sets pool start EID to bridge-eid+1
457+ when pool_start is passed as zero.
458+ """
459+ iface = mctpd .system .interfaces [0 ]
460+ dev = mctpd .network .endpoints [0 ]
461+ mctp = await mctpd_mctp_iface_obj (dbus , iface )
462+ static_eid = 12
463+ pool_size = 3
464+ pool_start = 0
465+ expected_pool_start = static_eid + 1
466+
467+ for _ in range (pool_size ):
468+ dev .add_bridged_ep (Endpoint (iface , bytes ()))
469+
470+ (eid , pool_start_out , _ , _ , new ) = await mctp .call_assign_bridge_static (
471+ dev .lladdr , static_eid , pool_start , pool_size
472+ )
473+
474+ assert eid == static_eid
475+ assert pool_start_out == expected_pool_start
476+ assert new
477+
478+
479+ async def test_assign_bridge_static_conflict (dbus , mctpd ):
480+ """Test that AssignBridgeStatic rejects an EID that is already in use by
481+ a different endpoint.
482+ """
483+ iface = mctpd .system .interfaces [0 ]
484+ dev1 = mctpd .network .endpoints [0 ]
485+ mctp = await mctpd_mctp_iface_obj (dbus , iface )
486+
487+ dev2 = Endpoint (iface , bytes ([0x1E ]))
488+ mctpd .network .add_endpoint (dev2 )
489+
490+ static_eid = 12
491+ pool_size = 3
492+ pool_start = static_eid + 1
493+
494+ for _ in range (pool_size ):
495+ dev1 .add_bridged_ep (Endpoint (iface , bytes ()))
496+
497+ (eid , pool_start_out , _ , _ , new ) = await mctp .call_assign_bridge_static (
498+ dev1 .lladdr , static_eid , pool_start , pool_size
499+ )
500+ print (f"dev1 assigned: eid={ eid } , new={ new } " )
501+ assert pool_start_out == pool_start
502+ assert new
503+
504+ # try to assign dev2 the same EID — must fail
505+ with pytest .raises (asyncdbus .errors .DBusError ) as ex :
506+ await mctp .call_assign_bridge_static (
507+ dev2 .lladdr , static_eid , pool_start , pool_size
508+ )
509+
510+ print (f"dev2 conflict error: { ex .value } " )
511+ assert str (ex .value ) == "Address in use"
512+
513+
432514async def test_get_endpoint_id (dbus , mctpd , routed_ep ):
433515 """Test that the mctpd control protocol responder support has support for a
434516 basic Get Endpoint ID command
0 commit comments