Online Monitor is not working
At the moment the online monitor is not working anymore. I run test_monitor.py
and it crashes with the following traceback:
(py3) silab@silab48:~/git/bdaq_new_new/bdaq53/bdaq53/tests/test_software$ python test_monitor.py
INFO:root:Initialize producer simulation mananager with configuration in tmp_cfg.yml
INFO:root:Initialize converter mananager with configuration in tmp_cfg.yml
INFO:root:Starting 2 producer simulations
INFO:root:Starting 2 converters
INFO:root:Set bidirectional communication for converter DUT0 backend
INFO:root:Set bidirectional communication for converter DUT1 backend
INFO:root:Initialize bdaq53_sim producer DAQ0 at tcp://127.0.0.1:5500
INFO:root:Start bdaq53_sim producer DAQ0 at tcp://127.0.0.1:5500
INFO:root:Initialize bdaq53_sim producer DAQ1 at tcp://127.0.0.1:5501
INFO:root:Start bdaq53_sim producer DAQ1 at tcp://127.0.0.1:5501
Exception in thread Thread-2:
Traceback (most recent call last):
File "/home/silab/miniconda2/envs/py3/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/home/silab/miniconda2/envs/py3/lib/python3.7/threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "/home/silab/git/pytlu/.eggs/online_monitor-0.4.0-py3.7.egg/online_monitor/converter/transceiver.py", line 165, in recv_data
actual_raw_data = actual_raw_data.decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 4: invalid continuation byte
Exception in thread Thread-2:
Traceback (most recent call last):
File "/home/silab/miniconda2/envs/py3/lib/python3.7/threading.py", line 917, in _bootstrap_inner
self.run()
File "/home/silab/miniconda2/envs/py3/lib/python3.7/threading.py", line 865, in run
self._target(*self._args, **self._kwargs)
File "/home/silab/git/pytlu/.eggs/online_monitor-0.4.0-py3.7.egg/online_monitor/converter/transceiver.py", line 165, in recv_data
actual_raw_data = actual_raw_data.decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 4: invalid continuation byte
Process DUT0:
Traceback (most recent call last):
File "/home/silab/miniconda2/envs/py3/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/home/silab/git/pytlu/.eggs/online_monitor-0.4.0-py3.7.egg/online_monitor/converter/transceiver.py", line 236, in run
self.send_data(data)
File "/home/silab/git/pytlu/.eggs/online_monitor-0.4.0-py3.7.egg/online_monitor/converter/transceiver.py", line 200, in send_data
serialized_data = serialized_data.encode('utf-8')
AttributeError: 'array.array' object has no attribute 'encode'
Process DUT1:
Traceback (most recent call last):
File "/home/silab/miniconda2/envs/py3/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
self.run()
File "/home/silab/git/pytlu/.eggs/online_monitor-0.4.0-py3.7.egg/online_monitor/converter/transceiver.py", line 236, in run
self.send_data(data)
File "/home/silab/git/pytlu/.eggs/online_monitor-0.4.0-py3.7.egg/online_monitor/converter/transceiver.py", line 200, in send_data
serialized_data = serialized_data.encode('utf-8')
AttributeError: 'array.array' object has no attribute 'encode'
QApplication: invalid style override passed, ignoring it.
INFO:root:Starting 2 receivers
INFO:root:Start bdaq53_recv receiver DUT0 at tcp://127.0.0.1:5600
INFO:root:Start bdaq53_recv receiver DUT1 at tcp://127.0.0.1:5601
test_data_chain (__main__.TestOnlineMonitor)
^CTraceback (most recent call last):Q1: 0.0 ... INFO: Sytem CPU: 3.1, DUT0: 0.0 , DUT1: 0.0
File "test_monitor.py", line 186, in <module>
INFO:root:CRTL-C pressed, shutting down 2 converters
unittest.TextTestRunner(verbosity=2).run(suite)
File "/home/silab/miniconda2/envs/py3/lib/python3.7/unittest/runner.py", line 176, in run
INFO:root:CRTL-C pressed, shutting down 2 producer simulations
test(result)
File "/home/silab/miniconda2/envs/py3/lib/python3.7/unittest/suite.py", line 84, in __call__
return self.run(*args, **kwds)
File "/home/silab/miniconda2/envs/py3/lib/python3.7/unittest/suite.py", line 122, in run
test(result)
File "/home/silab/miniconda2/envs/py3/lib/python3.7/unittest/case.py", line 663, in __call__
return self.run(*args, **kwds)
File "/home/silab/miniconda2/envs/py3/lib/python3.7/unittest/case.py", line 615, in run
testMethod()
File "test_monitor.py", line 143, in test_data_chain
time.sleep(5)
KeyboardInterrupt
The issue seems to be in our online_monitor package? I guess this bug came with our change from python2 to python3. I tested this online_monitor version (0.4.0) using PyTLU monitor (same implementation as bdaq monitor) and it worked with python2 but not with python3 (same error.)