forked from auracaster/bumble_mirror
Add android-netsim self test
This commit is contained in:
@@ -145,8 +145,6 @@ def publish_grpc_port(grpc_port: int, instance_number: int) -> bool:
|
|||||||
async def open_android_netsim_controller_transport(
|
async def open_android_netsim_controller_transport(
|
||||||
server_host: Optional[str], server_port: int, options: dict[str, str]
|
server_host: Optional[str], server_port: int, options: dict[str, str]
|
||||||
) -> Transport:
|
) -> Transport:
|
||||||
if not server_port:
|
|
||||||
raise TransportSpecError('invalid port')
|
|
||||||
if server_host == '_' or not server_host:
|
if server_host == '_' or not server_host:
|
||||||
server_host = 'localhost'
|
server_host = 'localhost'
|
||||||
|
|
||||||
@@ -168,14 +166,16 @@ async def open_android_netsim_controller_transport(
|
|||||||
await self.pump_loop()
|
await self.pump_loop()
|
||||||
except asyncio.CancelledError:
|
except asyncio.CancelledError:
|
||||||
logger.debug('Pump task canceled')
|
logger.debug('Pump task canceled')
|
||||||
self.done.set_result(None)
|
if not self.done.done():
|
||||||
|
self.done.set_result(None)
|
||||||
|
|
||||||
async def pump_loop(self):
|
async def pump_loop(self):
|
||||||
while True:
|
while True:
|
||||||
request = await self.context.read()
|
request = await self.context.read()
|
||||||
if request == grpc.aio.EOF:
|
if request == grpc.aio.EOF:
|
||||||
logger.debug('End of request stream')
|
logger.debug('End of request stream')
|
||||||
self.done.set_result(None)
|
if not self.done.done():
|
||||||
|
self.done.set_result(None)
|
||||||
return
|
return
|
||||||
|
|
||||||
# If we're not initialized yet, wait for a init packet.
|
# If we're not initialized yet, wait for a init packet.
|
||||||
@@ -220,6 +220,8 @@ async def open_android_netsim_controller_transport(
|
|||||||
async def wait_for_termination(self):
|
async def wait_for_termination(self):
|
||||||
await self.done
|
await self.done
|
||||||
|
|
||||||
|
server_address = f'{server_host}:{server_port}'
|
||||||
|
|
||||||
class Server(PacketStreamerServicer, ParserSource):
|
class Server(PacketStreamerServicer, ParserSource):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
PacketStreamerServicer.__init__(self)
|
PacketStreamerServicer.__init__(self)
|
||||||
@@ -230,8 +232,8 @@ async def open_android_netsim_controller_transport(
|
|||||||
# a server listening on that port, we get an exception.
|
# a server listening on that port, we get an exception.
|
||||||
self.grpc_server = grpc.aio.server(options=(('grpc.so_reuseport', 0),))
|
self.grpc_server = grpc.aio.server(options=(('grpc.so_reuseport', 0),))
|
||||||
add_PacketStreamerServicer_to_server(self, self.grpc_server)
|
add_PacketStreamerServicer_to_server(self, self.grpc_server)
|
||||||
self.grpc_server.add_insecure_port(f'{server_host}:{server_port}')
|
self.port = self.grpc_server.add_insecure_port(server_address)
|
||||||
logger.debug(f'gRPC server listening on {server_host}:{server_port}')
|
logger.debug('gRPC server listening on %s', server_address)
|
||||||
|
|
||||||
async def start(self):
|
async def start(self):
|
||||||
logger.debug('Starting gRPC server')
|
logger.debug('Starting gRPC server')
|
||||||
|
|||||||
@@ -206,6 +206,28 @@ async def test_unix_connection_abstract():
|
|||||||
await server_transport.close()
|
await server_transport.close()
|
||||||
|
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"address,",
|
||||||
|
("127.0.0.1",),
|
||||||
|
)
|
||||||
|
async def test_android_netsim_connection(address):
|
||||||
|
controller_transport = await transport.open_transport(
|
||||||
|
"android-netsim:_:0,mode=controller"
|
||||||
|
)
|
||||||
|
port = controller_transport.source.port
|
||||||
|
_make_controller_from_transport(controller_transport)
|
||||||
|
|
||||||
|
client_transport = await transport.open_transport(
|
||||||
|
f"android-netsim:{address}:{port},mode=host"
|
||||||
|
)
|
||||||
|
client_device = _make_device_from_transport(client_transport)
|
||||||
|
await client_device.power_on()
|
||||||
|
|
||||||
|
await client_transport.close()
|
||||||
|
await controller_transport.close()
|
||||||
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
test_parser()
|
test_parser()
|
||||||
|
|||||||
Reference in New Issue
Block a user