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()
예제 #2
0
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']
예제 #3
0
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()
예제 #4
0
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
예제 #5
0
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
예제 #7
0
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
예제 #8
0
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()
예제 #9
0
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