Skip to content

Commit a0a387c

Browse files
authored
Use simulated 5433 for all nifgen system tests (#2010)
* reimplement PR#1598 - Stop using DAQmx-based simulated device in nifgen system tests * Fix test_get_self_cal_last_date_and_time failure * Fix test_create_advanced_arb_sequence failure * Fix flake8 failures
1 parent 2efbbc7 commit a0a387c

File tree

1 file changed

+20
-42
lines changed

1 file changed

+20
-42
lines changed

src/nifgen/system_tests/test_system_nifgen.py

Lines changed: 20 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import tempfile
55
import warnings
66

7-
import fasteners
87
import grpc
98
import hightime
109
import numpy
@@ -16,20 +15,9 @@
1615
import system_test_utilities # noqa: E402
1716

1817

19-
# Set up some global information we need
18+
# Set up global information we need
2019
test_files_base_dir = os.path.join(os.path.dirname(__file__))
2120

22-
# We need a lock file so multiple tests aren't hitting the db at the same time
23-
# Trying to create simulated DAQmx devices at the same time (which can happen when running
24-
# tox with --parallel N, or when two different drivers are being tested at the same time on
25-
# the same machine, can result in an internal error:
26-
# -2147220733: MAX: (Hex 0x80040303) Internal error: The requested object was not found in
27-
# the configuration database. Please note the steps you performed that led to this error and
28-
# contact technical support at http://ni.com/support.
29-
# This is filed as internal bug 255545
30-
daqmx_sim_db_lock_file = os.path.join(tempfile.gettempdir(), 'daqmx_db.lock')
31-
daqmx_sim_db_lock = fasteners.InterProcessLock(daqmx_sim_db_lock_file)
32-
3321

3422
def get_test_file_path(file_name):
3523
return os.path.join(test_files_base_dir, file_name)
@@ -48,14 +36,6 @@ def session(self, session_creation_kwargs):
4836
with nifgen.Session('', '0', False, 'Simulate=1, DriverSetup=Model:5433 (2CH);BoardType:PXIe', **session_creation_kwargs) as simulated_session:
4937
yield simulated_session
5038

51-
@pytest.fixture(scope='function')
52-
def session_5421(self, session_creation_kwargs):
53-
with daqmx_sim_db_lock:
54-
simulated_session = nifgen.Session('', '0', False, 'Simulate=1, DriverSetup=Model:5421;BoardType:PXI', **session_creation_kwargs)
55-
yield simulated_session
56-
with daqmx_sim_db_lock:
57-
simulated_session.close()
58-
5939
def test_self_test(self, session):
6040
# We should not get an assert if self_test passes
6141
session.self_test()
@@ -91,13 +71,13 @@ def test_get_error(self, session):
9171
def test_method_get_self_cal_supported(self, session):
9272
assert session.get_self_cal_supported() in [True, False]
9373

94-
# TODO(sbethur): When internal bug# 999932 is fixed, update the test to use PXIe-5433 (Tracked on GitHub by #1375)
95-
def test_get_self_cal_last_date_and_time(self, session_5421):
96-
try:
97-
session_5421.get_self_cal_last_date_and_time()
98-
assert False
99-
except nifgen.Error as e:
100-
assert e.code == -1074118632 # This operation is not supported for simulated device
74+
def test_get_self_cal_last_date_and_time(self, session):
75+
before = hightime.datetime.now()
76+
# Returned cal time does not have sub-minute info
77+
before = before.replace(second=0, microsecond=0)
78+
last_cal_time = session.get_self_cal_last_date_and_time()
79+
after = hightime.datetime.now()
80+
assert before <= last_cal_time <= after
10181

10282
def test_self_cal(self, session):
10383
session.self_cal()
@@ -247,20 +227,19 @@ def test_create_arb_sequence(self, session):
247227
assert 0 == session.create_arb_sequence(waveform_handles_array, [10])
248228
assert 1 == session.create_arb_sequence(waveform_handles_array, [10])
249229

250-
# TODO(sbethur): When internal bug# 227842 is fixed, update the test to use PXIe-5433 (Tracked on GitHub by #1376)
251-
def test_create_advanced_arb_sequence(self, session_5421):
252-
seq_handle_base = 100000 # This is not necessary on 5433 because handles start at 0.
230+
def test_create_advanced_arb_sequence(self, session):
231+
seq_handle_base = 0 # On 5433, handles start at 0.
253232
waveform_data = [x * (1.0 / 256.0) for x in range(256)]
254-
waveform_handles_array = [session_5421.create_waveform(waveform_data), session_5421.create_waveform(waveform_data), session_5421.create_waveform(waveform_data)]
233+
waveform_handles_array = [session.create_waveform(waveform_data), session.create_waveform(waveform_data), session.create_waveform(waveform_data)]
255234
marker_location_array = [0, 16, 32]
256235
sample_counts_array = [256, 128, 64]
257236
loop_counts_array = [10, 20, 30]
258-
session_5421.output_mode = nifgen.OutputMode.SEQ
237+
session.output_mode = nifgen.OutputMode.SEQ
259238
# Test relies on value of sequence handles starting at a known value and incrementing sequentially. Hardly ideal.
260-
assert ([], seq_handle_base + 0) == session_5421.create_advanced_arb_sequence(waveform_handles_array, loop_counts_array=loop_counts_array)
261-
assert ([], seq_handle_base + 1) == session_5421.create_advanced_arb_sequence(waveform_handles_array, loop_counts_array=loop_counts_array, sample_counts_array=sample_counts_array)
262-
assert (marker_location_array, seq_handle_base + 2) == session_5421.create_advanced_arb_sequence(waveform_handles_array, loop_counts_array=loop_counts_array, marker_location_array=marker_location_array)
263-
assert (marker_location_array, seq_handle_base + 3) == session_5421.create_advanced_arb_sequence(waveform_handles_array, loop_counts_array=loop_counts_array, sample_counts_array=sample_counts_array, marker_location_array=marker_location_array)
239+
assert ([], seq_handle_base + 0) == session.create_advanced_arb_sequence(waveform_handles_array, loop_counts_array=loop_counts_array)
240+
assert ([], seq_handle_base + 1) == session.create_advanced_arb_sequence(waveform_handles_array, loop_counts_array=loop_counts_array, sample_counts_array=sample_counts_array)
241+
assert (marker_location_array, seq_handle_base + 2) == session.create_advanced_arb_sequence(waveform_handles_array, loop_counts_array=loop_counts_array, marker_location_array=marker_location_array)
242+
assert (marker_location_array, seq_handle_base + 3) == session.create_advanced_arb_sequence(waveform_handles_array, loop_counts_array=loop_counts_array, sample_counts_array=sample_counts_array, marker_location_array=marker_location_array)
264243

265244
def test_arb_script(self, session):
266245
waveform_data = [x * (1.0 / 256.0) for x in range(256)]
@@ -469,16 +448,15 @@ def test_create_waveform_wrong_type(self, session):
469448
except (TypeError, ValueError):
470449
pass
471450

472-
# TODO(sbethur): When internal bug# 227842 is fixed, update the test to use PXIe-5433 (Tracked on GitHub by #1376)
473-
def test_create_advanced_arb_sequence_wrong_size(self, session_5421):
451+
def test_create_advanced_arb_sequence_wrong_size(self, session):
474452
waveform_data = [x * (1.0 / 256.0) for x in range(256)]
475-
waveform_handles_array = [session_5421.create_waveform(waveform_data), session_5421.create_waveform(waveform_data), session_5421.create_waveform(waveform_data)]
453+
waveform_handles_array = [session.create_waveform(waveform_data), session.create_waveform(waveform_data), session.create_waveform(waveform_data)]
476454
marker_location_array = [0, 16]
477455
loop_counts_array = [10, 20, 30]
478-
session_5421.output_mode = nifgen.OutputMode.SEQ
456+
session.output_mode = nifgen.OutputMode.SEQ
479457
# Test relies on value of sequence handles starting at a known value and incrementing sequentially. Hardly ideal.
480458
with pytest.raises(ValueError) as exc_info:
481-
session_5421.create_advanced_arb_sequence(waveform_handles_array, loop_counts_array=loop_counts_array, marker_location_array=marker_location_array)
459+
session.create_advanced_arb_sequence(waveform_handles_array, loop_counts_array=loop_counts_array, marker_location_array=marker_location_array)
482460
assert exc_info.value.args[0] == 'Length of marker_location_array and waveform_handles_array parameters do not match.'
483461
assert str(exc_info.value) == 'Length of marker_location_array and waveform_handles_array parameters do not match.'
484462

0 commit comments

Comments
 (0)