def validate_datasource_list(self): nav= NavigationTree(self.web_session) nav.navigate_to_middleware_datasources_view() haw= hawkular_api(self.web_session) tab = table(self.web_session) dataDb = db(self.web_session) datasource_api = self.hawkular_api.get_hawkular_datasources() datasource_ui = table(self.web_session).get_middleware_datasources_table() datasource_db = db(self.web_session).get_datasources() assert len(datasource_db) == len(datasource_ui) == len(datasource_api), "Datasource length match" for data_ui in datasource_ui: datasource_name = data_ui.get('Datasource Name') data_api = self.ui_utils.find_row_in_list(datasource_api, 'Name', datasource_name) assert data_api, "Datasource Name {} not found".format(datasource_name) assert (datasource_name == data_api.get("Name")), \ "Datasource Name mismatch ui:{}, hawk:{}".format(datasource_name, data_api.get("Name")) self.web_session.logger.info( "UI Datasource name is: {}, and Hawkular datasource is: {} ".format(datasource_name, data_api.get("Name"))) return True
def validate_middleware_container_entities(self): self.web_session.logger.info("Validate that Topology View expected Containers") self.__navigate_to_topology__() self.__display_names__(select=True) entity_name = self.entities.get('containers') assert self.ui_utils.isTextOnPage(entity_name), "{} not found".format(self.entities.get('containers')) # Select "Containers Entities" self.__select_entities_view__(entity_name, 'hawkular-services') ## Compair DB and UI until there is a way to determine Container list via Hawkular-API containers_db = db(self.web_session).get_container_servers() containers_el = self.web_driver.find_elements_by_class_name('Container') assert len(containers_db) == len(containers_el) for el in containers_el: name = el.text.split()[1] foundIt = False for container in containers_db: if name in container.get('feed'): foundIt = True break assert foundIt, "Container {} not found in DB Container list.".format(name) return True
def __init__(self, web_session): self.web_session = web_session self.web_driver = web_session.web_driver self.ui_utils = ui_utils(self.web_session) self.hawkular_api = hawkular_api(self.web_session) self.db = db(self.web_session) self.appliance_version = self.web_session.appliance_version
def validate_datasource_list(self): navigate(self.web_session).get( "{}/middleware_datasource/show_list".format( self.web_session.MIQ_URL)) datasource_api = self.hawkular_api.get_hawkular_datasources() datasource_ui = self.ui_utils.get_list_table() datasource_db = db(self.web_session).get_datasources() #assert len(datasource_db) == len(datasource_ui) == len(datasource_api), "Datasource length match" assert len(datasource_db) == len( datasource_ui), "Datasource length match" for data_ui in datasource_ui: datasource_name = data_ui.get('Datasource Name') data_api = self.ui_utils.find_row_in_list(datasource_api, 'Name', datasource_name) assert data_api, "Datasource Name {} not found".format( datasource_name) assert (datasource_name == data_api.get("Name")), \ "Datasource Name mismatch ui:{}, hawk:{}".format(datasource_name, data_api.get("Name")) self.web_session.logger.info( "UI Datasource name is: {}, and Hawkular datasource is: {} ". format(datasource_name, data_api.get("Name"))) return True
def validate_middleware_container_entities(self): self.web_session.logger.info( "Validate that Topology View expected Containers") self.__navigate_to_topology__() self.__display_names__(select=True) entity_name = self.entities.get('containers') assert self.ui_utils.isTextOnPage(entity_name), "{} not found".format( self.entities.get('containers')) # Select "Containers Entities" self.__select_entities_view__(entity_name, 'hawkular-services') ## Compair DB and UI until there is a way to determine Container list via Hawkular-API containers_db = db(self.web_session).get_container_servers() containers_el = self.web_driver.find_elements_by_class_name( 'Container') assert len(containers_db) == len(containers_el) for el in containers_el: name = el.text.split()[1] foundIt = False for container in containers_db: if name in container.get('feed'): foundIt = True break assert foundIt, "Container {} not found in DB Container list.".format( name) return True
def validate_middleware_servers_entities(self): # Validate that each Server Name is displayed in Topology: # 1) get Servers list (from Servers view) # 2) Enable Display Names # 3) Enable Middleware Servers entities (by validating whether 1st Server Name in Servers-List is displayed) # 4) Validate that each Server in Servers-List is displayed self.web_session.logger.info( "Validate that Topology View expected Servers") servers_list = db(self.web_session).get_servers() assert servers_list, "No servers found." self.__navigate_to_topology__() self.ui_utils.adjust_screen_resolution(1400, 1050) self.__display_names__(select=True) # Select "Middleware Servers" self.__select_entities_view__(self.entities.get('servers'), servers_list[0].get('name')) for server in servers_list: name = server.get('name') assert self.ui_utils.waitForTextOnPage( name, 5), "Server not found in Topology: {}".format(name) return True
def createCityCoupon(self, parkName, cityCouponName): """创建城市劵""" parkCodeSql = "select parkCode from tbl_device_parking where name ='" + parkName + "'" parkCode = db().select(parkCodeSql) self.url = "/openydt/api/v2/createCityOperationCouponTemplate" json_data = { "parkCodeList": [parkCode], "couponTemplate": { "wxAppid": "wxbc0f049b70707054", "name": cityCouponName, "totalNum": 10, "couponType": 1, "faceValue": 1.00, "useRuleFrom": 0, "useRuleTo": 1000, "couponRule": "", "useParkingFee": "", "isCover": 1, "maxCoverNum": 3, "validFrom": SA().get_today_data() + " 00:00:00", "validTo": SA().cal_get_day(strType="%Y-%m-%d", days=365) + " 23:59:59", "validTime": 360, "billUseType": 0, "remark": "创建城市运营模板劵--金额扣减券_正常" } } re = self.post(self.openYDT_api, json=json_data) return re
def validate_middleware_servers_entities(self): # Validate that each Server Name is displayed in Topology: # 1) get Servers list (from Servers view) # 2) Enable Display Names # 3) Enable Middleware Servers entities (by validating whether 1st Server Name in Servers-List is displayed) # 4) Validate that each Server in Servers-List is displayed self.web_session.logger.info("Validate that Topology View expected Servers") servers_list = db(self.web_session).get_servers() assert servers_list, "No servers found." self.__navigate_to_topology__() self.ui_utils.adjust_screen_resolution(1400, 1050) self.__display_names__(select=True) # Select "Middleware Servers" self.__select_entities_view__(self.entities.get('servers'), servers_list[0].get('name')) for server in servers_list: name = server.get('name') assert self.ui_utils.waitForTextOnPage(name, 5), "Server not found in Topology: {}".format(name) return True
def add_mm_openshift_provider(self, delete_if_provider_present=True, port=None, validate_provider=True): self.provider_name = self.web_session.OPENSHIFT_PROVIDER_NAME self.host_name = self.web_session.OPENSHIFT_HOSTNAME self.port = self.web_session.OPENSHIFT_PORT if port == None else port self.openshift_user = self.web_session.OPENSHIFT_USERNAME self.openshift_token= self.openshift_utils.get_token() ui_utils(self.web_session).sleep(2) # Check if any provider already exist. If exist, first delete all the providers and then add a provider. if db(self.web_session).is_container_provider_present(self.web_session.OPENSHIFT_PROVIDER_NAME): self.web_session.logger.info("Container Provider already exist.") return else: self.web_session.logger.info("Adding openshift Middleware Provider to ManageIQ instance") navigate(self.web_session).get("{}//ems_container/show_list".format(self.web_session.MIQ_URL)) assert ui_utils(self.web_session).waitForTextOnPage("Containers Providers", 15) self.web_driver.find_element_by_xpath("//button[@title='Configuration']").click() self.ui_utils.waitForElementOnPage(By.XPATH,"//a[@title='Add a new Containers Provider']", 5) elem_add_new_provider = self.web_driver.find_element_by_xpath("//a[@title='Add a new Containers Provider']") elem_add_new_provider.click() self.web_driver.implicitly_wait(15) assert ui_utils(self.web_session).waitForTextOnPage("Add New Containers Provider", 50) ui_utils(self.web_session).sleep(2) self.web_session.logger.info("The appliance version in use is: {} ".format(self.web_session.appliance_version)) self.submit_provider_form_cfme(validate_provider) self.verify_add_provider_success()
def add_middleware_control_policy(self, policy_name, product_name, delete_policy=False, assignment_events=None): self.web_session.logger.info('Add Policy: "{}", Product Name: "{}"'.format(policy_name, product_name)) if db(self.web_session).is_policy_present(policy_name): if delete_policy: if not self.delete_middleware_control_policy(policy_name): return False else: self.web_session.logger.info('Policy "{}" already exists.'.format(policy_name)) return True self.navigate_to_middleware_server_control_policies() # Add the policy self.web_driver.find_element_by_xpath('//*[@title="Configuration"]').click() self.ui_utils.sleep(2) el = self.web_driver.find_element_by_xpath('//*[@title="Add a New Middleware Server Control Policy"]') #self.ui_utils.wait_until_element_displayed(mw_el, 10) el.click() assert self.ui_utils.waitForTextOnPage("Notes", 15) # Fill out form self.web_driver.find_element_by_id("description").send_keys(policy_name) self.web_driver.find_element_by_xpath("//span[contains(.,'Choose')]").click() el = self.web_driver.find_element_by_xpath("//span[contains(.,'Field')]") assert self.ui_utils.wait_until_element_displayed(el, 10) el.click() self.ui_utils.sleep(2) self.web_driver.find_elements_by_xpath(".//*[contains(text(), 'Choose') and not (ancestor::*[contains( @ style, 'display: none')])]")[3].click() el = self.web_driver.find_element_by_xpath("//*[contains(text(),'Middleware Server : Product')]") self.ui_utils.wait_until_element_displayed(el, 10) el.click() self.ui_utils.sleep(2) el = self.web_driver.find_element_by_xpath('//*[@id="exp_atom_editor_div"]/fieldset/div[4]/button/span[1]') assert self.ui_utils.wait_until_element_displayed(el, 10) el.click() el = self.web_driver.find_element_by_xpath("//*[contains(text(),'INCLUDES')]") assert self.ui_utils.wait_until_element_displayed(el, 10) el.click() self.ui_utils.sleep(2) el = self.web_driver.find_element_by_id('chosen_value') assert self.ui_utils.wait_until_element_displayed(el, 10) el.send_keys(product_name) # Click on Check box el = self.web_driver.find_element_by_xpath('//*[@title="Commit expression element changes"]').click() assert self.ui_utils.waitForTextOnPage('Middleware Server : Product INCLUDES "{}"'.format(product_name), 10) # Add Policy self.web_driver.find_element_by_xpath('//*[@title="Add"]').click() assert self.ui_utils.waitForTextOnPage('Policy "{}" was added'.format(policy_name), 10) # Assign Policy Events if assignment_events: self.assign_middleware_policy_events(policy_name, assignment_events) return True
def __init__(self, web_session): self.web_session = web_session self.web_driver = web_session.web_driver self.ui_utils = ui_utils(self.web_session) self.hawkular_api = hawkular_api(self.web_session) try: self.db = db(self.web_session) except Exception, e: self.web_session.logger.warning("Unable to connecto to database. {}".format(e))
def does_provider_exist(self): self.web_session.logger.info("Checking if provider exists") # For performance reasons, check if the provider is present via DB providers = db(self.web_session).get_providers() provider = ui_utils(self.web_session).find_row_in_list(providers, 'name', self.web_session.HAWKULAR_PROVIDER_NAME) if provider: return True else: self.web_session.logger.info("Middleware Provider does not exist.") return False
def submit(request): if request.method == "POST": request_data = request.POST["request_data"] print request_data request_data = json.loads(base64.b64decode(request_data.encode('unicode-escape').decode())) print request_data type_id = request_data[0] nid = request_data[1] param1 = request_data[2] param2 = request_data[3] param3 = request_data[4] param4 = request_data[5] desc = request_data[6] #print desc, MySQLdb.escape_string(unicode(desc).encode('utf8')) #Process nid first_char = nid[0] if first_char == "A": nid_value = int("0x88080001",16) elif first_char == "B": nid_value = int("0x880A0001",16) elif first_char == "C": nid_value = int("0x880B0001",16) if "D" in nid: nid_value += int("0x00100000",16) if "E" in nid: nid_value += int("0x00200000",16) if "F" in nid: nid_value += int("0x00400000",16) #Check data param1 = param1.split(" ")[1] if len(param3) >=256 or len(param4) >= 256 or len(desc)>=256: return HttpResponse("Bad_Data param3:%s bytes param4:%sbytes desc:%sbytes" % (len(param3), len(param4), len(desc))) test_db = db(IP) sql = [u"""replace into im_db.im_notify_config_tab values(%s,%s,%s,%s,%s,%s,%s)""".encode("utf8") , [str(type_id).encode("utf8"), str(nid_value).encode("utf8"), param1.encode("utf8"), param2.encode("utf8"), param3.encode("utf8"), param4.encode("utf8"), desc.encode("utf8") ]] #sql = sql.encode("utf8") #print sql test_db.run_sql(sql, param = True) test_db.commit() return HttpResponse("Done")
def __init__(self, web_session): self.web_session = web_session self.web_driver = web_session.web_driver self.ui_utils = ui_utils(self.web_session) self.hawkular_api = hawkular_api(self.web_session) try: self.db = db(self.web_session) except Exception, e: self.web_session.logger.warning( "Unable to connecto to database. {}".format(e))
def does_provider_exist(self): self.web_session.logger.info("Checking if provider exists") # For performance reasons, check if the provider is present via DB providers = db(self.web_session).get_providers() provider = ui_utils(self.web_session).find_row_in_list( providers, 'name', self.web_session.HAWKULAR_PROVIDER_NAME) if provider: return True else: return False
def delete_middleware_control_policy(self, policy_name, navigate=True): self.web_session.logger.info('Delete Policy: "{}"'.format(policy_name)) if not db(self.web_session).is_policy_present(policy_name): self.web_session.logger.warning('Policy "{}" does not exists.'.format(policy_name)) return False if navigate: self.navigate_to_middleware_server_control_policies(policy_name=policy_name) self.web_driver.find_element_by_xpath('//*[@title="Configuration"]').click() self.ui_utils.sleep(1) try: self.web_driver.find_element_by_xpath('//*[@title="Delete this Middleware Server Policy"]').click() self.ui_utils.accept_alert(10) except Exception, e: try: self.web_driver.find_element_by_xpath( '//*[@title="Policies that belong to Profiles can not be deleted"]') self.web_session.logger.error('Policy "{}" - Policies that belong to Profiles can not be deleted'.format(policy_name)) return False except Exception, e: assert False, 'Policy "{}" not found'.format(policy_name)
def test_cfui_container_entities(web_session): if not db(web_session).is_container_provider_present(web_session.OPENSHIFT_PROVIDER_NAME): pytest.skip("Skip test - No Container Provider found.") assert topology(web_session).validate_middleware_container_entities()
def test_cfui_db_deployments(web_session): rows = db(web_session).get_deployments() assert rows for row in rows: print "name: ", row.get('name')
def test_cfui_db_servers(web_session): rows = db(web_session).get_servers() assert rows for row in rows: print "product: ", row.get('product')
def test_cfui_db_datasources(web_session): rows = db(web_session).get_datasources() assert rows for row in rows: print "name: ", row.get('name')
def test_cfui_container_entities(web_session): if not db(web_session).is_container_provider_present( web_session.OPENSHIFT_PROVIDER_NAME): pytest.skip("Skip test - No Container Provider found.") assert topology(web_session).validate_middleware_container_entities()
def test_cfui_db_domains(web_session): rows = db(web_session).get_domains() assert rows for row in rows: print "name: ", row.get('name')
def __init__(self, web_session): self.web_session = web_session self.ui_utils = ui_utils(self.web_session) self.hawkular_api = hawkular_api(self.web_session) self.db = db(self.web_session)
def initDb(self): # 初始化 db if not self._db: self._db = db.db() return True
def view_existing(request): if request.method == "GET": if "type" in request.GET: type_id = request.GET["type"] test_db = db(IP) sql = """select column_name from information_schema.columns where table_schema = "im_db" and table_name = "im_notify_config_tab" order by ordinal_position; """ sql_result = test_db.run_sql(sql) display_keys = [] parameter_string = "" first_time = True for item in sql_result: display_keys.append(item[0]) if first_time == True: parameter_string += "`%s`" % (item[0] ) first_time = False else: parameter_string += "," + "`%s`" % (item[0] ) #sql = "set names latin1" #test_db.run_sql(sql) sql = "select %s from im_db.im_notify_config_tab" % (parameter_string) if "type" in request.GET: sql += " where type = %s" % (type_id) game_id_dict = {0:"None", 4097 :"lan", 16385:"war3", 16386:"dota", 16387:"aoe", 16388:"bf", 16389:"cod4", 16390:"cs1.6", 16391:"l4d", 16392:"ra", 16393:"sc", 16394:"kf", 16395:"sanguo", 16396:"nobu", 16397:"ddtank", 32769:"HoN", 32771 :"LoLSAM", 32773:"BlackShot", 32774:"LoLPH", 32775:"LoLTW", 32777:"texas", 32779:"7Hero", 32781:"WinTexas", 32782:"HoNCIS", 32783:"PerfectWorld", 32784:"LDJ", 32785:"MstarTW", 32786:"LoLTH", 32787:"LoLVN", 32788:"PWEN", 32789:"DNF", 32790:"PBTH", 32791:"ZSG", 32792:"FO3TH", 32793:"FO3", 32794:"FO3VN", 32795:"FO3ID", 32796:"VHT", 32797:"Mstar", 32798:"HoNCN", 32799:"LoLID", 32800:"HoNTR", 32801:"ELSPH", 32802:"POE", 32803:"PB", 32804:"AVATW", 32805:"FCTW", 32811:"PBPH"} game_name_list = ["%s %s"%(game_id_dict[key],key) for key in game_id_dict.keys()] display_items = [] if "type" not in request.GET or type_id != "new": sql_result = test_db.run_sql(sql) for item in sql_result: item_dict = dict() for i in range(len(display_keys)): if display_keys[i] in [ "param4", "param3", "desc"]: item_dict[display_keys[i]] = unicode(item[i]).encode('latin-1') elif display_keys[i] == "nid":#nid => abcde result = "" nid = item[i] nid_hex = hex(nid) base = nid_hex[5] option = nid_hex[4] print option if base == "8": result = "A" elif base == "a": result = "B" elif base == "b": result = "C" if option == "1": result += "D" elif option == "2": result += "E" elif option == "3": result += "DE" elif option == "4": result += "F" elif option == "5": result += "DF" elif option == "6": result += "EF" elif option == "7": result += "DEF" item_dict[display_keys[i]] = result elif display_keys[i] == "param1":#gameid => game name #game_id_dict = {0:"None", 4097 :"lan", 16385:"war3", 16386:"dota", 16387:"aoe", 16388:"bf", 16389:"cod4", 16390:"cs1.6", 16391:"l4d", 16392:"ra", 16393:"sc", 16394:"kf", # 16395:"sanguo", 16396:"nobu", 16397:"ddtank", 32769:"HoN", 32771 :"LoLSAM", 32773:"BlackShot", 32774:"LoLPH", 32775:"LoLTW", 32777:"texas", 32779:"7Hero", # 32781:"WinTexas", 32782:"HoNCIS", 32783:"PerfectWorld", 32784:"LDJ", 32785:"MstarTW", 32786:"LoLTH", 32787:"LoLVN", 32788:"PWEN", 32789:"DNF", # 32790:"PBTH", 32791:"ZSG", 32792:"FO3TH", 32793:"FO3", 32794:"FO3VN", 32795:"FO3ID", 32796:"VHT", 32797:"Mstar", 32798:"HoNCN", 32799:"LoLID", # 32800:"HoNTR", 32801:"ELSPH", 32802:"POE"} #game_name_list = ["%s %s"%(game_id_dict[key],key) for key in game_id_dict.keys()] current_game_name = game_id_dict[item[i]] + " " + str(item[i]) item_dict[display_keys[i]] = current_game_name else: item_dict[display_keys[i]] = item[i] display_items.append(item_dict) else:#get the next available type id sql = "select max(type) + 1 from im_db.im_notify_config_tab" sql_result = test_db.run_sql(sql, one_row = True) new_type_id = sql_result[0] display_items = [{"type": new_type_id, "nid": "C", "param1": 0 , "param2": "0", "param3": """url, if need '%', use '%%' instead""", "param4": """content, if need display '%', use '%%' instead. the text in {} will be displayed in highlight.""","desc": "",}] current_game_name = "None" #print display_items if "type" in request.GET:#Modify page return render_to_response('notify_configure_app/modify_existing.html', {"notice": notice, "display_keys":display_keys , "display_items":display_items, "game_name_list":game_name_list, "current_game_name":current_game_name}) else:#Summary page return render_to_response('notify_configure_app/view_existing.html', {"notice": notice, "display_keys":display_keys , "display_items":display_items})