From 055e0f284af1a04d6d144ebde5cafeeb7de76210 Mon Sep 17 00:00:00 2001 From: Matteo Fiorentini <102953995+mfioren@users.noreply.github.com> Date: Tue, 9 Jan 2024 12:42:00 +0100 Subject: [PATCH] Updated dbesm sim and sim test with getcfg and dbeatt functions (#342) * Updated dbesm sim and sim test with getcfg and dbeatt functions * updated dbesm simulator * updated dbesm sim tests * updated dbesm tests --------- Co-authored-by: Giuseppe Carboni --- simulators/dbesm/__init__.py | 202 ++++++++++++++--- tests/test_dbesm.py | 429 ++++++++++++++++++++++++++--------- 2 files changed, 494 insertions(+), 137 deletions(-) diff --git a/simulators/dbesm/__init__.py b/simulators/dbesm/__init__.py index 68436c0..0fdf2b1 100644 --- a/simulators/dbesm/__init__.py +++ b/simulators/dbesm/__init__.py @@ -21,16 +21,20 @@ class System(ListeningSystem): 'DBE SETALLMODE': '_set_allmode', 'DBE MODE': '_set_mode', 'DBE STOREALLMODE': '_store_allmode', - 'DBE CLRMODE': '_clr_mode', + 'DBE DELETEFILE': '_delete_file', 'DBE GETSTATUS': '_get_status', 'DBE SETATT': '_set_att', 'DBE SETAMP': '_set_amp', 'DBE SETEQ': '_set_eq', 'DBE SETBPF': '_set_bpf', - 'DBE ALLDIAG': '_all_diag', - 'DBE DIAG': '_diag', + 'DBE ReadALLDIAG': '_all_diag', + 'DBE ReadDIAG': '_diag', 'DBE SETSTATUS': '_set_status', - 'DBE GETCOMP': '_getcomp', + 'DBE GETCOMP': '_get_comp', + 'DBE GETCFG': '_get_cfg', + 'DBE SETDBEATT': '_set_dbeatt', + 'DBE GETDBEATT': '_get_dbeatt', + 'DBE FIRM': '_get_firm' } errors = { @@ -48,6 +52,7 @@ class System(ListeningSystem): 1012: 'AMP X not existing', 1013: 'EQ X not existing', 1014: 'BPF X not existing', + 1015: 'Output not existing', } obs_mode = [ @@ -59,58 +64,73 @@ class System(ListeningSystem): 'MFS_7', ] + out_boards = ['0', '0', '0', '1', '1', '2', '2', '3', '3'] + out_dbe = ['1_DBBC2', 'prova', 'SARDA_01', 'prova', + 'prova2', 'Space_Debris', 'prova', 'prova2', 'SARDA_14'] + outputs = list(zip(out_boards, out_dbe)) + out_att = [11, 3, 2, 1, 8, 1, 5, 16, 7] + atts_in_boards = list(zip(out_boards, out_att)) + def __init__(self): self.msg = '' # Status -1 -> board not available self.boards = [ { - 'Address': '12', + 'Address': '3', "Status": 0, + "Configuration": "default", "REG": self._init_reg(), "ATT": self._init_att(), - "AMP": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "EQ": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "BPF": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "5V": 0.00, - "3V3": 0.00, - "T0": 00.00 + "AMP": [1, 1, 1, 1, 0, 0, 0, 0, 0, 1], + "EQ": [1, 1, 1, 1, 0, 0, 0, 0, 0, 1], + "BPF": [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1], + "5V": 1.11, + "3V3": 0.11, + "T0": 05.10, + "FIRM": "0.116_NEW_win" }, { - 'Address': '13', + 'Address': '2', "Status": 0, + "Configuration": "default", "REG": self._init_reg(), "ATT": self._init_att(), - "AMP": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "EQ": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "BPF": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "AMP": [1, 0, 0, 0, 0, 0, 1, 1, 1, 1], + "EQ": [1, 0, 0, 0, 0, 0, 1, 1, 1, 1], + "BPF": [1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1], "5V": 0.00, - "3V3": 0.00, - "T0": 00.00 + "3V3": 0.01, + "T0": 50.51, + "FIRM": "0.116_NEW_win" }, { - 'Address': '14', + 'Address': '1', "Status": 0, + "Configuration": "default", "REG": self._init_reg(), "ATT": self._init_att(), - "AMP": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "EQ": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "BPF": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "5V": 0.00, - "3V3": 0.00, - "T0": 00.00 + "AMP": [1, 0, 0, 0, 1, 0, 0, 0, 0, 1], + "EQ": [1, 0, 0, 0, 1, 0, 0, 0, 0, 1], + "BPF": [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1], + "5V": 1.00, + "3V3": 0.10, + "T0": 15.50, + "FIRM": "0.116_NEW_win" }, { - 'Address': '15', + 'Address': '0', "Status": 0, + "Configuration": "default", "REG": self._init_reg(), "ATT": self._init_att(), - "AMP": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "EQ": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "BPF": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - "5V": 0.00, - "3V3": 0.00, - "T0": 00.00 + "AMP": [0, 0, 0, 1, 1, 1, 1, 0, 0, 0], + "EQ": [0, 0, 0, 1, 1, 1, 1, 0, 0, 0], + "BPF": [0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0], + "5V": 0.01, + "3V3": 1.00, + "T0": 05.05, + "FIRM": "0.116_NEW_win" }, ] @@ -124,6 +144,7 @@ def _init_att(self): return att def parse(self, byte): + print(byte) if byte == self.tail: msg = self.msg[:-1] self.msg = '' @@ -138,6 +159,7 @@ def _execute(self, msg): :param msg: the received command, comprehensive of its header and tail. """ + print(msg) args = [x.strip() for x in msg.split(' ')] try: device_code = list(self.devices.keys())[ @@ -173,6 +195,7 @@ def _set_allmode(self, params): if key['Status'] != 0: retval += f'BOARD {key["Address"]} ERR DBE BOARD unreachable\n' else: + key["Configuration"] = params[1] retval += f'BOARD {key["Address"]} ACK\n' return retval[:-1] + '\x0D\x0A' @@ -192,6 +215,7 @@ def _set_mode(self, params): elif selected_board["Status"] != 0: return self._error(params[0], 1005, params[2]) else: + selected_board["Configuration"] = params[3] return self.ack + '\x0D\x0A' def _store_allmode(self, params): @@ -212,7 +236,7 @@ def _store_allmode(self, params): self.obs_mode.append(params[1]) return self.ack + '\x0D\x0A' - def _clr_mode(self, params): + def _delete_file(self, params): if len(params) != 2: return self._error(params[0], 1001) elif params[1] not in self.obs_mode: @@ -250,7 +274,7 @@ def _set_att(self, params): return self._error(params[0], 1007, params[3]) elif int(params[1]) not in list(range(0, 17)): return self._error(params[0], 1010, params[1]) - elif float(params[5]) not in list(numpy.arange(0, 31.5, 0.5)): + elif float(params[5]) not in list(numpy.arange(0, 32, 0.5)): return self._error(params[0], 1011, selected_board["Address"]) elif selected_board["Status"] != 0: return self._error(params[0], 1005, params[3]) @@ -391,7 +415,7 @@ def _set_status(self, params): except ValueError: return self._error(params[0], 1001) - def _getcomp(self, params): + def _get_comp(self, params): if len(params) != 3 or params[1] != 'BOARD': return self._error(params[0], 1001) try: @@ -412,6 +436,116 @@ def _getcomp(self, params): retval += f'BPF=[ {" ".join(map(str,selected_board["BPF"])) } ]' return retval + '\x0D\x0A' + def _get_cfg(self, params): + retval = '' + if len(params) != 1: + return self._error(params[0], 1001) + else: + retval += self.ack + '\n' + for board in self.boards: + retval += f'BOARD {board["Address"]} ' + if board['Status'] == 0: + retval += f'{board["Configuration"]}\n\n' + else: + retval += 'ERR DBE BOARD unreachable\n\n' + return retval[:-2] + '\x0D\x0A' + + def _set_dbeatt(self, params): + retval = '' + boardx = {} + selected_boards = [] + out_idx = [] + if len(params) != 3: + return self._error(params[0], 1001) + b, d = zip(*self.outputs) + for i, v in enumerate(d): + if v == params[1]: + out_idx.append(i) + boardx = next((sub for sub in self.boards + if int(sub['Address']) == int(b[i])), None) + selected_boards.append(boardx) + if len(selected_boards) == 0: + return self._error(params[0], 1015) + else: + brd, a = zip(*self.atts_in_boards) + for board in selected_boards: + b_idx = selected_boards.index(board) + print(brd) + print(board["ATT"]) + print(board["ATT"][a[out_idx[b_idx]]]) + if ((params[2] == '+3' or params[2] == '-3') and + not (0 <= (float(board["ATT"][a[out_idx[b_idx]]]) + + float(params[2])) <= 31.5)): + retval += (f'ERR DBE {params[1]} BOARD ' + f'{board["Address"]} value out of range\n') + elif (params[2] != '+3' and params[2] != '-3' + and float(params[2]) not in + list(numpy.arange(0, 32, 0.5))): + retval += (f'ERR DBE {params[1]} BOARD ' + f'{board["Address"]} value out of range\n') + elif board["Status"] != 0: + retval += (f'ERR DBE {params[1]} BOARD ' + f'{board["Address"]} unreachable\n') + else: + if params[2] == '+3' or params[2] == '-3': + board["ATT"][a[out_idx[b_idx]]] += float(params[2]) + else: + board["ATT"][a[out_idx[b_idx]]] = float(params[2]) + retval += f'DBE {params[1]} BOARD {board["Address"]} ACK\n' + return retval[:-1] + '\x0D\x0A' + + def _get_dbeatt(self, params): + retval = '' + boardx = {} + selected_boards = [] + out_idx = [] + if len(params) != 2: + return self._error(params[0], 1001) + b, d = zip(*self.outputs) + for i, v in enumerate(d): + if v == params[1]: + out_idx.append(i) + boardx = next((sub for sub in self.boards + if int(sub['Address']) == int(b[i])), None) + selected_boards.append(boardx) + if len(selected_boards) == 0: + return self._error(params[0], 1015) + else: + brd, a = zip(*self.atts_in_boards) + for board in selected_boards: + b_idx = selected_boards.index(board) + print(brd) + print(board["ATT"]) + print(board["ATT"][a[out_idx[b_idx]]]) + + if board["Status"] != 0: + retval += (f'ERR DBE {params[1]} BOARD ' + f'{board["Address"]} unreachable\n') + else: + retval += (f'ACK {params[1]} BOARD {board["Address"]} ' + f'ATT {a[out_idx[b_idx]]} VALUE ' + f'{board["ATT"][a[out_idx[b_idx]]]}\n') + return retval[:-1] + '\x0D\x0A' + + def _get_firm(self, params): + if len(params) != 3 or params[1] != 'BOARD': + return self._error(params[0], 1001) + try: + selected_board = next((sub for sub in self.boards + if int(sub['Address']) == int(params[2])), None) + except ValueError: + return self._error(params[0], 1001) + + if selected_board is None: + return self._error(params[0], 1007, params[2]) + elif selected_board["Status"] != 0: + return self._error(params[0], 1005, params[2]) + else: + retval = self.ack + '\n' + retval += f'BOARD {selected_board["Address"]} ' + retval += f'Prog=DBESM, Rev=rev {selected_board["FIRM"]}' + return retval + '\x0D\x0A' + def _error(self, device_code, error_code, board_address=None): error_string = self.errors.get(error_code) if error_code == 1001: diff --git a/tests/test_dbesm.py b/tests/test_dbesm.py index 4a29fa8..8ff1281 100644 --- a/tests/test_dbesm.py +++ b/tests/test_dbesm.py @@ -13,16 +13,16 @@ def _send(self, message): response = self.system.parse(message[-1]) return response - def _disable_board(self, err_board=12): + def _disable_board(self, err_board=3): disable_msg = f'DBE SETSTATUS BOARD {err_board} VALUE 1\x0D\x0A' self._send(disable_msg) - def _test_all_boards(self, response, err_board=0, diag=False): - for board in range(12, 16): + def _test_all_boards(self, response, err_board=999, diag=False): + for board in range(0, 4): if diag: if board != err_board: self.assertRegex(response, f'BOARD {board} ACK\n5V ' - '[0-9][.][0-9] 3V3 [0-9][.][0-9]\nT0 [0-9][.][0-9]') + '[0-9][.][0-9]+ 3V3 [0-9][.][0-9]+\nT0 [0-9]+[.][0-9]+') else: self.assertRegex(response, f'BOARD {board} ERR DBE ' 'BOARD unreachable') @@ -59,43 +59,43 @@ def test_nak_all_2spaces(self): print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_nak_set_2spaces(self, ch=0, board=15, val=0.0): + def test_nak_set_2spaces(self, ch=0, board=0, val=0.0): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_nak_set_3spaces(self, ch=0, board=15, val=0.0): + def test_nak_set_3spaces(self, ch=0, board=0, val=0.0): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_nak_set_space_end(self, ch=0, board=15, val=0.0): + def test_nak_set_space_end(self, ch=0, board=0, val=0.0): message = f"DBE SETATT {ch} BOARD {board} VALUE {val} \x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_nak_set_2spaces_end(self, ch=0, board=15, val=0.0): + def test_nak_set_2spaces_end(self, ch=0, board=0, val=0.0): message = f"DBE SETATT {ch} BOARD {board} VALUE {val} \x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_nak_set_3spaces_end(self, ch=0, board=15, val=0.0): + def test_nak_set_3spaces_end(self, ch=0, board=0, val=0.0): message = f"DBE SETATT {ch} BOARD {board} VALUE {val} \x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_nak_mispell1(self, ch=0, board=15, val=0.0): + def test_nak_mispell1(self, ch=0, board=0, val=0.0): message = f"DBE SETATT {ch} OARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_nak_mispell2(self, ch=0, board=15, val=0.0): + def test_nak_mispell2(self, ch=0, board=0, val=0.0): message = f"DBE SETATT {ch} BOARD {board} VALE {val}\x0D\x0A" response = self._send(message) print(response) @@ -103,20 +103,20 @@ def test_nak_mispell2(self, ch=0, board=15, val=0.0): # SETSTATUS - def test_setstatus_ok(self, board=13, val=1): + def test_setstatus_ok(self, board=2, val=1): message = f"DBE SETSTATUS BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ACK\x0D\x0A') - def test_setstatus_noBoard(self, board=0, val=1): + def test_setstatus_noBoard(self, board=999, val=1): message = f"DBE SETSTATUS BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE BOARD {board} ' 'not existing\x0D\x0A') - def test_nak_setstaus_missing(self, board=15): + def test_nak_setstaus_missing(self, board=0): message = f"DBE SETSTATUS BOARD {board} VALUE\x0D\x0A" response = self._send(message) print(response) @@ -128,51 +128,51 @@ def test_nak_setstaus_notIntBoard(self, board='BOARD', val=1): print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_nak_setstaus_notIntVal(self, board=15, val='VALUE'): + def test_nak_setstaus_notIntVal(self, board=0, val='VALUE'): message = f"DBE SETSTATUS BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') -# ALLDIAG, CLRMODE +# ReadALLDIAG, DELETEFILE def test_all_diag_ok(self): - message = "DBE ALLDIAG\x0D\x0A" + message = "DBE ReadALLDIAG\x0D\x0A" response = self._send(message) print(response) # self.assertEqual(len(response), 1) # self.assertEqual(response[0], 'ack') self._test_all_boards(response) - def test_all_diag_boardErr(self, err_board=12): - message = "DBE ALLDIAG\x0D\x0A" + def test_all_diag_boardErr(self, err_board=3): + message = "DBE ReadALLDIAG\x0D\x0A" self._disable_board(err_board) response = self._send(message) print(response) self._test_all_boards(response, err_board, True) def test_nak_alldiag(self): - message = "DBE ALLDIAG ?????\x0D\x0A" + message = "DBE ReadALLDIAG ?????\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_clrmode_ok(self, obs_mode='CustomCfg'): + def test_deletefile_ok(self, obs_mode='CustomCfg'): message1 = f"DBE STOREALLMODE {obs_mode}\x0D\x0A" self._send(message1) - message = f"DBE CLRMODE {obs_mode}\x0D\x0A" + message = f"DBE DELETEFILE {obs_mode}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ACK\x0D\x0A') - def test_clrmode_err(self, obs_mode='CustomCfg'): - message = f"DBE CLRMODE {obs_mode}\x0D\x0A" + def test_deletefile_err(self, obs_mode='CustomCfg'): + message = f"DBE DELETEFILE {obs_mode}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ERR DBE CFG file not existing\x0D\x0A') - def test_nak_clr_missing(self): - message = "DBE CLRMODE\x0D\x0A" + def test_nak_deletefile_missing(self): + message = "DBE DELETEFILE\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') @@ -185,7 +185,7 @@ def test_setallmode_ok(self, obs_mode='MFS_7'): print(response) self._test_all_boards(response) - def test_setallmode_boardErr(self, obs_mode='MFS_7', err_board=12): + def test_setallmode_boardErr(self, obs_mode='MFS_7', err_board=3): message = f"DBE SETALLMODE {obs_mode}\x0D\x0A" self._disable_board(err_board) response = self._send(message) @@ -198,7 +198,7 @@ def test_setallmode_cfgErr(self, obs_mode='PIPPO'): print(response) self.assertEqual(response, 'ERR DBE CFG file not existing\x0D\x0A') - def test_setallmode_bothErr(self, obs_mode='PIPPO', err_board=12): + def test_setallmode_bothErr(self, obs_mode='PIPPO', err_board=3): message = f"DBE SETALLMODE {obs_mode}\x0D\x0A" self._disable_board(err_board) response = self._send(message) @@ -217,7 +217,7 @@ def test_storeallmode_ok(self, obs_mode='CustomCfg'): print(response) self.assertEqual(response, 'ACK\x0D\x0A') - def test_storeallmode_boardErr(self, obs_mode='CustomCfg', err_board=12): + def test_storeallmode_boardErr(self, obs_mode='CustomCfg', err_board=3): message = f"DBE STOREALLMODE {obs_mode}\x0D\x0A" self._disable_board(err_board) response = self._send(message) @@ -226,7 +226,7 @@ def test_storeallmode_boardErr(self, obs_mode='CustomCfg', err_board=12): 'unreachable\x0D\x0A') def test_storeallmode_2boardErr(self, obs_mode='CustomCfg', - err_board1=12, err_board2=13): + err_board1=3, err_board2=2): message = f"DBE STOREALLMODE {obs_mode}\x0D\x0A" self._disable_board(err_board1) self._disable_board(err_board2) @@ -241,7 +241,7 @@ def test_storeallmode_cfgErr(self, obs_mode='MFS_7'): print(response) self.assertEqual(response, 'ERR DBE writing cfg file\x0D\x0A') - def test_storeallmode_bothErr(self, obs_mode='MFS_7', err_board=12): + def test_storeallmode_bothErr(self, obs_mode='MFS_7', err_board=3): message = f"DBE STOREALLMODE {obs_mode}\x0D\x0A" self._disable_board(err_board) response = self._send(message) @@ -254,15 +254,15 @@ def test_nak_storeall_missing(self): print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') -# MODE +# MODE, FIRM - def test_mode_ok(self, board=15, obs_mode='MFS_7'): + def test_mode_ok(self, board=0, obs_mode='MFS_7'): message = f"DBE MODE BOARD {board} {obs_mode}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ACK\x0D\x0A') - def test_mode_boardErr(self, board=15, obs_mode='MFS_7'): + def test_mode_boardErr(self, board=0, obs_mode='MFS_7'): message = f"DBE MODE BOARD {board} {obs_mode}\x0D\x0A" self._disable_board(board) response = self._send(message) @@ -270,20 +270,20 @@ def test_mode_boardErr(self, board=15, obs_mode='MFS_7'): self.assertEqual(response, f'ERR DBE BOARD {board} ' 'unreachable\x0D\x0A') - def test_mode_cfgErr(self, board=15, obs_mode='PIPPO'): + def test_mode_cfgErr(self, board=0, obs_mode='PIPPO'): message = f"DBE MODE BOARD {board} {obs_mode}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ERR DBE CFG file not existing\x0D\x0A') - def test_mode_bothErr(self, board=15, obs_mode='PIPPO'): + def test_mode_bothErr(self, board=0, obs_mode='PIPPO'): message = f"DBE MODE BOARD {board} {obs_mode}\x0D\x0A" self._disable_board(board) response = self._send(message) print(response) self.assertEqual(response, 'ERR DBE CFG file not existing\x0D\x0A') - def test_mode_noBoard(self, board=10, obs_mode='MFS_7'): + def test_mode_noBoard(self, board=999, obs_mode='MFS_7'): message = f"DBE MODE BOARD {board} {obs_mode}\x0D\x0A" response = self._send(message) print(response) @@ -302,43 +302,77 @@ def test_nak_mode_NotInt(self, obs_mode='MFS_7'): print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') + def test_firm_ok(self, board=0): + message = f"DBE FIRM BOARD {board}\x0D\x0A" + response = self._send(message) + print(response) + self.assertRegex(response, 'ACK\nBOARD [0-9]+ ' + 'Prog=DBESM, Rev=rev [0-9]+.[0-9]+_[A-Za-z]+_[A-Za-z]+\r\n') + + def test_firm_boardErr(self, board=0): + message = f"DBE FIRM BOARD {board}\x0D\x0A" + self._disable_board(board) + response = self._send(message) + print(response) + self.assertRegex(response, f'ERR DBE BOARD {board} ' + 'unreachable\x0D\x0A') + + def test_firm_noBoard(self, board=999): + message = f"DBE FIRM BOARD {board}\x0D\x0A" + response = self._send(message) + print(response) + self.assertEqual(response, f'ERR DBE BOARD {board} ' + 'not existing\x0D\x0A') + + def test_nak_firm_missing(self): + message = "DBE FIRM BOARD\x0D\x0A" + response = self._send(message) + print(response) + self.assertEqual(response, 'NAK unknown command\x0D\x0A') + + def test_nak_firm_NotInt(self): + message = "DBE FIRM BOARD BOARD\x0D\x0A" + response = self._send(message) + print(response) + self.assertEqual(response, 'NAK unknown command\x0D\x0A') + # DIAG, GETSTATUS, GETCOMP - def test_diag_ok(self, board=15): - message = f"DBE DIAG BOARD {board}\x0D\x0A" + def test_diag_ok(self, board=0): + message = f"DBE ReadDIAG BOARD {board}\x0D\x0A" response = self._send(message) print(response) - self.assertRegex(response, f'ACK\nBOARD {board}\n\n5V [0-9][.][0-9] ' - '3V3 [0-9][.][0-9]\nT0 [0-9][.][0-9]\r\n') + self.assertRegex(response, f'ACK\nBOARD {board}\n\n5V [0-9][.][0-9]+ ' + '3V3 [0-9][.][0-9]+\nT0 [0-9]+[.][0-9]+\r\n') - def test_diag_boardErr(self, board=15): - message = f"DBE DIAG BOARD {board}\x0D\x0A" + def test_diag_boardErr(self, board=0): + message = f"DBE ReadDIAG BOARD {board}\x0D\x0A" self._disable_board(board) response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE BOARD {board} ' 'unreachable\x0D\x0A') - def test_diag_noBoard(self, board=0): - message = f"DBE DIAG BOARD {board}\x0D\x0A" + def test_diag_noBoard(self, board=999): + message = f"DBE ReadDIAG BOARD {board}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE BOARD {board} ' 'not existing\x0D\x0A') def test_nak_diag_missing(self): - message = "DBE DIAG BOARD\x0D\x0A" + message = "DBE ReadDIAG BOARD\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') def test_nak_diag_NotInt(self): - message = "DBE DIAG BOARD BOARD\x0D\x0A" + message = "DBE ReadDIAG BOARD BOARD\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_getstatus_ok(self, board=15): + def test_getstatus_ok(self, board=0): message = f"DBE GETSTATUS BOARD {board}\x0D\x0A" response = self._send(message) print(response) @@ -350,7 +384,7 @@ def test_getstatus_ok(self, board=15): '[0-9]+[.][05] [0-9]+[.][05] [0-9]+[.][05] [0-9]+[.][05] ' '[0-9]+[.][05] ]\r\n') - def test_getstatus_boardErr(self, board=15): + def test_getstatus_boardErr(self, board=0): message = f"DBE GETSTATUS BOARD {board}\x0D\x0A" self._disable_board(board) response = self._send(message) @@ -358,7 +392,7 @@ def test_getstatus_boardErr(self, board=15): self.assertEqual(response, f'ERR DBE BOARD {board} ' 'unreachable\x0D\x0A') - def test_getstatus_noBoard(self, board=0): + def test_getstatus_noBoard(self, board=999): message = f"DBE GETSTATUS BOARD {board}\x0D\x0A" response = self._send(message) print(response) @@ -377,20 +411,20 @@ def test_nak_getstatus_NotInt(self): print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_getcomp_ok(self, board=15): + def test_getcomp_ok(self, board=0): message = f"DBE GETCOMP BOARD {board}\x0D\x0A" response = self._send(message) print(response) self.assertRegex(response, f'ACK\nBOARD {board}\n\nAMP') self.assertRegex(response, ' ]\r\n') - self.assertEqual(len(response[20:39].split(" ")), 10) + self.assertEqual(len(response[21:39].split(" ")), 10) self.assertEqual(len(response[20:39]), 19) - self.assertEqual(len(response[47:66].split(" ")), 10) + self.assertEqual(len(response[48:66].split(" ")), 10) self.assertEqual(len(response[47:66]), 19) - self.assertEqual(len(response[75:96].split(" ")), 11) + self.assertEqual(len(response[76:96].split(" ")), 11) self.assertEqual(len(response[75:96]), 21) - def test_getcomp_boardErr(self, board=15): + def test_getcomp_boardErr(self, board=0): message = f"DBE GETCOMP BOARD {board}\x0D\x0A" self._disable_board(board) response = self._send(message) @@ -398,7 +432,7 @@ def test_getcomp_boardErr(self, board=15): self.assertEqual(response, f'ERR DBE BOARD {board} ' 'unreachable\x0D\x0A') - def test_getcomp_noBoard(self, board=0): + def test_getcomp_noBoard(self, board=999): message = f"DBE GETCOMP BOARD {board}\x0D\x0A" response = self._send(message) print(response) @@ -419,43 +453,43 @@ def test_nak_getcomp_NotInt(self): # SETATT - def test_setatt_ok(self, ch=0, board=15, val=0.0): + def test_setatt_ok(self, ch=0, board=0, val=0.0): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ACK\x0D\x0A') - def test_setatt_ok_2(self, ch=0, board=15, val=.5): + def test_setatt_ok_2(self, ch=0, board=0, val=.5): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ACK\x0D\x0A') - def test_setatt_ok_3(self, ch=0, board=15, val=1.000): + def test_setatt_ok_3(self, ch=0, board=0, val=1.000): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ACK\x0D\x0A') - def test_setatt_ok_4(self, ch=0, board=15, val=1): + def test_setatt_ok_4(self, ch=0, board=0, val=1): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ACK\x0D\x0A') - def test_setatt_chErr1(self, ch=17, board=15, val=0.0): + def test_setatt_chErr1(self, ch=17, board=0, val=0.0): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE ATT {ch} not existing\x0D\x0A') - def test_setatt_chErr2(self, ch=0.0, board=15, val=0.0): + def test_setatt_chErr2(self, ch=0.0, board=0, val=0.0): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_setatt_boardErr(self, ch=0, board=15, val=0.0): + def test_setatt_boardErr(self, ch=0, board=0, val=0.0): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" self._disable_board(board) response = self._send(message) @@ -463,46 +497,46 @@ def test_setatt_boardErr(self, ch=0, board=15, val=0.0): self.assertEqual(response, f'ERR DBE BOARD {board} ' 'unreachable\x0D\x0A') - def test_setatt_valErr1(self, ch=0, board=15, val=0.6): + def test_setatt_valErr1(self, ch=0, board=0, val=0.6): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ERR DBE value out of range\x0D\x0A') - def test_setatt_valErr2(self, ch=0, board=15, val=32.0): + def test_setatt_valErr2(self, ch=0, board=0, val=32.0): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ERR DBE value out of range\x0D\x0A') - def test_setatt_ChValErr(self, ch=17, board=15, val=0.6): + def test_setatt_ChValErr(self, ch=17, board=0, val=0.6): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE ATT {ch} not existing\x0D\x0A') - def test_setatt_BoardValErr(self, ch=1, board=15, val=0.6): + def test_setatt_BoardValErr(self, ch=1, board=0, val=0.6): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" self._disable_board(board) response = self._send(message) print(response) self.assertEqual(response, 'ERR DBE value out of range\x0D\x0A') - def test_setatt_AllErr(self, ch=17, board=15, val=0.6): + def test_setatt_AllErr(self, ch=17, board=0, val=0.6): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" self._disable_board(board) response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE ATT {ch} not existing\x0D\x0A') - def test_setatt_noBoard(self, ch=0, board=0, val=0.0): + def test_setatt_noBoard(self, ch=0, board=999, val=0.0): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE BOARD {board} ' 'not existing\x0D\x0A') - def test_setatt_noBoard_ChValErr(self, ch=17, board=0, val=0.6): + def test_setatt_noBoard_ChValErr(self, ch=17, board=999, val=0.6): message = f"DBE SETATT {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) @@ -523,25 +557,25 @@ def test_nak_setatt_NotInt(self): # SETAMP - def test_setamp_ok(self, ch=1, board=15, val=0): + def test_setamp_ok(self, ch=1, board=0, val=0): message = f"DBE SETAMP {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ACK\x0D\x0A') - def test_setamp_chErr1(self, ch=11, board=15, val=0): + def test_setamp_chErr1(self, ch=11, board=0, val=0): message = f"DBE SETAMP {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE AMP {ch} not existing\x0D\x0A') - def test_setamp_chErr2(self, ch=1.0, board=15, val=0): + def test_setamp_chErr2(self, ch=1.0, board=0, val=0): message = f"DBE SETAMP {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_setamp_boardErr(self, ch=1, board=15, val=0): + def test_setamp_boardErr(self, ch=1, board=0, val=0): message = f"DBE SETAMP {ch} BOARD {board} VALUE {val}\x0D\x0A" self._disable_board(board) response = self._send(message) @@ -549,32 +583,32 @@ def test_setamp_boardErr(self, ch=1, board=15, val=0): self.assertEqual(response, f'ERR DBE BOARD {board} ' 'unreachable\x0D\x0A') - def test_setamp_valErr1(self, ch=1, board=15, val=0.6): + def test_setamp_valErr1(self, ch=1, board=0, val=0.6): message = f"DBE SETAMP {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ERR DBE value out of range\x0D\x0A') - def test_setamp_valErr2(self, ch=1, board=15, val=2): + def test_setamp_valErr2(self, ch=1, board=0, val=2): message = f"DBE SETAMP {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ERR DBE value out of range\x0D\x0A') - def test_setamp_ChValErr(self, ch=11, board=15, val=2): + def test_setamp_ChValErr(self, ch=11, board=0, val=2): message = f"DBE SETAMP {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE AMP {ch} not existing\x0D\x0A') - def test_setamp_AllErr(self, ch=11, board=15, val=2): + def test_setamp_AllErr(self, ch=11, board=0, val=2): message = f"DBE SETAMP {ch} BOARD {board} VALUE {val}\x0D\x0A" self._disable_board(board) response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE AMP {ch} not existing\x0D\x0A') - def test_setamp_noBoard(self, ch=0, board=0, val=0): + def test_setamp_noBoard(self, ch=0, board=999, val=0): message = f"DBE SETAMP {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) @@ -595,25 +629,25 @@ def test_nak_setamp_NotInt(self): # SETEQ - def test_seteq_ok(self, ch=1, board=15, val=0): + def test_seteq_ok(self, ch=1, board=0, val=0): message = f"DBE SETEQ {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ACK\x0D\x0A') - def test_seteq_chErr1(self, ch=11, board=15, val=0): + def test_seteq_chErr1(self, ch=11, board=0, val=0): message = f"DBE SETEQ {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE EQ {ch} not existing\x0D\x0A') - def test_seteq_chErr2(self, ch=1.0, board=15, val=0): + def test_seteq_chErr2(self, ch=1.0, board=0, val=0): message = f"DBE SETEQ {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_seteq_boardErr(self, ch=1, board=15, val=0): + def test_seteq_boardErr(self, ch=1, board=0, val=0): message = f"DBE SETEQ {ch} BOARD {board} VALUE {val}\x0D\x0A" self._disable_board(board) response = self._send(message) @@ -621,32 +655,32 @@ def test_seteq_boardErr(self, ch=1, board=15, val=0): self.assertEqual(response, f'ERR DBE BOARD {board} ' 'unreachable\x0D\x0A') - def test_seteq_valErr1(self, ch=1, board=15, val=0.6): + def test_seteq_valErr1(self, ch=1, board=0, val=0.6): message = f"DBE SETEQ {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ERR DBE value out of range\x0D\x0A') - def test_seteq_valErr2(self, ch=1, board=15, val=2): + def test_seteq_valErr2(self, ch=1, board=0, val=2): message = f"DBE SETEQ {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ERR DBE value out of range\x0D\x0A') - def test_seteq_ChValErr(self, ch=11, board=15, val=2): + def test_seteq_ChValErr(self, ch=11, board=0, val=2): message = f"DBE SETEQ {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE EQ {ch} not existing\x0D\x0A') - def test_seteq_AllErr(self, ch=11, board=15, val=2): + def test_seteq_AllErr(self, ch=11, board=0, val=2): message = f"DBE SETEQ {ch} BOARD {board} VALUE {val}\x0D\x0A" self._disable_board(board) response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE EQ {ch} not existing\x0D\x0A') - def test_seteq_noBoard(self, ch=0, board=0, val=0): + def test_seteq_noBoard(self, ch=0, board=999, val=0): message = f"DBE SETEQ {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) @@ -667,61 +701,61 @@ def test_nak_seteq_NotInt(self): # SETBPF - def test_setbpf_ok_1a(self, ch='1a', board=15, val=0): + def test_setbpf_ok_1a(self, ch='1a', board=0, val=0): message = f"DBE SETBPF {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ACK\x0D\x0A') - def test_setbpf_ok_1b(self, ch='1b', board=15, val=0): + def test_setbpf_ok_1b(self, ch='1b', board=0, val=0): message = f"DBE SETBPF {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ACK\x0D\x0A') - def test_setbpf_ok_2(self, ch='2', board=15, val=0): + def test_setbpf_ok_2(self, ch='2', board=0, val=0): message = f"DBE SETBPF {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ACK\x0D\x0A') - def test_setbpf_chErr1(self, ch=11, board=15, val=0): + def test_setbpf_chErr1(self, ch=11, board=0, val=0): message = f"DBE SETBPF {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE BPF {ch} not existing\x0D\x0A') - def test_setbpf_chErr2(self, ch='111a', board=15, val=0): + def test_setbpf_chErr2(self, ch='111a', board=0, val=0): message = f"DBE SETBPF {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE BPF {ch} not existing\x0D\x0A') - def test_setbpf_chErr3(self, ch='1a2', board=15, val=0): + def test_setbpf_chErr3(self, ch='1a2', board=0, val=0): message = f"DBE SETBPF {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_setbpf_chErr4(self, ch='a1', board=15, val=0): + def test_setbpf_chErr4(self, ch='a1', board=0, val=0): message = f"DBE SETBPF {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_setbpf_chErr5(self, ch='1aa', board=15, val=0): + def test_setbpf_chErr5(self, ch='1aa', board=0, val=0): message = f"DBE SETBPF {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_setbpf_chErr6(self, ch='a', board=15, val=0): + def test_setbpf_chErr6(self, ch='a', board=0, val=0): message = f"DBE SETBPF {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') - def test_setbpf_boardErr(self, ch='1a', board=15, val=0): + def test_setbpf_boardErr(self, ch='1a', board=0, val=0): message = f"DBE SETBPF {ch} BOARD {board} VALUE {val}\x0D\x0A" self._disable_board(board) response = self._send(message) @@ -729,32 +763,32 @@ def test_setbpf_boardErr(self, ch='1a', board=15, val=0): self.assertEqual(response, f'ERR DBE BOARD {board} ' 'unreachable\x0D\x0A') - def test_setbpf_valErr1(self, ch='1a', board=15, val=0.6): + def test_setbpf_valErr1(self, ch='1a', board=0, val=0.6): message = f"DBE SETBPF {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ERR DBE value out of range\x0D\x0A') - def test_setbpf_valErr2(self, ch='1a', board=15, val=2): + def test_setbpf_valErr2(self, ch='1a', board=0, val=2): message = f"DBE SETBPF {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, 'ERR DBE value out of range\x0D\x0A') - def test_setbpf_ChValErr(self, ch=11, board=15, val=2): + def test_setbpf_ChValErr(self, ch=11, board=0, val=2): message = f"DBE SETBPF {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE BPF {ch} not existing\x0D\x0A') - def test_setbpf_AllErr(self, ch=11, board=15, val=2): + def test_setbpf_AllErr(self, ch=11, board=0, val=2): message = f"DBE SETBPF {ch} BOARD {board} VALUE {val}\x0D\x0A" self._disable_board(board) response = self._send(message) print(response) self.assertEqual(response, f'ERR DBE BPF {ch} not existing\x0D\x0A') - def test_setbpf_noBoard(self, ch=0, board=0, val=0): + def test_setbpf_noBoard(self, ch=0, board=999, val=0): message = f"DBE SETBPF {ch} BOARD {board} VALUE {val}\x0D\x0A" response = self._send(message) print(response) @@ -773,6 +807,195 @@ def test_nak_setbpf_NotInt(self): print(response) self.assertEqual(response, 'NAK unknown command\x0D\x0A') +# GETCFG, SETDBEATT + + def test_getcfg_ok(self): + message = "DBE GETCFG\x0D\x0A" + response = self._send(message) + print(response) + self.assertRegex(response, 'ACK\nBOARD [0-9]+') + self.assertRegex(response, '\n\nBOARD [0-9]+') + self.assertRegex(response, '\n\nBOARD [0-9]+') + self.assertRegex(response, '\n\nBOARD [0-9]+') + self.assertRegex(response, '\r\n') + + def test_getcfg_boardErr(self, err_board=3): + self._disable_board(err_board) + message = "DBE GETCFG\x0D\x0A" + response = self._send(message) + print(response) + self.assertRegex(response, f'\nBOARD {err_board} ' + 'ERR DBE BOARD unreachable') + + def test_nak_getcfg_plus(self): + message = "DBE GETCFG BOARD 0\x0D\x0A" + response = self._send(message) + print(response) + self.assertEqual(response, 'NAK unknown command\x0D\x0A') + + def test_setdbeatt_single(self, out_dbe='1_DBBC2'): + message = f"DBE SETDBEATT {out_dbe} 1.0\x0D\x0A" + response = self._send(message) + print(response) + self.assertRegex(response, f'DBE {out_dbe} BOARD [0-9]+ ACK\r\n') + + def test_setdbeatt_single_plus3_ok(self, out_dbe='1_DBBC2'): + message1 = f"DBE SETDBEATT {out_dbe} 1.0\x0D\x0A" + self._send(message1) + message2 = f"DBE SETDBEATT {out_dbe} +3\x0D\x0A" + response = self._send(message2) + print(response) + self.assertRegex(response, f'DBE {out_dbe} BOARD [0-9]+ ACK\r\n') + + def test_setdbeatt_single_plus3_err(self, out_dbe='1_DBBC2'): + message1 = f"DBE SETDBEATT {out_dbe} 31.0\x0D\x0A" + self._send(message1) + message2 = f"DBE SETDBEATT {out_dbe} +3\x0D\x0A" + response = self._send(message2) + print(response) + self.assertRegex(response, f'ERR DBE {out_dbe} BOARD ' + '[0-9]+ value out of range\r\n') + + def test_setdbeatt_single_minus3_ok(self, out_dbe='1_DBBC2'): + message1 = f"DBE SETDBEATT {out_dbe} 4.0\x0D\x0A" + self._send(message1) + message2 = f"DBE SETDBEATT {out_dbe} -3\x0D\x0A" + response = self._send(message2) + print(response) + self.assertRegex(response, f'DBE {out_dbe} BOARD [0-9]+ ACK\r\n') + + def test_setdbeatt_single_minus3_err(self, out_dbe='1_DBBC2'): + message1 = f"DBE SETDBEATT {out_dbe} 1.0\x0D\x0A" + self._send(message1) + message2 = f"DBE SETDBEATT {out_dbe} -3\x0D\x0A" + response = self._send(message2) + print(response) + self.assertRegex(response, f'ERR DBE {out_dbe} BOARD ' + '[0-9]+ value out of range\r\n') + + def test_setdbeatt_mult(self, out_dbe='prova'): + message = f"DBE SETDBEATT {out_dbe} 1.0\x0D\x0A" + response = self._send(message) + print(response) + self.assertRegex(response, f'DBE {out_dbe} BOARD [0-9]+ ACK\r\n') + self.assertRegex(response, f'DBE {out_dbe} BOARD [0-9]+ ACK\r\n') + + def test_setdbeatt_mult_minus3(self, out_dbe='prova'): + message1 = f"DBE SETDBEATT {out_dbe} 4.0\x0D\x0A" + self._send(message1) + message2 = f"DBE SETDBEATT {out_dbe} -3\x0D\x0A" + response = self._send(message2) + print(response) + self.assertRegex(response, f'DBE {out_dbe} BOARD [0-9]+ ACK\r\n') + self.assertRegex(response, f'DBE {out_dbe} BOARD [0-9]+ ACK\r\n') + + def test_setdbeatt_mult_minus3_err(self, out_dbe='prova'): + message1 = f"DBE SETDBEATT {out_dbe} 1.0\x0D\x0A" + self._send(message1) + message2 = f"DBE SETDBEATT {out_dbe} -3\x0D\x0A" + response = self._send(message2) + print(response) + self.assertRegex(response, f'DBE {out_dbe} BOARD ' + '[0-9]+ value out of range\r\n') + self.assertRegex(response, f'DBE {out_dbe} BOARD ' + '[0-9]+ value out of range\r\n') + + def test_setdbeatt_single_ValErr(self, out_dbe='1_DBBC2'): + message = f"DBE SETDBEATT {out_dbe} 32\x0D\x0A" + response = self._send(message) + print(response) + self.assertRegex(response, f'ERR DBE {out_dbe} BOARD ' + '[0-9]+ value out of range\r\n') + + def test_setdbeatt_mult_ValErr(self, out_dbe='prova'): + message = f"DBE SETDBEATT {out_dbe} 32\x0D\x0A" + response = self._send(message) + print(response) + self.assertRegex(response, f'ERR DBE {out_dbe} BOARD ' + '[0-9]+ value out of range\r\n') + self.assertRegex(response, f'ERR DBE {out_dbe} BOARD ' + '[0-9]+ value out of range\r\n') + + def test_setdbeatt_boardErr(self, out_dbe='SARDA_14', err_board=3): + self._disable_board(err_board) + message = f"DBE SETDBEATT {out_dbe} 1.0\x0D\x0A" + response = self._send(message) + print(response) + self.assertRegex(response, f'ERR DBE {out_dbe} BOARD {err_board}' + ' unreachable\r\n') + + def test_setdbeatt_outErr(self, out_dbe='NOTHING'): + message = f"DBE SETDBEATT {out_dbe} 1.0\x0D\x0A" + response = self._send(message) + print(response) + self.assertEqual(response, 'ERR DBE Output not existing\r\n') + + def test_setdbeatt_boardOutErr(self, out_dbe='NOTHING', err_board=3): + self._disable_board(err_board) + message = f"DBE SETDBEATT {out_dbe} 1.0\x0D\x0A" + response = self._send(message) + print(response) + self.assertEqual(response, 'ERR DBE Output not existing\r\n') + + def test_setdbeatt_boardValErr(self, out_dbe='SARDA_14', err_board=3): + self._disable_board(err_board) + message = f"DBE SETDBEATT {out_dbe} 32\x0D\x0A" + response = self._send(message) + print(response) + self.assertRegex(response, f'ERR DBE {out_dbe} BOARD {err_board}' + ' value out of range\r\n') + + def test_nak_setdbeatt(self, out_dbe='1_DBBC2'): + message = f"DBE SETDBEATT {out_dbe}\x0D\x0A" + response = self._send(message) + print(response) + self.assertEqual(response, 'NAK unknown command\x0D\x0A') + +# GETDBEATT, FIRM + + def test_getdbeatt_single(self, out_dbe='1_DBBC2'): + message = f"DBE GETDBEATT {out_dbe}\x0D\x0A" + response = self._send(message) + print(response) + self.assertRegex(response, f'ACK {out_dbe} BOARD [0-9]+ ' + 'ATT [0-9]+ VALUE [0-9]+.[0-9]+\r\n') + + def test_getdbeatt_mult(self, out_dbe='prova'): + message = f"DBE GETDBEATT {out_dbe}\x0D\x0A" + response = self._send(message) + print(response) + self.assertRegex(response, f'ACK {out_dbe} BOARD [0-9]+ ' + 'ATT [0-9]+ VALUE [0-9]+.[0-9]+\r\n') + self.assertRegex(response, f'ACK {out_dbe} BOARD [0-9]+ ' + 'ATT [0-9]+ VALUE [0-9]+.[0-9]+\r\n') + + def test_getdbeatt_boardErr(self, out_dbe='SARDA_14', err_board=3): + self._disable_board(err_board) + message = f"DBE GETDBEATT {out_dbe}\x0D\x0A" + response = self._send(message) + print(response) + self.assertRegex(response, f'ERR DBE {out_dbe} BOARD {err_board}' + ' unreachable\r\n') + + def test_getdbeatt_outErr(self, out_dbe='NOTHING'): + message = f"DBE GETDBEATT {out_dbe}\x0D\x0A" + response = self._send(message) + print(response) + self.assertEqual(response, 'ERR DBE Output not existing\r\n') + + def test_getdbeatt_boardOutErr(self, out_dbe='NOTHING', err_board=3): + self._disable_board(err_board) + message = f"DBE GETDBEATT {out_dbe}\x0D\x0A" + response = self._send(message) + print(response) + self.assertEqual(response, 'ERR DBE Output not existing\r\n') + + def test_nak_getdbeatt(self): + message = "DBE GETDBEATT\x0D\x0A" + response = self._send(message) + print(response) + self.assertEqual(response, 'NAK unknown command\x0D\x0A') + if __name__ == '__main__': unittest.main()