Index: shared/scripts/configuration/config.py =================================================================== diff -u -r7f5d92792f49814d405ae6266af82b19cd999d4b -r8ad5f306455a57670d4ab09c409c3d2941194e46 --- shared/scripts/configuration/config.py (.../config.py) (revision 7f5d92792f49814d405ae6266af82b19cd999d4b) +++ shared/scripts/configuration/config.py (.../config.py) (revision 8ad5f306455a57670d4ab09c409c3d2941194e46) @@ -88,4 +88,4 @@ "rinseback_flow_rate" : [50, 25, 187], } - +CLOUD_SYNC_INP__BUF_LOCATION = '/home/denali/Desktop/sd-card/cloudsync/*.buf' Index: shared/scripts/configuration/utility.py =================================================================== diff -u -r443e626c9bedcb9ab7b81e57cbb71a93513d45d4 -r8ad5f306455a57670d4ab09c409c3d2941194e46 --- shared/scripts/configuration/utility.py (.../utility.py) (revision 443e626c9bedcb9ab7b81e57cbb71a93513d45d4) +++ shared/scripts/configuration/utility.py (.../utility.py) (revision 8ad5f306455a57670d4ab09c409c3d2941194e46) @@ -20,325 +20,20 @@ from configuration import config from builtins import int as pyInt -def check_if_object_is_within_the_container(obj=None, container=None): +def get_extracted_file_inp_buf(): """ - check if an object is inside a container - @param obj - child UI object - @param container - container UI object - @return boolean - """ - container = squish.findObject(container) - containerPos = container.mapToGlobal(squish.QPoint(0, 0)) - container_x, container_y = pyInt(containerPos.x), pyInt(containerPos.y) - container_width, container_height = pyInt(container.width), pyInt(container.height) + This function is the handler for getting file from cloudsync folder. - obj = squish.findObject(obj) - objPos = obj.mapToGlobal(squish.QPoint(0, 0)) - obj_x, obj_y = pyInt(objPos.x), pyInt(objPos.y) - obj_width, obj_height = pyInt(obj.width), pyInt(obj.height) + This handler will go inside cloudsync folder and looks for newly added input buf file based on current time. + If it is satisfying that condition, it will return the exact path of newly created input buf file. - if obj_x >= container_x and obj_y >= container_y: - if (obj_x + obj_width) <= (container_x + container_width) and (obj_y + obj_height) <= (container_y + container_height): - return True - - return False - - -def scroll_to_zone(zone=None, screen_object=None, direction = None): + @return latest_file - (string) returns latest file that append on log folder from sd-data """ - scroll to the UI, if object is hidden - @param zone - object to be find out. - @param screen_object - object of the screen. - @return boolean - """ - counter = 0 - while counter <= 100: - try: - counter += 1 - squish.findObject(zone) - squish.snooze(0.5) - if check_if_object_is_within_the_container(obj=zone, container=screen_object): - return True - else: - raise RuntimeError - except RuntimeError: - ScreenObj = squish.findObject(screen_object) - screenHeight = pyInt(ScreenObj.height) - screenWidth = pyInt(ScreenObj.width) - if direction is None: - squish.mouseWheel(ScreenObj, (screenWidth-100), - 107, 0, -(screenHeight-460), squish.Qt.NoModifier) - else: - squish.mouseWheel(ScreenObj, (screenWidth-100), - -(screenHeight-700), 0, 200, squish.Qt.NoModifier) - - raise LookupError("zone object is not in view to the user after " + \ - "trying 100 times") - - -def verify_page_step_indicator(screen_obj, pre_treatment_step): - """ - Method to verify the Page Step indicators [the object on top of the screen which indicates the steps passed, current, remained] - @param pre_treatment_step : indicates the Current pre-treatment step - """ - test.startSection("verification of page step indicators") - for page in range(len(config.PRE_TREATMENT_SCREENS)): - bullet_children = object.children(squish.waitForObjectExists(get_bullet_object(screen_obj, page))) - bullet_circle_color = bullet_children[0].color.name - bullet_border_color = bullet_children[0].border.color.name - step_title = squish.waitForObjectExists(get_text_object(screen_obj, config.PRE_TREATMENT_SCREENS[page])) - - if page < pre_treatment_step: - test.log("To verify the step indicator of the completed pre-treatment screen " + config.PRE_TREATMENT_SCREENS[page]) - test.verify(squish.waitForObjectExists(get_bullet_object(screen_obj, page)).complete) - test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).current) - test.compare(bullet_circle_color, config.COMPLETE_COLOR, " the bullet color must be " + str(config.COMPLETE_COLOR)) - test.compare(bullet_border_color, config.COMPLETE_COLOR," the bullet border color must be " + str(config.COMPLETE_COLOR)) - test.compare(step_title.color.name, config.ENABLED_COLOR, " the text color must be " + str(config.ENABLED_COLOR)) - - elif page == pre_treatment_step: - test.log("To verify the step indicators of the current pre-treatment screen " + config.PRE_TREATMENT_SCREENS[page]) - test.verify(squish.waitForObjectExists(get_bullet_object(screen_obj, page)).current) - test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).complete) - test.compare(bullet_circle_color,config.CURRENT_COLOR," the bullet color must be " + str(config.CURRENT_COLOR)) - test.compare(bullet_border_color,config.COMPLETE_COLOR, " the bullet border color must be " + str(config.COMPLETE_COLOR)) - test.compare(step_title.color.name,config.ENABLED_COLOR, " the text color must be " + str(config.ENABLED_COLOR)) - test.verify(step_title.font.bold, " the current text must be in bold") - - else: - test.log("To verify the step indicators of the remaining pre-treatment screen " + config.PRE_TREATMENT_SCREENS[page]) - test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).current,) - test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).complete,) - test.compare(step_title.color.name,config.INCOMPLETE_COLOR, " the text color must be " + str(config.INCOMPLETE_COLOR)) - test.compare(bullet_circle_color,config.CURRENT_COLOR," the bullet color must be " + str(config.CURRENT_COLOR)) - test.compare(bullet_border_color,config.INCOMPLETE_COLOR, " the bullet border color must be " + str(config.INCOMPLETE_COLOR)) - test.endSection() - - -def set_arterial_ranges_min_val(art_low): - """ - Method to set the Arterial range maximum value to user expected value - @param art_low - (int) user expected value - """ - test.startSection("Set Arterial range minimum value to {}".format(art_low)) - arterial_min = squish.waitForObjectExists(names.o_PreTreatmentCreate_rangeRect_RangeRect_Artery) - arterial_min = pyInt(arterial_min.minimum) - arterial_max = squish.waitForObjectExists(names.o_PreTreatmentCreate_rangeRect_RangeRect_Artery) - arterial_max = pyInt(arterial_max.maximum) - low_handler_parent = object.parent(squish.waitForObjectExists(names.o_PreTreatmentCreate_rangeRect_RangeRect_Artery)) - low_handler_children = object.children(low_handler_parent) - low_handler = low_handler_children[-2] - width = pyInt(low_handler.width) - 8 - height = pyInt(low_handler.height)- 10 - if arterial_min == art_low: - test.passes("Arterial range minimum is already set to {}".format(art_low)) - elif arterial_min < art_low: - while arterial_min != art_low: - squish.mouseDrag(low_handler, width, height, 1, 0, squish.Qt.NoModifier, squish.Qt.LeftButton) - arterial_min += 10 - # arterial blood pressure low limit should be lower than the high limit by at least 30mmHg - if arterial_min == arterial_max - config.BUFFER_LOW_AND_HIGH_LIMITS: - squish.mouseDrag(low_handler, width, height, 1, 0, - squish.Qt.NoModifier, squish.Qt.LeftButton) - test.log("Arterial range minimum value cannot be moved beyond {}".format(arterial_min)) - break - else: - continue - elif arterial_min > art_low: - while arterial_min != art_low: - squish.mouseDrag(low_handler, width, height, -1, 0, squish.Qt.NoModifier, squish.Qt.LeftButton) - arterial_min -= 10 - # arterial blood pressure low limit should be lower than the high limit by at least 30mmHg - if arterial_min == arterial_max - config.BUFFER_LOW_AND_HIGH_LIMITS: - squish.mouseDrag(low_handler, width, height, -1, 0, - squish.Qt.NoModifier, squish.Qt.LeftButton) - test.log("Arterial range minimum value cannot be moved beyond {}".format(arterial_min)) - break - else: - continue - # arterial blood pressure low limit should be lower than the high limit by atleast 30mmHg - if arterial_min == arterial_max - config.BUFFER_LOW_AND_HIGH_LIMITS: - test.compare(low_handler_parent.minValue, arterial_min, "Arterial range minimum value cannot be moved beyond {}".format(arterial_min)) - else: - test.compare(arterial_min, art_low, "Actual Arterial range minimum value: {} is equal to Expected value: {}".format(arterial_min, art_low)) - test.endSection() - - -def set_arterial_ranges_max_val(art_high): - """ - Method to set the Arterial range maximum value to user expected value - @param art_high - (int) user expected value - """ - test.startSection("Set Arterial range maximum value to {}".format(art_high)) - arterial_max = squish.waitForObjectExists(names.o_PreTreatmentCreate_rangeRect_RangeRect_Artery) - arterial_max = pyInt(arterial_max.maximum) - arterial_min = squish.waitForObjectExists(names.o_PreTreatmentCreate_rangeRect_RangeRect_Artery) - arterial_min = pyInt(arterial_min.minimum) - high_handler_parent = object.parent(squish.waitForObjectExists(names.o_PreTreatmentCreate_rangeRect_RangeRect_Artery)) - high_handler_children = object.children(high_handler_parent) - high_handler = high_handler_children[-1] - width = pyInt(high_handler.width) - 20 - height = pyInt(high_handler.height) - 25 - if arterial_max == art_high: - test.passes("Arterial range maximum is already set to {}".format(art_high)) - elif arterial_max < art_high: - while arterial_max != art_high: - squish.mouseDrag(high_handler, -1, height, width, 0, squish.Qt.NoModifier, squish.Qt.LeftButton) - arterial_max += 10 - # arterial blood pressure low limit should be lower than the high limit by at least 30mmHg - if arterial_max == arterial_min + config.BUFFER_LOW_AND_HIGH_LIMITS: - squish.mouseDrag(high_handler, width, height, 1, 0, - squish.Qt.NoModifier, squish.Qt.LeftButton) - test.log("Arterial range maximum value cannot be moved beyond {}".format(arterial_max)) - break - else: - continue - elif arterial_max > art_high: - while arterial_max != art_high: - squish.mouseDrag(high_handler, width, height, -1, 0, - squish.Qt.NoModifier, squish.Qt.LeftButton) - arterial_max -= 10 - # arterial blood pressure low limit should be lower than the high limit by at least 30mmHg - if arterial_max == arterial_min + config.BUFFER_LOW_AND_HIGH_LIMITS: - squish.mouseDrag(high_handler, width, height, -1, 0, - squish.Qt.NoModifier, squish.Qt.LeftButton) - test.log("Arterial range maximum value cannot be moved beyond {}".format(arterial_max)) - break - else: - continue - # arterial blood pressure low limit should be lower than the high limit by at least 30mmHg - if arterial_max == arterial_min + config.BUFFER_LOW_AND_HIGH_LIMITS: - test.compare(high_handler_parent.maxValue, arterial_max, - "Arterial range maximum value cannot be moved beyond {}".format(arterial_max)) - else: - test.compare(arterial_max, art_high, - "Actual Arterial range maximum value: {} is equal to Expected value: {}".format(arterial_max, art_high)) - test.endSection() - - - -def set_venous_ranges_max_val(ven_high): - """ - Method to set the Venous range maximum value to user expected value - @param ven_high - (int) user expected value - """ - test.startSection("Set Venous range maximum value to {}".format(ven_high)) - ven_max = squish.waitForObjectExists(names.o_PreTreatmentCreate_rangeRect_RangeRect_Venous) - ven_max = pyInt(ven_max.maximum) - ven_min = squish.waitForObjectExists(names.o_PreTreatmentCreate_rangeRect_RangeRect_Venous) - ven_min = pyInt(ven_min.minimum) - high_handler_parent = object.parent(squish.waitForObjectExists(names.o_PreTreatmentCreate_rangeRect_RangeRect_Venous)) - high_handler_children = object.children(high_handler_parent) - high_handler = high_handler_children[-1] - width = pyInt(high_handler.width) - 15 - height = pyInt(high_handler.height) - 10 - if ven_max == ven_high: - test.passes("Venous range maximum is already set to {}".format(ven_high)) - elif ven_max < ven_high: - while ven_max != ven_high: - squish.mouseDrag(high_handler, width, height, 1, 0, - squish.Qt.NoModifier, squish.Qt.LeftButton) - ven_max += 10 - # venous blood pressure low limit should be lower than the high limit by at least 30mmHg - if ven_max == ven_min + config.BUFFER_LOW_AND_HIGH_LIMITS: - squish.mouseDrag(high_handler, width, height, 1, 0, - squish.Qt.NoModifier, squish.Qt.LeftButton) - test.log("Venous range maximum value cannot be moved beyond {}".format(ven_max)) - break - else: - continue - elif ven_max > ven_high: - while ven_max != ven_high: - squish.mouseDrag(high_handler, width, height, -1, 0, - squish.Qt.NoModifier, squish.Qt.LeftButton) - ven_max -= 10 - # venous blood pressure low limit should be lower than the high limit by at least 30mmHg - if ven_max == ven_min + config.BUFFER_LOW_AND_HIGH_LIMITS: - squish.mouseDrag(high_handler, width, height, -1, 0, - squish.Qt.NoModifier, squish.Qt.LeftButton) - test.log("Venous range maximum value cannot be moved beyond {}".format(ven_max)) - break - else: - continue - # venous blood pressure low limit should be lower than the high limit by at least 30mmHg - if ven_max == ven_min + config.BUFFER_LOW_AND_HIGH_LIMITS: - test.compare(high_handler_parent.maxValue, ven_max, "Venous range maximum value cannot be moved beyond {}".format(ven_max)) - else: - test.compare(ven_max, ven_high, "Actual Venous range maximum value: {} is equal to Expected value: {}".format(ven_max, ven_high)) - test.endSection() - -#Methods for create custom treatment -def set_venous_ranges_min_val(ven_low): - """ - Method to set the Venous range maximum value to user expected value - @param ven_low - (int) user expected value - """ - test.startSection("set Venous range minimum value to {}".format(ven_low)) - ven_min = squish.waitForObjectExists(names.o_PreTreatmentCreate_rangeRect_RangeRect_Venous) - ven_min = pyInt(ven_min.minimum) - ven_max = squish.waitForObjectExists(names.o_PreTreatmentCreate_rangeRect_RangeRect_Venous) - ven_max = pyInt(ven_max.maximum) - low_handler_parent = object.parent(squish.waitForObjectExists(names.o_PreTreatmentCreate_rangeRect_RangeRect_Venous)) - low_handler_children = object.children(low_handler_parent) - low_handler = low_handler_children[-2] - width = pyInt(low_handler.width) - 15 - height = pyInt(low_handler.height) - 10 - if ven_min == ven_low: - test.passes("Venous range minimum is already set to {}".format(ven_low)) - elif ven_min < ven_low: - while ven_min != ven_low: - squish.mouseDrag(low_handler, width, height, 1, 0, - squish.Qt.NoModifier, squish.Qt.LeftButton) - ven_min += 10 - if ven_min == ven_max - config.BUFFER_LOW_AND_HIGH_LIMITS: # venous blood pressure low limit should be lower than the high limit by at least 30mmHg - squish.mouseDrag(low_handler, width, height, 1, 0, - squish.Qt.NoModifier, squish.Qt.LeftButton) - test.log("Venous range minimum value cannot be moved beyond {}".format(ven_min)) - break - else: - continue - elif ven_min > ven_low: - while ven_min != ven_low: - squish.mouseDrag(low_handler, width, height, -1, 0, - squish.Qt.NoModifier, squish.Qt.LeftButton) - ven_min -= 10 - # venous blood pressure low limit should be lower than the high limit by at least 30mmHg - if ven_min == ven_max - config.BUFFER_LOW_AND_HIGH_LIMITS: - squish.mouseDrag(low_handler, width, height, -1, 0, - squish.Qt.NoModifier, squish.Qt.LeftButton) - test.log("Venous range minimum value cannot be moved beyond {}".format(ven_min)) - break - else: - continue - # venous blood pressure low limit should be lower than the high limit by at least 30mmHg - if ven_min == ven_max - config.BUFFER_LOW_AND_HIGH_LIMITS: - test.compare(low_handler_parent.minValue, ven_min, - "Venous range minimum value cannot be moved beyond {}".format(ven_min)) - else: - test.compare(ven_min, ven_low, - "Actual Venous range minimum value: {} is equal to Expected value: {}".format(ven_min, ven_low)) - test.endSection() - - -def get_text_object(screen_obj, txt): - """ - To obtain a text object based on text provided - @param screen_obj: provides the container on which the txt must be present - @returns a real name object - """ - names.o_text_object["container"] = screen_obj - names.o_text_object["text"] = txt - return names.o_text_object - - -def get_bullet_object(screen_obj, num): - """ - To obtain a bullet object based on occurrence provided. - @param screen_obj: provides the container on which the bullet must be present - @param num: provides the occurrence value - @returns a real name object - """ - names.o_bullet_object["container"] = screen_obj - names.o_bullet_object["occurrence"] = num + 1 - return names.o_bullet_object - + try: + list_of_files = glob.glob(config.CLOUD_SYNC_INP__BUF_LOCATION) + latest_file = max(list_of_files, key=os.path.getctime) + test.log(str(latest_file)) + return str(latest_file) + except: + test.fail("input buf file is not created during application interaction") + return False Index: tst_cloud_sync_hd_opmode/test.py =================================================================== diff -u -r2d54b879d634338369136c10ce390211e8a6d713 -r8ad5f306455a57670d4ab09c409c3d2941194e46 --- tst_cloud_sync_hd_opmode/test.py (.../test.py) (revision 2d54b879d634338369136c10ce390211e8a6d713) +++ tst_cloud_sync_hd_opmode/test.py (.../test.py) (revision 8ad5f306455a57670d4ab09c409c3d2941194e46) @@ -13,7 +13,7 @@ # # # NOTE: -# This test verifies the cloud sync - Hd opmodes. +# This test verifies the cloud sync - tst_cloud_sync_hd_opmode. import builtins import csv import datetime @@ -31,16 +31,16 @@ hd_simulator = HDSimulator() -CLOUD_CREDENTIALS_LOCATION = '/home/denali/Desktop/cloudsync/credentials' + CLOUD_SYNC_LOG_LOCATION = '/home/denali/Desktop/sd-card/cloudsync' #MESSAGE_1 = '1639391827,1,0,2006,0' NUM_OF_HD_OPMODES = [0,1,2,3,4,5,6,7,8] NUM_OF_SUBMODES = 0 MESSAGE_2 = '1639391827,1,0,1006,2,0,0' -PEM_FILES = ['1.pem', '2.pem', '3.pem' ] + def get_cloud_sync_input_file(): """ This function is the handler for getting file from log folder. @@ -54,33 +54,6 @@ except: return False -def get_cloud_sync_output_file(): - """ - This function is the handler for getting file from log folder. - Application log file is automatically created on '/home/denali/Desktop/sd-card/cloudsync/ {current_date}_out.log' - @return latest_file - (string) returns latest file that append on log folder from sd-data - """ - try: - current_date = utility.get_current_date_and_time(date_format = "%Y_%m_%d") - latest_file = CLOUD_SYNC_LOG_LOCATION+current_date+'_out.buf' - return latest_file - except: - return False - - -def append_cloudsync_credentials_file(): - - try: - os.makedirs(CLOUD_CREDENTIALS_LOCATION, exist_ok = True) - test.log("Directory created successfully") - for file_handler in range(len(PEM_FILES)): - path = os.path.join(CLOUD_CREDENTIALS_LOCATION, PEM_FILES[file_handler]) - with open(path, 'w') as file_reader: - pass - - except OSError as error: - test.log("Directory can not be created") - def navigate_to_hd_opmode_(): """ Method to navigate different hd opmodes to verify message id's logged in cloudsync """ @@ -129,52 +102,35 @@ try: for reader in reversed(list(contents)): test.log(str(reader)) - return (reader[0],reader[1],reader[2],reader[3],reader[4],reader[5],reader[6],reader[7]) + return (reader[0],reader[1],reader[2],reader[3],reader[4],reader[5],reader[6],reader[7],reader[8]) except: test.fail("application log data is corrupted") except: test.fail("Log file is not created or log file is not created based on standard log naming format.") - -def set_data_in_cloud_sync_output_file(location, message): + +def read_data_from_cloud_sync_input_file(location, message): """ - This function is capable to write message into cloud sync folder. - - Through this method file reader act as a handler and it will write custom messages into {current_date}_out.buf + This function is capable to read message from cloud sync folder. + + Through this method file reader act as a handler and it will read messages from {current_date}_inp.buf """ - with open(location, "a") as filereader: - filereader.write(message) - utils.waitForGUI(5) -# def set_data_in_cloud_sync_input_file(location, message): -# """ -# This function is capable to write message into cloud sync folder. -# -# Through this method file reader act as a handler and it will write custom messages into {current_date}_out.buf -# """ -# with open(location, "r") as filereader: -# test.log(message) -# filereader.read(message) -# test.log(message) -# utils.waitForGUI(5) + with open(location, "r") as filereader: + test.log(message) + filereader.read(message) + test.log(message) + utils.waitForGUI(5) - - - def main(): - append_cloudsync_credentials_file() - + utils.tstStart(__file__) startApplication(config.AUT_NAME) utils.waitForGUI(1.5) - navigate_to_hd_opmode_() - cloud_out_log = get_cloud_sync_output_file() - set_data_in_cloud_sync_output_file(cloud_out_log, MESSAGE_2) -# cloud_out_log = get_cloud_sync_input_file() -# set_data_in_cloud_sync_input_file(cloud_out_log, MESSAGE_2) -# utils.waitForGUI(1) -# set_data_in_cloud_sync_input_file(cloud_out_log, MESSAGE_2) - set_data_in_cloud_sync_output_file(cloud_out_log, MESSAGE_2) + navigate_to_hd_opmode_() + +# cloud_input_log = get_cloud_sync_input_file() +# read_data_from_cloud_sync_input_file(cloud_input_log, MESSAGE_2) retrive_log_data() utils.tstDone() \ No newline at end of file