feat: add p2p shard swarm
This commit is contained in:
@@ -238,6 +238,50 @@ def test_tracker_registration_rejects_invalid_payload():
|
||||
tracker.stop()
|
||||
|
||||
|
||||
def test_tracker_routes_only_nodes_for_requested_model():
|
||||
"""A node registered for one model cannot satisfy another model's route."""
|
||||
tracker = TrackerServer(model_presets={
|
||||
"model-a": {"layers_start": 0, "layers_end": 31},
|
||||
"model-b": {"layers_start": 0, "layers_end": 31},
|
||||
})
|
||||
tracker_port = tracker.start()
|
||||
try:
|
||||
_post_json(
|
||||
f"http://127.0.0.1:{tracker_port}/v1/nodes/register",
|
||||
{"endpoint": "http://127.0.0.1:9001", "shard_start": 0, "shard_end": 31,
|
||||
"model": "model-a", "hardware_profile": {}, "wallet_address": "wallet-a", "score": 1.0},
|
||||
)
|
||||
|
||||
try:
|
||||
_get_json(f"http://127.0.0.1:{tracker_port}/v1/route?model=model-b")
|
||||
raise AssertionError("Expected model-b route to ignore model-a nodes")
|
||||
except urllib.error.HTTPError as exc:
|
||||
assert exc.code == 503
|
||||
finally:
|
||||
tracker.stop()
|
||||
|
||||
|
||||
def test_tracker_assignment_coverage_is_model_scoped():
|
||||
"""Shard assignment gaps are computed only from nodes serving the same model."""
|
||||
tracker = TrackerServer(model_presets={
|
||||
"model-a": {"layers_start": 0, "layers_end": 31},
|
||||
"model-b": {"layers_start": 0, "layers_end": 31},
|
||||
})
|
||||
tracker_port = tracker.start()
|
||||
try:
|
||||
_post_json(
|
||||
f"http://127.0.0.1:{tracker_port}/v1/nodes/register",
|
||||
{"endpoint": "http://127.0.0.1:9001", "shard_start": 0, "shard_end": 15,
|
||||
"model": "model-a", "hardware_profile": {}, "wallet_address": "wallet-a", "score": 1.0},
|
||||
)
|
||||
|
||||
assignment = _get_json(f"http://127.0.0.1:{tracker_port}/v1/nodes/assign?model=model-b&device=cpu")
|
||||
assert assignment["shard_start"] == 0
|
||||
assert assignment["shard_end"] == 15
|
||||
finally:
|
||||
tracker.stop()
|
||||
|
||||
|
||||
def test_tracker_excludes_banned_wallets_from_routes():
|
||||
"""Tracker refuses route candidates whose wallet is banned on-chain."""
|
||||
contracts = LocalSolanaContracts()
|
||||
|
||||
Reference in New Issue
Block a user