37 lines
799 B
Python
37 lines
799 B
Python
import socket
|
|
import threading
|
|
from pathlib import Path
|
|
|
|
from colony.core.roles.role import Role
|
|
from colony.transport.listener import Listener
|
|
|
|
REPO_ROOT = Path(__file__).resolve().parent.parent
|
|
CERT = str(REPO_ROOT / "certs" / "server.crt")
|
|
KEY = str(REPO_ROOT / "certs" / "server.key")
|
|
|
|
|
|
def free_port():
|
|
with socket.socket() as s:
|
|
s.bind(("127.0.0.1", 0))
|
|
return s.getsockname()[1]
|
|
|
|
|
|
def start_listener(dispatcher):
|
|
listener = Listener(dispatcher, host="127.0.0.1", port=0, cert_file=CERT, keyfile=KEY)
|
|
listener.bind()
|
|
threading.Thread(target=listener.start, daemon=True).start()
|
|
return listener
|
|
|
|
|
|
class StubRole(Role):
|
|
def __init__(self, context):
|
|
super().__init__({}, context)
|
|
|
|
|
|
class RoleA(StubRole):
|
|
pass
|
|
|
|
|
|
class RoleB(StubRole):
|
|
pass
|