def generate_txt_statistics(export_file_h, stats): file_h = open(export_file_h, 'a+') common_utils.print_file_write_format( file_h, '---------------------------------Start collect system statistics data------------------------------\n' ) print_file_write_format( file_h, common_utils.print_sub_title("OS base Info :", write_system_common_info(stats))) print_file_write_format( file_h, common_utils.print_sub_title("CPU :", cpu_common_info(stats['sta']))) print_file_write_format( file_h, common_utils.print_sub_title("Memory :", mem_common_info(stats['sta']))) print_file_write_format( file_h, common_utils.print_sub_title("Disk :", disk_common_info(stats['sta']))) print_file_write_format( file_h, common_utils.print_sub_title("Net IO :", net_common_info(stats['sta']))) file_h.close()
def random_portal_searh_engine(export_file_h, url, token,test_key): file = open(export_file_h, 'a+') common_utils.print_file_write_format(file, common_utils.print_sub_title("\n\n" + "5 checking portal search engine", "")) num = 1 request_url, result = request_search(url, token, test_key,num) common_utils.print_file_write_format(file, "checking url: " + request_url) response_time = result[0] total_item = 0 if result[1]!= "failed": common_utils.print_file_write_format(file, "response result: " + str(result[1])) common_utils.print_file_write_format(file, "response time: " + response_time) common_utils.print_file_write_format(file, "checking passed!") total_item = result[1]['total'] common_utils.print_file_write_format(file, "\n") common_utils.print_file_write_format(file, "Total items:" + str(total_item)) else: common_utils.print_file_write_format(file, "portal search engine checking failed!") if total_item > 0: r_url, r = request_search(url, token, test_key, total_item) # common_utils.print_file_write_format(file, "\n") return r[1]['results']
def check_relational_db_status(export_file_h, url, token): file = open(export_file_h, 'a+') common_utils.print_file_write_format(file, common_utils.print_sub_title("\n\n" + "4 checking relational datastore health", "")) # token = common_utils.generate_token(url,username, password) result = request_relational_db_machines(url, token) dbs = result['items'] for db in dbs: path = db['path'] provider = db['provider'] # print(db['info']['machines']) machine_name = db['info']['machines'][0]['name'] common_utils.print_file_write_format(file, "checking db in machine: " + machine_name) if provider == "ArcGIS Data Store": request_url, result = request_relational_db_status(url, token, path,machine_name) common_utils.print_file_write_format(file, "checking url: " + request_url) response_time = result[0] if result[1] != "failed": common_utils.print_file_write_format(file, "response result: " + str(result[1])) common_utils.print_file_write_format(file, "response time: " + response_time) common_utils.print_file_write_format(file, "checking passed!") else: common_utils.print_file_write_format(file, "portal machine checking failed!") common_utils.print_file_write_format(file, "\n") file.close()
def check_hosting_server_status(export_file_h, url,token): file = open(export_file_h, 'a+') common_utils.print_file_write_format(file, common_utils.print_sub_title("\n\n" + "3 checking hosting server health", "")) machines = request_hosting_server_machine(url, token) machine_id = "" hosting_server_url = "" for machine in machines['servers']: isHosted = machine['isHosted'] if isHosted == True: machine_id = machine['id'] hosting_server_url = machine['adminUrl'] if machine_id != "": request_url, result = request_hosting_server_machine_status(url, token, machine_id) common_utils.print_file_write_format(file, "checking url:" + request_url) response_time = result[0] if result[1] != "failed": common_utils.print_file_write_format(file, "response result: " + str(result[1]['messages'])) common_utils.print_file_write_format(file, "response time: " + response_time) common_utils.print_file_write_format(file, "checking passed!") else: common_utils.print_file_write_format(file, "portal machine checking failed!") file.close() return hosting_server_url
def random_checking_services(export_file_h, token, service_list,seq, nums): file = open(export_file_h, 'a+') type = service_list[0]['type'] common_utils.print_file_write_format(file, common_utils.print_sub_title("\n\n" + seq + " checking " + type, "")) test_nums = len(service_list) count = len(service_list) total_time = 0.0 request_num = 0 if nums < test_nums: test_nums = nums for i in range(test_nums): s = random.randint(0, count-1) service = service_list[s] service_url = service['url'] if type == "Feature Service": request_url, result = request_feature_service_query(service_url,token) elif type == "Scene Service": request_url, result = request_scene_service_query(service_url, token) elif type == "Map Service": request_url, result = request_map_service_query(service_url, token) elif type == "WMTS": request_url, result = request_wmts_service_query(service_url, token) if request_url != None: common_utils.print_file_write_format(file, "checking url: " + request_url) response_time = result[0] if result != None: if result[1] != "failed": common_utils.print_file_write_format(file, "response time: " + response_time) common_utils.print_file_write_format(file, "response result: " + str(result[1])) common_utils.print_file_write_format(file, "checking passed!") total_time += float(response_time[:-1]) request_num += 1 else: common_utils.print_file_write_format(file, "checking failed!") common_utils.print_file_write_format(file, "\n") if int(request_num) != 0: common_utils.print_file_write_format(file, "The total testing service nums :" + str(request_num)) mean_time = total_time / request_num common_utils.print_file_write_format(file, 'All the requests consumed: ' + str("%.4f" % total_time) + 's') common_utils.print_file_write_format(file, 'Average response time: ' + str("%.4f" % mean_time) + 's') common_utils.print_file_write_format(file, "Check " + type + " passed!") else: common_utils.print_file_write_format(file, "No validate" + type + " can be checked!")
def get_services_list(export_file, url, token): try: file = open(export_file, 'a+') common_utils.print_file_write_format(file, "\n") common_utils.print_file_write_format( file, common_utils.print_sub_title('getting full service list', "")) request_url = url + "/admin/services" folders = ['/'] params = {'token': token, 'f': 'json'} item = 'folders' result = common_utils.submit_post_request(request_url, params, item) if result != "failed": for f in result[1]: if str.upper(f) == "SYSTEM" or str.upper( f) == "UTILITIES" or str.upper(f) == "HOSTED": continue else: folders.append(f) common_utils.print_file_write_format(file, "All the folders:" + str(folders)) services_list = [] if folders != None: for folder in folders: if folder == '/': folder_url = request_url else: folder_url = request_url + "/" + folder item = 'services' services = common_utils.submit_post_request( folder_url, params, item) for i in services[1]: services_list.append(i) count = len(services_list) common_utils.print_file_write_format(file, "services_count:" + str(count)) file.write("\n") file.close() return count, services_list, folders except: common_utils.print_file_write_format(file, "get services list failed!") file.close() return
def check_login(export_file_h, url, username, password): file = open(export_file_h, 'a+') common_utils.print_file_write_format(file, '---------------------------------Base Enterprise platform checking start--------------------------------') common_utils.print_file_write_format(file, common_utils.print_sub_title("1 checking login status","")) tokenurl, result= generate_token(url, username, password) common_utils.print_file_write_format(file, "checking url: " + tokenurl) token = result[1] response_time = result[0] if result[1] != "failed": common_utils.print_file_write_format(file, "response result: " + token) common_utils.print_file_write_format(file, "response time: " + response_time) common_utils.print_file_write_format(file, "checking passed!") else: common_utils.print_file_write_format(file, "User '"+username + "' login portal failed!") file.close() return token
def check_portal_health(export_file_h, url, token): file = open(export_file_h, 'a+') common_utils.print_file_write_format(file, common_utils.print_sub_title("\n\n"+"2 checking portal health", "")) machines = request_portal_machine(url, token) machine = machines['machines'][0] machine_name = machine['machineName'] if machine_name != None: request_url, result = request_portal_machine_status(url,token,machine_name) common_utils.print_file_write_format(file, "checking url:" + request_url) response_time = result[0] if result[1] != "failed": common_utils.print_file_write_format(file, "response result: " + str(result[1])) common_utils.print_file_write_format(file, "response time: " + response_time) common_utils.print_file_write_format(file, "checking passed!") else: common_utils.print_file_write_format(file, "portal machine checking failed!") file.close()
def random_testing_services(export_file_h, token, service_list, seq, nums, interval): file = open(export_file_h, 'a+') type = service_list[0]['type'] common_utils.print_file_write_format( file, common_utils.print_sub_title("\n\n" + seq + " Testing " + type, "")) count = len(service_list) total_time = 0.0 request_num = 0 dict = {} for i in range(nums): s = random.randint(0, count - 1) service = service_list[s] service_url = service['url'] if type == "Feature Service": request_url, result = request_feature_service_query( service_url, token) elif type == "Scene Service": request_url, result = request_scene_service_query( service_url, token) elif type == "Map Service": request_url, result = request_map_service_query(service_url, token) elif type == "WMTS": request_url, result = request_wmts_service_query( service_url, token) if request_url != None: common_utils.print_file_write_format(file, "Test url: " + request_url) response_time = result[0] if result != None: if result[1] != "failed": common_utils.print_file_write_format( file, "response time: " + response_time) # common_utils.print_file_write_format(file, "response result: " + str(result[1])) # common_utils.print_file_write_format(file, "checking passed!") total_time += float(response_time[:-1]) request_num += 1 else: common_utils.print_file_write_format(file, "checking failed!") common_utils.print_file_write_format(file, "\n") time.sleep(interval) if int(request_num) != 0: common_utils.print_file_write_format( file, "The total test requests nums :" + str(request_num)) mean_time = total_time / request_num common_utils.print_file_write_format( file, 'All the requests consumed: ' + str("%.4f" % total_time) + 's') common_utils.print_file_write_format( file, 'Average response time: ' + str("%.4f" % mean_time) + 's') common_utils.print_file_write_format(file, "Test " + type + " finished!") dict['type'] = type dict['nums'] = request_num dict['sum_time'] = "%.4f" % total_time dict['mean_time'] = "%.4f" % mean_time return dict else: common_utils.print_file_write_format(file, "Test " + type + " failed!") return
def check_instance_statistics(export_file, url, token, service_list, repair_times): try: file = open(export_file, 'a+') error_log = "位于{0}目录下的服务{1}在服务器{2}创建实例异常: 应创建最小实例数:{3}, 实际创建实例数:{4}。\n服务地址:{5} \n" error_services = {} common_utils.print_file_write_format(file, "\n") common_utils.print_file_write_format( file, common_utils.print_sub_title("start checking instance statistics", "")) for service in service_list: folder = service['folderName'] serviceName = service['serviceName'] type = service['type'] if folder == "/": base_url = url + "/admin/services/" else: base_url = url + "/admin/services/" + folder + "/" params = {'token': token, 'f': 'json'} service_url = base_url + serviceName + "." + type common_utils.print_file_write_format( file, "checking service: " + service_url) responsetime, service_detail = common_utils.submit_post_request( service_url, params) # print(service_detail) min_instance_config = service_detail['minInstancesPerNode'] stat_url = service_url + "/statistics" response = common_utils.submit_post_request(stat_url, params) statistics = response[1] summary = statistics['summary'] machines = statistics['perMachine'] m_count = len(machines) for machine in machines: machineName = machine['machineName'] if machine['isStatisticsAvailable']: # print(machine) running_ins = int(machine['free']) + int(machine['busy']) if running_ins < min_instance_config: common_utils.print_file_write_format( file, error_log.format(folder, serviceName, machineName, min_instance_config, running_ins, service_url) + "\n") error_services[serviceName] = service_url else: common_utils.print_file_write_format( file, "check " + machineName + " result : normal") common_utils.print_file_write_format(file, "\n") file.close() if len(error_services.keys()) > 0: file = open(export_file, "a+") common_utils.print_file_write_format( file, "check finished,continue to repair the instances") for service in error_services.keys(): serviceName = service service_url = error_services[service] common_utils.print_file_write_format( file, "repairing service :" + service_url) result = repair_bugs(repair_times, serviceName, service_url, token) common_utils.print_file_write_format( file, "repair result :" + str(result)) common_utils.print_file_write_format( "repair instance status finished!") file.close() file = open(export_file, "a+") common_utils.print_file_write_format(file, "check finished!") file.close() except: common_utils.print_file_write_format(file, "check instanse failed!") file.close() return
def check_service_status(export_file, url, token, service_list, repair_times): try: error_log = "位于{0}目录下的服务{1}启动异常: 配置状态:{2}, 实际状态:{3}。\n服务地址:{4} \n" file = open(export_file, 'a+') common_utils.print_file_write_format(file, "\n") common_utils.print_file_write_format( file, common_utils.print_sub_title('start checking service status', "")) i = 0 for service in service_list: folder = service['folderName'] serviceName = service['serviceName'] type = service['type'] if folder == "/": base_url = url + "/admin/services/" else: base_url = url + "/admin/services/" + folder + "/" service_url = base_url + serviceName + "." + type common_utils.print_file_write_format( file, "checking service :" + service_url) check_url = service_url + "/status" params = {'token': token, 'f': 'json'} response = common_utils.submit_post_request(check_url, params) status = response[1] configuredState = status['configuredState'] realTimeState = status['realTimeState'] if configuredState != realTimeState: common_utils.print_file_write_format( file, error_log.format(folder, serviceName, configuredState, realTimeState, service_url)) common_utils.print_file_write_format(file, "repairing service ...") # restart service if check found the start status is abnormal repair_bugs(export_file, repair_times, serviceName, service_url, token) else: common_utils.print_file_write_format(file, "check result : normal") common_utils.print_file_write_format(file, "\n") common_utils.print_file_write_format( file, 'check and repair service start status finished!') file.close() except: common_utils.print_file_write_format( file, "check arcgis server service start status failed!") file.close() return
def random_testing_services(export_file_h, url, token, message, service_list, nums, interval): file = open(export_file_h, 'a+') common_utils.print_file_write_format( file, common_utils.print_sub_title("\n\n" + "Testing " + message, "")) count = len(service_list) common_utils.print_file_write_format(file, message + " count: " + str(count)) total_time = 0.0 request_num = 0 dict = {} request_num = 0 for i in range(nums): s = random.randint(0, count - 1) service = service_list[s] if service['type'] == 'MapServer': submit_url = url + "/rest/services/" + service[ 'name'] + "/" + service['type'] common_utils.print_file_write_format( file, "submit_url" + str(submit_url)) request_url, result = request_map_service_query(submit_url, token) if request_url != None: common_utils.print_file_write_format( file, "Test url: " + str(request_url)) if result != None: response_time = result[0] common_utils.print_file_write_format( file, "response time: " + response_time) if result[1] != "failed": common_utils.print_file_write_format( file, "response result: " + str(result[1])) total_time += float(response_time[:-1]) request_num += 1 else: common_utils.print_file_write_format( file, "request failed!") common_utils.print_file_write_format(file, "\n") time.sleep(interval) if int(request_num) > 0: common_utils.print_file_write_format( file, "The total number of requests responding successfully :" + str(request_num)) mean_time = total_time / request_num common_utils.print_file_write_format( file, 'All the requests consumed: ' + str("%.4f" % total_time) + 's') common_utils.print_file_write_format( file, 'Average response time: ' + str("%.4f" % mean_time) + 's') common_utils.print_file_write_format(file, "Test Map Service finished!") dict['type'] = message dict['nums'] = request_num dict['sum_time'] = "%.4f" % total_time dict['mean_time'] = "%.4f" % mean_time return dict else: common_utils.print_file_write_format(file, "Test Map Service failed!") return file.close()
def random_test_cache_service(export_file_h, url, token, message, service_list, nums, interval): if len(service_list) > 0: file = open(export_file_h, 'a+') common_utils.print_file_write_format( file, common_utils.print_sub_title("\n\n" + "Testing " + message, "")) count = len(service_list) service_num = int(nums / count) + 1 print('service_count:', count) # common_utils.print_file_write_format(file, message + " count: " + str(count)) total_time = 0.0 request_num = 0 request_num = 0 dict = {} sta_dict = {} for service in service_list: service_name = service['name'] response = request_service_schema(url, token, service_name) fullExtent = response[1]['fullExtent'] tile_schema = response[1]['tileInfo'] tile_matrix = compute_tile_matrix(tile_schema, fullExtent) dict[service_name] = tile_matrix # print("service_name:", service_name) # for k in tile_matrix.keys(): # print(k, tile_matrix[k]) for i in range(service_num): s = random.randint(0, count - 1) service = service_list[s] service_name = service['name'] for j in range(int(nums / service_num)): service_schema = dict[service_name] level = random.randint(0, len(service_schema) - 1) right_col = service_schema[level]['right_col'] left_col = service_schema[level]['left_col'] up_row = service_schema[level]['up_row'] down_row = service_schema[level]['down_row'] width = right_col - left_col height = down_row - up_row if width >= 8 and height >= 8: col = random.randint(left_col + int(width / 4), right_col - int(width / 4)) row = random.randint(up_row + int(height / 4), down_row - int(height / 4)) else: row = random.randint(service_schema[level]['up_row'], service_schema[level]['down_row']) col = random.randint(service_schema[level]['left_col'], service_schema[level]['right_col']) request_url, response = request_cache_service_query( url, token, service_name, level, row, col) # print("level: ", level, " row: ",row, " col: ", col) # print(request_url) # print(r) common_utils.print_file_write_format( file, "Test url: " + request_url) if response != None: response_time = response[0] common_utils.print_file_write_format( file, "request result: " + str(response[1])) common_utils.print_file_write_format( file, "response time: " + response_time) if response[1] != "failed": total_time += float(response_time[:-1]) request_num += 1 else: common_utils.print_file_write_format( file, "request failed!") common_utils.print_file_write_format(file, "\n") time.sleep(interval) common_utils.print_file_write_format(file, "\n") if int(request_num) > 0: common_utils.print_file_write_format( file, "The total number of requests responding successfully : " + str(request_num)) mean_time = total_time / request_num common_utils.print_file_write_format( file, 'All the requests consumed: ' + str("%.4f" % total_time) + 's') common_utils.print_file_write_format( file, 'Average response time: ' + str("%.4f" % mean_time) + 's') common_utils.print_file_write_format(file, "Test Map Service finished!") sta_dict['type'] = message sta_dict['nums'] = request_num sta_dict['sum_time'] = "%.4f" % total_time sta_dict['mean_time'] = "%.4f" % mean_time return sta_dict else: common_utils.print_file_write_format(file, "Test Map Service failed!") return file.close() return dict else: return