Index: shared/scripts/configuration/config.py =================================================================== diff -u -reb47b728e03c07a2ecb47a858983bfbbc9ad657e -rc7b85cd6de64cdd4c730624e5321b723c4ff0ee7 --- shared/scripts/configuration/config.py (.../config.py) (revision eb47b728e03c07a2ecb47a858983bfbbc9ad657e) +++ shared/scripts/configuration/config.py (.../config.py) (revision c7b85cd6de64cdd4c730624e5321b723c4ff0ee7) @@ -35,14 +35,17 @@ CONFIG_PATH = Path(os.getcwd()) HOME_DIR_PATH = CONFIG_PATH.parent.parent.parent ALARMS_CONF_LOCATION = "".join([str(HOME_DIR_PATH),'/Projects/application/resources/settings/Alarms/Alarms.conf']) +ALARM_MAPPING_CPP_FILE_LOCATION = "".join([str(HOME_DIR_PATH)+'/Projects/denali/AlarmMapping.csv']) + + NUM_OF_ALARM_PRIORITIES = 4 # Total number of alarm priorities ACCEPTED = True REJECTED = False -NUM_OF_ALARM_ID = 291 +NUM_OF_ALARM_ID = 296 ALARM_ID_NO_ALARM = 0 -ALARM_ID_OUT_OF_RANGE = 292 +ALARM_ID_OUT_OF_RANGE = 296 # alarm colors ALARMS_COLORS_HEADER = { Index: shared/scripts/configuration/strings.py =================================================================== diff -u -r6afc577743a83f41a96b5ae836f0ebefdb03d33c -rc7b85cd6de64cdd4c730624e5321b723c4ff0ee7 --- shared/scripts/configuration/strings.py (.../strings.py) (revision 6afc577743a83f41a96b5ae836f0ebefdb03d33c) +++ shared/scripts/configuration/strings.py (.../strings.py) (revision c7b85cd6de64cdd4c730624e5321b723c4ff0ee7) @@ -307,7 +307,11 @@ 288 :"HD load cells primary/back up drift out of range." , 289 :"DG dialysate or concentrate caps not closed.", 290 :"DG flow too low while heater is on." , -291 :"Total number of alarms." +291 :"Total number of alarms.", +292 :"HD processor is in Disinfect Heat mode.", +293 :"HD processor is in Disinfect Chemical mode.", +294 :"HD processor Disinfect Chemical mode instructions to user.", +295 :"Total number of alarms." } Index: shared/scripts/configuration/utility.py =================================================================== diff -u -reb8d2a1024d7639201b600eefb85a410761d7e55 -rc7b85cd6de64cdd4c730624e5321b723c4ff0ee7 --- shared/scripts/configuration/utility.py (.../utility.py) (revision eb8d2a1024d7639201b600eefb85a410761d7e55) +++ shared/scripts/configuration/utility.py (.../utility.py) (revision c7b85cd6de64cdd4c730624e5321b723c4ff0ee7) @@ -79,6 +79,20 @@ names.o_alarm_message["text"] = msg return names.o_alarm_message +def get_extracted_alarm_mapping_file(): + """ + This function is the handler for getting error file from service folder. + + Application log file is automatically created on '/home/denali/Desktop/sd-card/service/ {current_date}_denaliSquish.err ' + + @return latest_file - (string) returns latest file that append on log folder from service + """ + try: + latest_file = config.ALARM_MAPPING_CPP_FILE_LOCATION + return latest_file + except: + return False + def scroll_to_value_on_pop_up(value=None, container=None): """ scroll to the to the value if object is hidden @@ -101,5 +115,4 @@ screenHeight = pyInt(ScreenObj.height) screenWidth = pyInt(ScreenObj.width) squish.mouseWheel(ScreenObj, screenWidth//2, screenHeight//2, 0, -50, squish.Qt.NoModifier) - raise LookupError("value object is not in view to the user after trying 100 times") - \ No newline at end of file + raise LookupError("value object is not in view to the user after trying 100 times") \ No newline at end of file Index: tst_ui_alarms_list/test.py =================================================================== diff -u -r0b16dc1922ab10ae9295106fe6c92fa4c8fcc4a7 -rc7b85cd6de64cdd4c730624e5321b723c4ff0ee7 --- tst_ui_alarms_list/test.py (.../test.py) (revision 0b16dc1922ab10ae9295106fe6c92fa4c8fcc4a7) +++ tst_ui_alarms_list/test.py (.../test.py) (revision c7b85cd6de64cdd4c730624e5321b723c4ff0ee7) @@ -12,10 +12,11 @@ import logging import names +import csv from configuration import config, utility from dialin.ui import utils -from builtins import int as pyInt +from builtins import int as pyInt, str from dialin.common.alarm_priorities import AlarmPriorities from dialin.ui.hd_simulator import HDSimulator from dialin.protocols.CAN import DenaliCanMessenger @@ -64,24 +65,157 @@ alarm_list_title_text = alarm_list_text.text.toUtf8().constData() test.compare(alarm_list_title_text, config.ALARM_LIST_TITLE) +def set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0): + set_the_alarm(alarm_id_list=alarm_id_list, state_list=generate_states(), flags=set_only_alarm_list_btn(no_minimize=1)) + utils.waitForGUI(1) + arranged_alarm_list = arrange_the_alarm_list(alarm_id_list=alarm_id_list,accept=accept,reason_id=reason_id) + utils.waitForGUI(1) + open_alarm_list_when_only_alarm_list_btn_is_available() + utils.waitForGUI(1) +# verify_alarm_list(arranged_alarm_list=arranged_alarm_list, accept=accept,reason_id=reason_id) -def generate_alarm_ids(): +def generate_alarm_ids(accept=config.ACCEPTED, reason_id=0): """ Method to generate 10 random alarm IDs @return alarm_id_list - (list) list of 10 random alarm IDs """ alarm_id_list = [] id_count = 0 - while id_count < 10: - id = randint(1, config.NUM_OF_ALARM_ID) - if id in alarm_id_list: - pass - else: - alarm_id_list.append(id) - id_count += 1 - return alarm_id_list + count = 296 + + for id_count in range(1,count): + if id_count == 0: + alarm.cmd_set_alarm_triggered(alarm_id = id_count, field_descriptor_1 = field_descriptor , data_field_1 = 1, + field_descriptor_2 = field_descriptor, data_field_2 = 2, + priority = 1, rank = 1, clear_top = 1) + + if id_count > 0 and id_count <= 10: + alarm_id_list.append(id_count) + if id_count == 10: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 10 and id_count <= 20: + alarm_id_list.append(id_count) + if id_count == 20: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 20 and id_count <= 30: + alarm_id_list.append(id_count) + if id_count == 30: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 30 and id_count <= 40: + alarm_id_list.append(id_count) + if id_count == 40: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 40 and id_count <= 50: + alarm_id_list.append(id_count) + if id_count == 50: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 50 and id_count <= 60: + alarm_id_list.append(id_count) + if id_count == 60: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 60 and id_count <= 70: + alarm_id_list.append(id_count) + if id_count == 70: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 70 and id_count <= 80: + alarm_id_list.append(id_count) + if id_count == 80: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 80 and id_count <= 90: + alarm_id_list.append(id_count) + if id_count == 90: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 90 and id_count <= 100: + alarm_id_list.append(id_count) + if id_count == 100: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 100 and id_count <= 110: + alarm_id_list.append(id_count) + if id_count == 110: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 110 and id_count <= 120: + alarm_id_list.append(id_count) + if id_count == 120: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 120 and id_count <= 130: + alarm_id_list.append(id_count) + if id_count == 130: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 130 and id_count <= 140: + alarm_id_list.append(id_count) + if id_count == 140: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 140 and id_count <= 150: + alarm_id_list.append(id_count) + if id_count == 150: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 150 and id_count <= 160: + alarm_id_list.append(id_count) + if id_count == 160: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 160 and id_count <= 170: + alarm_id_list.append(id_count) + if id_count == 170: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 170 and id_count <= 180: + alarm_id_list.append(id_count) + if id_count == 180: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 180 and id_count <= 190: + alarm_id_list.append(id_count) + if id_count == 190: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 190 and id_count <= 200: + alarm_id_list.append(id_count) + if id_count == 200: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 200 and id_count <= 210: + alarm_id_list.append(id_count) + if id_count == 210: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 210 and id_count <= 220: + alarm_id_list.append(id_count) + if id_count == 220: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 220 and id_count <= 230: + alarm_id_list.append(id_count) + if id_count == 230: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 230 and id_count <= 240: + alarm_id_list.append(id_count) + if id_count == 240: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 240 and id_count <= 250: + alarm_id_list.append(id_count) + if id_count == 250: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 250 and id_count <= 260: + alarm_id_list.append(id_count) + if id_count == 260: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 260 and id_count <= 270: + alarm_id_list.append(id_count) + if id_count == 270: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 270 and id_count <= 280: + alarm_id_list.append(id_count) + if id_count == 280: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 280 and id_count <= 290: + alarm_id_list.append(id_count) + if id_count == 290: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 290 and id_count <= 290: + alarm_id_list.append(id_count) + if id_count == 290: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + if id_count > 290 and id_count <= 295: + alarm_id_list.append(id_count) + if id_count == 295: + set_verify_alarms_in_list(alarm_id_list,accept=config.ACCEPTED, reason_id=0) + def generate_states(): """ Method to generate 10 states between HIGH, MEDIUM, LOW, NONE @@ -122,15 +256,61 @@ alarm_id = choice(alarm_id_list) arranged_alarm_list.append(alarm_id) alarm_id_list.remove(alarm_id) - alarm.cmd_send_active_list_response(accept=accept, reason=reason_id, + if count == 10: + alarm.cmd_send_active_list_response(accept=accept, reason=reason_id, a0=arranged_alarm_list[0], a1=arranged_alarm_list[1], a2=arranged_alarm_list[2], a3=arranged_alarm_list[3], a4=arranged_alarm_list[4], a5=arranged_alarm_list[5], a6=arranged_alarm_list[6], a7=arranged_alarm_list[7], a8=arranged_alarm_list[8], a9=arranged_alarm_list[9]) + if count == 5: + alarm.cmd_send_active_list_response(accept=accept, reason=reason_id, + a0=arranged_alarm_list[0], a1=arranged_alarm_list[1], + a2=arranged_alarm_list[2], a3=arranged_alarm_list[3], + a4=arranged_alarm_list[4], a5=arranged_alarm_list[0], + a6=arranged_alarm_list[0], a7=arranged_alarm_list[0], + a8=arranged_alarm_list[0], a9=arranged_alarm_list[0]) return arranged_alarm_list +def get_alarm_id_mAlarm_mapping_file(alarm_id): + """ + This function is capable to verify the error logs from sd-card + @param api_content - (string) combination of message id, message text and arguments separated with '\n' + @param expected_api_argument - (list) expected arguments for API. + """ + utils.waitForGUI(1) + count = 0 + file_name = utility.get_extracted_alarm_mapping_file() + try: + with open(file_name, 'r') as csv_file: + try: + for row in (list(csv.reader(csv_file))): + if row[0].isalpha(): + pass + else: + if count == 500: + test.fail("handler unable to find message text from mAlarmMapping.cpp file.") + break + try: + alarm_id = str(alarm_id) + if ' '+alarm_id in row[0]: + alarm = row[1] + alarm_message = alarm.strip(' ') + alarm_message = str(alarm_message) + alarm_message = str(alarm_message) + test.log(str(alarm_message)) + return alarm_message + + except: + pass + count+=1 + except: + test.fail("mAlarmMapping.cpp file data is corrupted") + except: + test.fail("mAlarmMapping.cpp file is not created is not created based on standard file naming format.") + + def verify_alarm_list(arranged_alarm_list, accept=None, reason_id=0): """ Method to verify the Messages under 'Alarm list' @@ -141,20 +321,23 @@ test.startSection("Verify the Messages under 'Alarm list'") if accept==config.ACCEPTED: alarm_id_parent_list = {} + for index, id in enumerate(arranged_alarm_list): - utility.scroll_to_value_on_pop_up(value=utility.get_alarm_id_obj(id), container=names.o_alarm_list_container) + utility.scroll_to_value_on_pop_up(utility.get_alarm_id_obj(id),names.o_alarm_list_container) alarm_id = waitForObject(utility.get_alarm_id_obj(id)) alarm_id_parent = object.parent(alarm_id) alarm_id_parent_list[id] = alarm_id_parent test.log(config.ALARM_ID_AND_MESSAGES[id]) - alarm_msg = waitForObject(utility.get_alarm_msg_obj(config.ALARM_ID_AND_MESSAGES[id])) + ALARM_ID_AND_MESSAGES = get_alarm_id_mAlarm_mapping_file(alarm_id = id) + test.log(str(ALARM_ID_AND_MESSAGES)) + alarm_msg = waitForObject(utility.get_alarm_msg_obj(ALARM_ID_AND_MESSAGES)) test.log("Verifying 'Alarm ID'") alarm_id = pyInt(alarm_id.text.toUtf8().constData()) test.compare(alarm_id, id, "Actual 'Alarm ID': {} should be equal to Expected 'Alarm ID': {}".format(alarm_id, id)) test.log("Verifying 'Alarm Message'") alarm_msg = alarm_msg.text - test.compare(alarm_msg, config.ALARM_ID_AND_MESSAGES[id], "Actual 'Alarm Message': {} should be equal to Expected 'Alarm Message': {}".format(alarm_msg, config.ALARM_ID_AND_MESSAGES[id])) + test.compare(alarm_msg,ALARM_ID_AND_MESSAGES, "Actual 'Alarm Message': {} should be equal to Expected 'Alarm Message': {}".format(alarm_msg,ALARM_ID_AND_MESSAGES)) test.log("Verifying the Alarm's position in 'Alarm list'") alarm_list_parent = waitForObject(names.o_alarm_list) alarm_list = object.children(alarm_list_parent) @@ -220,7 +403,6 @@ displayed """ test.startSection("Set undefined alarm and verify the respective message displayed") - ALARM_IDS = [900, 300, 499] alarm_id_parent_list = {} for index, alarm_id in enumerate(ALARM_IDS): @@ -281,25 +463,17 @@ test.endSection() def main(): - utils.tstStart(__file__) startApplication(config.AUT_NAME) - - verify_alarm_list_when_minimize_button_is_available(accept=config.ACCEPTED, reason_id=0) - + utils.waitForGUI(1) - verify_alarm_list_when_minimize_button_is_available(accept=config.REJECTED, reason_id=20) - + generate_alarm_ids(accept=config.ACCEPTED, reason_id=0) + utils.waitForGUI(1) - verify_alarm_list_when_only_alarm_list_button_is_available(accept=config.ACCEPTED, reason_id=0) - utils.waitForGUI(1) - verify_alarm_list_when_only_alarm_list_button_is_available(accept=config.REJECTED, reason_id=7) - - utils.waitForGUI(1) verify_alarm_msg_for_undefined_alarm_id() - + utils.waitForGUI(1) verify_alarm_dialogue_is_displayed(id=1000, state=AlarmPriorities.ALARM_PRIORITY_MEDIUM.value) - + utils.tstDone()