-
Notifications
You must be signed in to change notification settings - Fork 19
Closed as not planned
Labels
bugSomething isn't workingSomething isn't workingtriageNew issue that needs to be reviewedNew issue that needs to be reviewed
Description
Bug Report
This test run failed to load NI-SWITCH for Python 3.10, but it passed for the other versions: https://github.com/ni/measurement-plugin-python/actions/runs/10626770324/job/29458939886?pr=858
Repro or Code Sample
PR build
Expected Behavior
The tests pass.
Current Behavior
================================== FAILURES ===================================
_ test___multiple_sessions_reserved___initialize_niswitch_sessions___creates_multiple_sessions _
pin_map_context = PinMapContext(pin_map_id='C:\\actions-runner\\1\\_work\\measurement-plugin-python\\measurement-plugin-python\\packages\\service\\tests\\assets\\integration\\session_management\\2Switch2Relay1Site.pinmap', sites=[0])
session_management_client = <ni_measurement_plugin_sdk_service.session_management._client.SessionManagementClient object at 0x0000022D8032E800>
def test___multiple_sessions_reserved___initialize_niswitch_sessions___creates_multiple_sessions(
pin_map_context: PinMapContext,
session_management_client: SessionManagementClient,
) -> None:
relay_names = ["SiteRelay1", "SiteRelay2"]
niswitch_resource = ["RelayDriver1", "RelayDriver2"]
with ExitStack() as stack:
reservation = stack.enter_context(
session_management_client.reserve_sessions(pin_map_context, relay_names)
)
> session_infos = stack.enter_context(reservation.initialize_niswitch_sessions())
tests\integration\session_management\test_niswitch_reservation.py:43:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
C:\Program Files\Python310\lib\contextlib.py:492: in enter_context
result = _cm_type.__enter__(cm)
C:\Program Files\Python310\lib\contextlib.py:135: in __enter__
return next(self.gen)
ni_measurement_plugin_sdk_service\session_management\_reservation.py:756: in _initialize_sessions_core
session = stack.enter_context(closing_function(session_constructor(session_info)))
ni_measurement_plugin_sdk_service\_drivers\_niswitch.py:76: in __call__
return niswitch.Session(
.tox\py310-all-extras\lib\site-packages\niswitch\session.py:1377: in __init__
self._interpreter.set_session_handle(self._init_with_topology(resource_name, topology, simulate, reset_device))
.tox\py310-all-extras\lib\site-packages\niswitch\session.py:1993: in _init_with_topology
vi = self._interpreter.init_with_topology(resource_name, topology, simulate, reset_device)
.tox\py310-all-extras\lib\site-packages\niswitch\_grpc_stub_interpreter.py:202: in init_with_topology
response = self._invoke(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <niswitch._grpc_stub_interpreter.GrpcStubInterpreter object at 0x0000022D8881E860>
func = <grpc._channel._UnaryUnaryMultiCallable object at 0x0000022D888723B0>
request = session_name: "RelayDriver1"
topology: "2567/Independent"
simulate: true
metadata = (('ni-api-key', 'DE10751B-3EE0-44EC-A93B-800E6A3C89E4'),)
def _invoke(self, func, request, metadata=None):
try:
response = func(request, metadata=metadata)
error_code = response.status
error_message = ''
except grpc.RpcError as rpc_error:
error_code = None
error_message = rpc_error.details()
for entry in rpc_error.trailing_metadata() or []:
if entry.key == 'ni-error':
value = entry.value if isinstance(entry.value, str) else entry.value.decode('utf-8')
try:
error_code = int(value)
except ValueError:
error_message += f'\nError status: {value}'
grpc_error = rpc_error.code()
if grpc_error == grpc.StatusCode.NOT_FOUND:
raise errors.DriverTooOldError() from None
elif grpc_error == grpc.StatusCode.INVALID_ARGUMENT:
raise ValueError(error_message) from None
elif grpc_error == grpc.StatusCode.UNAVAILABLE:
error_message = 'Failed to connect to server'
elif grpc_error == grpc.StatusCode.UNIMPLEMENTED:
error_message = (
'This operation is not supported by the NI gRPC Device Server being used. Upgrade NI gRPC Device Server.'
)
if error_code is None:
raise errors.RpcError(grpc_error, error_message) from None
if error_code < 0:
> raise errors.DriverError(error_code, error_message)
E niswitch.errors.DriverError: -1074135030: IVI: Failure loading driver module.
E
E The driver for the DAQmx switch is not loaded
.tox\py310-all-extras\lib\site-packages\niswitch\_grpc_stub_interpreter.py:63: DriverError
____ test___session_created___get_niswitch_connection___returns_connection ____
pin_map_context = PinMapContext(pin_map_id='C:\\actions-runner\\1\\_work\\measurement-plugin-python\\measurement-plugin-python\\packages\\service\\tests\\assets\\integration\\session_management\\2Switch2Relay1Site.pinmap', sites=[0])
session_management_client = <ni_measurement_plugin_sdk_service.session_management._client.SessionManagementClient object at 0x0000022DFFAF61A0>
def test___session_created___get_niswitch_connection___returns_connection(
pin_map_context: PinMapContext,
session_management_client: SessionManagementClient,
) -> None:
relay_names = ["SiteRelay1"]
with ExitStack() as stack:
reservation = stack.enter_context(
session_management_client.reserve_session(pin_map_context, relay_names)
)
> stack.enter_context(reservation.initialize_niswitch_session())
tests\integration\session_management\test_niswitch_reservation.py:61:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
C:\Program Files\Python310\lib\contextlib.py:492: in enter_context
result = _cm_type.__enter__(cm)
C:\Program Files\Python310\lib\contextlib.py:135: in __enter__
return next(self.gen)
ni_measurement_plugin_sdk_service\session_management\_reservation.py:729: in _initialize_session_core
with closing_function(session_constructor(session_info)) as session:
ni_measurement_plugin_sdk_service\_drivers\_niswitch.py:76: in __call__
return niswitch.Session(
.tox\py310-all-extras\lib\site-packages\niswitch\session.py:1377: in __init__
self._interpreter.set_session_handle(self._init_with_topology(resource_name, topology, simulate, reset_device))
.tox\py310-all-extras\lib\site-packages\niswitch\session.py:1993: in _init_with_topology
vi = self._interpreter.init_with_topology(resource_name, topology, simulate, reset_device)
.tox\py310-all-extras\lib\site-packages\niswitch\_grpc_stub_interpreter.py:202: in init_with_topology
response = self._invoke(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <niswitch._grpc_stub_interpreter.GrpcStubInterpreter object at 0x0000022D8881FAC0>
func = <grpc._channel._UnaryUnaryMultiCallable object at 0x0000022D93A7C6D0>
request = session_name: "RelayDriver1"
topology: "2567/Independent"
simulate: true
metadata = (('ni-api-key', 'DE10751B-3EE0-44EC-A93B-800E6A3C89E4'),)
def _invoke(self, func, request, metadata=None):
try:
response = func(request, metadata=metadata)
error_code = response.status
error_message = ''
except grpc.RpcError as rpc_error:
error_code = None
error_message = rpc_error.details()
for entry in rpc_error.trailing_metadata() or []:
if entry.key == 'ni-error':
value = entry.value if isinstance(entry.value, str) else entry.value.decode('utf-8')
try:
error_code = int(value)
except ValueError:
error_message += f'\nError status: {value}'
grpc_error = rpc_error.code()
if grpc_error == grpc.StatusCode.NOT_FOUND:
raise errors.DriverTooOldError() from None
elif grpc_error == grpc.StatusCode.INVALID_ARGUMENT:
raise ValueError(error_message) from None
elif grpc_error == grpc.StatusCode.UNAVAILABLE:
error_message = 'Failed to connect to server'
elif grpc_error == grpc.StatusCode.UNIMPLEMENTED:
error_message = (
'This operation is not supported by the NI gRPC Device Server being used. Upgrade NI gRPC Device Server.'
)
if error_code is None:
raise errors.RpcError(grpc_error, error_message) from None
if error_code < 0:
> raise errors.DriverError(error_code, error_message)
E niswitch.errors.DriverError: -1074135030: IVI: Failure loading driver module.
E
E The driver for the DAQmx switch is not loaded
.tox\py310-all-extras\lib\site-packages\niswitch\_grpc_stub_interpreter.py:63: DriverError
__ test___sessions_created___get_niswitch_connections___returns_connections ___
pin_map_context = PinMapContext(pin_map_id='C:\\actions-runner\\1\\_work\\measurement-plugin-python\\measurement-plugin-python\\packages\\service\\tests\\assets\\integration\\session_management\\2Switch2Relay1Site.pinmap', sites=[0])
session_management_client = <ni_measurement_plugin_sdk_service.session_management._client.SessionManagementClient object at 0x0000022DE0C729E0>
def test___sessions_created___get_niswitch_connections___returns_connections(
pin_map_context: PinMapContext,
session_management_client: SessionManagementClient,
) -> None:
relay_names = ["SiteRelay1", "SiteRelay2"]
with ExitStack() as stack:
reservation = stack.enter_context(
session_management_client.reserve_sessions(pin_map_context, relay_names)
)
> stack.enter_context(reservation.initialize_niswitch_sessions())
tests\integration\session_management\test_niswitch_reservation.py:79:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
C:\Program Files\Python310\lib\contextlib.py:492: in enter_context
result = _cm_type.__enter__(cm)
C:\Program Files\Python310\lib\contextlib.py:135: in __enter__
return next(self.gen)
ni_measurement_plugin_sdk_service\session_management\_reservation.py:756: in _initialize_sessions_core
session = stack.enter_context(closing_function(session_constructor(session_info)))
ni_measurement_plugin_sdk_service\_drivers\_niswitch.py:76: in __call__
return niswitch.Session(
.tox\py310-all-extras\lib\site-packages\niswitch\session.py:1377: in __init__
self._interpreter.set_session_handle(self._init_with_topology(resource_name, topology, simulate, reset_device))
.tox\py310-all-extras\lib\site-packages\niswitch\session.py:1993: in _init_with_topology
vi = self._interpreter.init_with_topology(resource_name, topology, simulate, reset_device)
.tox\py310-all-extras\lib\site-packages\niswitch\_grpc_stub_interpreter.py:202: in init_with_topology
response = self._invoke(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <niswitch._grpc_stub_interpreter.GrpcStubInterpreter object at 0x0000022DE0C71D80>
func = <grpc._channel._UnaryUnaryMultiCallable object at 0x0000022D88871690>
request = session_name: "RelayDriver1"
topology: "2567/Independent"
simulate: true
metadata = (('ni-api-key', 'DE10751B-3EE0-44EC-A93B-800E6A3C89E4'),)
def _invoke(self, func, request, metadata=None):
try:
response = func(request, metadata=metadata)
error_code = response.status
error_message = ''
except grpc.RpcError as rpc_error:
error_code = None
error_message = rpc_error.details()
for entry in rpc_error.trailing_metadata() or []:
if entry.key == 'ni-error':
value = entry.value if isinstance(entry.value, str) else entry.value.decode('utf-8')
try:
error_code = int(value)
except ValueError:
error_message += f'\nError status: {value}'
grpc_error = rpc_error.code()
if grpc_error == grpc.StatusCode.NOT_FOUND:
raise errors.DriverTooOldError() from None
elif grpc_error == grpc.StatusCode.INVALID_ARGUMENT:
raise ValueError(error_message) from None
elif grpc_error == grpc.StatusCode.UNAVAILABLE:
error_message = 'Failed to connect to server'
elif grpc_error == grpc.StatusCode.UNIMPLEMENTED:
error_message = (
'This operation is not supported by the NI gRPC Device Server being used. Upgrade NI gRPC Device Server.'
)
if error_code is None:
raise errors.RpcError(grpc_error, error_message) from None
if error_code < 0:
> raise errors.DriverError(error_code, error_message)
E niswitch.errors.DriverError: -1074135030: IVI: Failure loading driver module.
E
E The driver for the DAQmx switch is not loaded
.tox\py310-all-extras\lib\site-packages\niswitch\_grpc_stub_interpreter.py:63: DriverError
- generated xml file: C:\actions-runner\1\_work\measurement-plugin-python\measurement-plugin-python\packages\service\test_results\nims-i-0d1440414f4a8ccc5-1-py310-all-extras.xml -
=========================== short test summary info ===========================
FAILED tests/integration/session_management/test_niswitch_reservation.py::test___multiple_sessions_reserved___initialize_niswitch_sessions___creates_multiple_sessions
FAILED tests/integration/session_management/test_niswitch_reservation.py::test___session_created___get_niswitch_connection___returns_connection
FAILED tests/integration/session_management/test_niswitch_reservation.py::test___sessions_created___get_niswitch_connections___returns_connections
================== 3 failed, 631 passed in 556.59s (0:09:16) ==================
Possible Solution
None
Context
Your Environment
- OS & Device: Windows
ni-measurement-plugin-sdk-serviceversion: latest main- MeasurementLink version: whatever is on the self-hosted runner
- Python version: 3.10
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingtriageNew issue that needs to be reviewedNew issue that needs to be reviewed