You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
3.5 KiB
84 lines
3.5 KiB
# License: Apache 2.0. See LICENSE file in root directory.
|
|
# Copyright(c) 2022 Intel Corporation. All Rights Reserved.
|
|
|
|
#test:donotrun:!dds
|
|
#test:retries:gha 2
|
|
|
|
from rspy import log, test
|
|
log.nested = 'C '
|
|
|
|
import d435i
|
|
import d405
|
|
import dds
|
|
import pyrealsense2 as rs
|
|
if log.is_debug_on():
|
|
rs.log_to_console( rs.log_severity.debug )
|
|
from time import sleep
|
|
|
|
only_sw_devices = int(rs.product_line.sw_only) | int(rs.product_line.any_intel)
|
|
|
|
import os.path
|
|
cwd = os.path.dirname(os.path.realpath(__file__))
|
|
remote_script = os.path.join( cwd, 'device-broadcaster.py' )
|
|
with test.remote( remote_script, nested_indent=" S" ) as remote:
|
|
remote.wait_until_ready()
|
|
#
|
|
#############################################################################################
|
|
#
|
|
with test.closure( "Start two devices", on_fail=test.ABORT ):
|
|
remote.run( 'instance = broadcast_device( d435i, d435i.device_info )' )
|
|
remote.run( 'instance2 = broadcast_device( d405, d405.device_info )' )
|
|
|
|
# Create context after remote device is ready to test discovery on start-up
|
|
context = rs.context( { 'dds': { 'enabled': True, 'domain': 123, 'participant': 'librs' }} )
|
|
# The DDS devices take time to be recognized and we just created the context; we
|
|
# should not see them yet!
|
|
#test.check( len( context.query_devices( only_sw_devices )) != 2 )
|
|
# Wait for them
|
|
dds.wait_for_devices( context, only_sw_devices, n=2. )
|
|
#
|
|
#############################################################################################
|
|
#
|
|
with test.closure( "Start a third", on_fail=test.ABORT ):
|
|
remote.run( 'instance3 = broadcast_device( d455, d455.device_info )' )
|
|
dds.wait_for_devices( context, only_sw_devices, n=3. )
|
|
#
|
|
#############################################################################################
|
|
#
|
|
with test.closure( "Close the first", on_fail=test.ABORT ):
|
|
dds.devices_updated.clear()
|
|
remote.run( 'close_server( instance )' )
|
|
remote.run( 'instance = None', timeout=1 )
|
|
dds.wait_for_devices( context, only_sw_devices, n=2. )
|
|
#
|
|
#############################################################################################
|
|
#
|
|
with test.closure( "Add a fourth", on_fail=test.ABORT ):
|
|
remote.run( 'instance4 = broadcast_device( d435i, d435i.device_info )' )
|
|
dds.wait_for_devices( context, only_sw_devices, n=3. )
|
|
#
|
|
#############################################################################################
|
|
#
|
|
with test.closure( "Close the second", on_fail=test.ABORT ):
|
|
remote.run( 'close_server( instance2 )' )
|
|
remote.run( 'instance2 = None', timeout=1 )
|
|
dds.wait_for_devices( context, only_sw_devices, n=2. )
|
|
#
|
|
#############################################################################################
|
|
#
|
|
with test.closure( "Close the third", on_fail=test.ABORT ):
|
|
remote.run( 'close_server( instance3 )' )
|
|
remote.run( 'instance2 = None', timeout=1 )
|
|
dds.wait_for_devices( context, only_sw_devices, n=1. )
|
|
#
|
|
#############################################################################################
|
|
#
|
|
with test.closure( "Close the last", on_fail=test.ABORT ):
|
|
remote.run( 'close_server( instance4 )' )
|
|
dds.wait_for_devices( context, only_sw_devices, n=0. )
|
|
#
|
|
#############################################################################################
|
|
|
|
context = None
|
|
test.print_results_and_exit()
|