def list_boards(id_list): """List all connected DAPLink boards repeatedly Assert that they are the same as the id list passed in. """ for _ in range(0, 20): device_list = DAPAccess.get_connected_devices() found_id_list = [device.get_unique_id() for device in device_list] found_id_list.sort() assert id_list == found_id_list, "Expected %s, got %s" % \ (id_list, found_id_list)
def parallel_test(): """Test that devices can be found and opened in parallel""" device_list = DAPAccess.get_connected_devices() id_list = [device.get_unique_id() for device in device_list] id_list.sort() if len(id_list) < 2: print("Need at least 2 boards to run the parallel test") exit(-1) # Goal of this file is to test that: # -The process of listing available boards does not interfere # with other processes enumerating, opening, or using boards # -Opening and using a board does not interfere with another process # processes which is enumerating, opening, or using boards as # long as that is not the current board print("Listing board from multiple threads at the same time") args_list = [(id_list,) for _ in range(5)] run_in_parallel(list_boards, args_list) print("Listing board from multiple processes at the same time") run_in_processes(list_boards, args_list) print("Opening same board from multiple threads at the same time") device = DAPAccess.get_device(id_list[0]) device.open() open_already_opened(id_list[0]) args_list = [(id_list[0],) for _ in range(5)] run_in_parallel(open_already_opened, args_list) device.close() print("Opening same board from multiple processes at the same time") device = DAPAccess.get_device(id_list[0]) device.open() open_already_opened(id_list[0]) args_list = [(id_list[0],) for _ in range(5)] run_in_processes(open_already_opened, args_list) device.close() print("Opening different boards from different threads") args_list = [(board_id,) for board_id in id_list] run_in_parallel(search_and_lock, args_list) print("Opening different boards from different processes") run_in_processes(search_and_lock, args_list) print("Test passed")