コード例 #1
0
def clusterStatus(request):
    '''
          集群状态显示界面
    '''
    t = get_template('cluster_status.html')
    proxy = MyProxy(settings.CLUSTER_MASTER_URL)
    cluster = Cluster(proxy.get_status())
    context = {'nodes': cluster.nodes}
    html = t.render(context)
    return HttpResponse(html)
コード例 #2
0
def clusterStatus(request):
    '''
          集群状态显示界面
    '''
    t = get_template('cluster_status.html')
    proxy = MyProxy(settings.CLUSTER_MASTER_URL)
    cluster = Cluster(proxy.get_status())
    context = {'nodes': cluster.nodes}
    html = t.render(context)
    return HttpResponse(html)
コード例 #3
0
def compatibility_test(request):
    '''
    兼容性测试
    '''
    logger.info(u'开始兼容性测试')
    if request.method == 'POST':
        form = PlanForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            cur_system = data['system']
            cur_system_instance = System.objects.get(name=cur_system)
            compatibility_script_instance = CompatibilityScript.objects.get(system = cur_system_instance)
            proxy = MyProxy(settings.CLUSTER_MASTER_URL)

            taskinfo_ie8 = {}
            taskinfo_ie8['system'] = cur_system
            taskinfo_ie8['executor'] = data['executor']
            taskinfo_ie8['province'] = data['province']
            taskinfo_ie8['city'] = data['city']
            taskinfo_ie8_json = json.dumps(taskinfo_ie8)
            para_ie8 = {'type': 'file'}
            para_ie8['path'] = compatibility_script_instance.script_ie_path
            para_ie8['str'] = taskinfo_ie8_json
            para_list_ie8 = []
            para_list_ie8.append(para_ie8)
            proxy.add_job_with_type('inspect', 'IE8', 'exec', para_list_ie8)

            taskinfo_ie10 = {}
            taskinfo_ie10['system'] = cur_system
            taskinfo_ie10['executor'] = data['executor']
            taskinfo_ie10['province'] = data['province']
            taskinfo_ie10['city'] = data['city']
            taskinfo_ie10_json = json.dumps(taskinfo_ie10)
            para_ie10 = {'type': 'file'}
            para_ie10['path'] = compatibility_script_instance.script_ie_path
            para_ie10['str'] = taskinfo_ie10_json
            para_list_ie10 = []
            para_list_ie10.append(para_ie10)
            proxy.add_job_with_type('inspect', 'IE10', 'exec', para_list_ie10)

            taskinfo_fx = {}
            taskinfo_fx['system'] = cur_system
            taskinfo_fx['executor'] = data['executor']
            taskinfo_fx['province'] = data['province']
            taskinfo_fx['city'] = data['city']
            taskinfo_fx_json = json.dumps(taskinfo_fx)
            para_fx = {'type': 'file'}
            para_fx['path'] = compatibility_script_instance.script_firefox_path
            para_fx['str'] = taskinfo_fx_json
            para_list_fx = []
            para_list_fx.append(para_fx)
            proxy = MyProxy(settings.CLUSTER_MASTER_URL)
            proxy.add_job_with_type('inspect', 'FX', 'exec', para_list_fx)

            taskinfo_chrome = {}
            taskinfo_chrome['system'] = cur_system
            taskinfo_chrome['executor'] = data['executor']
            taskinfo_chrome['province'] = data['province']
            taskinfo_chrome['city'] = data['city']
            taskinfo_chrome_json = json.dumps(taskinfo_chrome)
            para_chrome = {'type': 'file'}
            para_chrome['path'] = compatibility_script_instance.script_chrome_path
            para_chrome['str'] = taskinfo_chrome_json
            para_chrome_list = []
            para_chrome_list.append(para_chrome)
            proxy.add_job_with_type('inspect', 'CHROME', 'exec', para_chrome_list)
            return HttpResponseRedirect('/result/')
コード例 #4
0
def create_plan(request):
    '''
          完成巡检计划新增工作
    '''
    if request.method == 'POST':
        form = PlanForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            cur_system =  request.COOKIES["system"]         
            cur_system_instance = System.objects.get(name=cur_system)
            testsuite_instance = TestSuite.objects.get(name=data['test_suite_name'])
            #巡检脚本名称(通过系统实例id和测试套件id保证巡检脚本名称的唯一性)
            script_name = str(cur_system_instance.id) + '-' + str(testsuite_instance.id)
            #巡检脚本路径
            script_path = settings.SCRIPT_ROOT + cur_system_instance.english_name + str(testsuite_instance.id) + '.txt'
            logger.info(u'巡检脚本路径:' + script_path)
            if not os.path.exists(settings.SCRIPT_ROOT):
                os.makedirs(settings.SCRIPT_ROOT)
           
            if script_name not in scripts:
                logger.info(u'新建巡检脚本')
                
                script_str = '*** Settings ***' + os.linesep  \
                + 'Library           Selenium2Library'  + os.linesep  + os.linesep  \
                + '*** Variables ***' + os.linesep \
                + '${timeout}           ' + str(timeout) + os.linesep + os.linesep \
                + '*** Test Cases ***' + os.linesep    
                
                #获得当前系统的所有测试用例
                candidate_test_cases = TestCase.objects.filter(system = cur_system_instance)
                #将testsuite选中的测试用例名称按行分为列表
                testcase_list = testsuite_instance.testcases.split('\n')
                #去除最后一个空行
                testcase_list = testcase_list[:-1]
                
                for testcase_item in testcase_list:
                    #列表中的每一项的格式为'序号 测试用例名称'
                    testcase_name = testcase_item.split(' ')[1]
                    #去除换行符
                    testcase_name = testcase_name.strip('\r')
                    testcase_instance = candidate_test_cases.get(name=testcase_name)
                    script_str = script_str + testcase_instance.name + os.linesep
                    script_str = script_str + testcase_instance.content + os.linesep + os.linesep
                
                script_str = script_str + '    delete all cookies' + os.linesep + \
                                   '    close browser'
                                                               
                f = codecs.open(script_path, 'w', 'utf-8') 
                f.write(script_str)
                f.close()
                scripts[script_name] = script_path
                
            taskinfo = {}
            taskinfo['system'] = cur_system
            taskinfo['executor'] = data['executor']
            taskinfo['province'] = data['province']
            taskinfo['city'] = data['city']
            taskinfo_json = json.dumps(taskinfo)
            para = {'type': 'file'}
            para['path'] = script_path
            para['str'] = taskinfo_json
            para_list = []
            para_list.append(para)
            
            proxy = MyProxy(settings.CLUSTER_MASTER_URL)        
            if data['exectype'] == 'now':
                proxy.add_job('inspect', 'exec', para_list) 
                return HttpResponseRedirect('/createplansuccess1/')
            
            #周期性巡检计划
            task_instance = Task(test_suite = testsuite_instance, 
                                 executor = data['executor'], 
                                 system = cur_system_instance, 
                                 province = data['province'], 
                                 city = data['city'])
            task_instance.save()
            logger.info(u'巡检任务已存入数据库')
            
            hour = int(data['hour'])
            minute = int(data['minute'])
 
            exec_time = datetime.time(hour, minute)

            #用7位二进制数表示重复类型,例如每周一至周五运行,对应的二进制数为(0011111),对应的10进制数为31                       
            repeat_type = 0
            for item in data['repeat_type']:#data['repeat_type']的类型是字符型,范围为1~7
                i = int(item) - 1 #转换为整形,然后将范围调整为0~6
                repeat_type += 2**i
            #创建巡检计划实例                               
            plan_instance = Plan(task = task_instance, exec_time = exec_time, repeat_type = repeat_type)        
            plan_instance.save()  
            proxy.add_plan(hour, minute, repeat_type,'inspect', 'exec', para_list, plan_instance.id)
     
            logger.info(u'巡检计划已存入数据库')
                        
            return HttpResponseRedirect('/createplansuccess2/')
    else:
        form = PlanForm()
    return render_to_response('add_plan.html', {'form': form})
コード例 #5
0
def create_plan(request):
    '''
          完成巡检计划新增工作
    '''
    if request.method == 'POST':
        form = PlanForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            cur_system = request.COOKIES["system"]
            cur_system_instance = System.objects.get(name=cur_system)
            testsuite_instance = TestSuite.objects.get(
                name=data['test_suite_name'])
            #巡检脚本名称(通过系统实例id和测试套件id保证巡检脚本名称的唯一性)
            script_name = str(cur_system_instance.id) + '-' + str(
                testsuite_instance.id)
            #巡检脚本路径
            script_path = settings.SCRIPT_ROOT + cur_system_instance.english_name + str(
                testsuite_instance.id) + '.txt'
            logger.info(u'巡检脚本路径:' + script_path)
            if not os.path.exists(settings.SCRIPT_ROOT):
                os.makedirs(LOG_ROOT)

            if script_name not in scripts:
                logger.info(u'新建巡检脚本')

                script_str = '*** Settings ***' + os.linesep  \
                + 'Library           Selenium2Library'  + os.linesep  + os.linesep  \
                + '*** Variables ***' + os.linesep \
                + '${timeout}           ' + str(timeout) + os.linesep + os.linesep \
                + '*** Test Cases ***' + os.linesep

                #获得当前系统的所有测试用例
                candidate_test_cases = TestCase.objects.filter(
                    system=cur_system_instance)
                #将testsuite选中的测试用例名称按行分为列表
                testcase_list = testsuite_instance.testcases.split('\n')
                #去除最后一个空行
                testcase_list = testcase_list[:-1]

                for testcase_item in testcase_list:
                    #列表中的每一项的格式为'序号 测试用例名称'
                    testcase_name = testcase_item.split(' ')[1]
                    #去除换行符
                    testcase_name = testcase_name.strip('\r')
                    testcase_instance = candidate_test_cases.get(
                        name=testcase_name)
                    script_str = script_str + testcase_instance.name + os.linesep
                    script_str = script_str + testcase_instance.content + os.linesep + os.linesep

                script_str = script_str + '    delete all cookies' + os.linesep + \
                                   '    close browser'

                f = codecs.open(script_path, 'w', 'utf-8')
                f.write(script_str)
                f.close()
                scripts[script_name] = script_path

            taskinfo = {}
            taskinfo['system'] = cur_system
            taskinfo['executor'] = data['executor']
            taskinfo['province'] = data['province']
            taskinfo['city'] = data['city']
            taskinfo_json = json.dumps(taskinfo)
            para = {'type': 'file'}
            para['path'] = script_path
            para['str'] = taskinfo_json
            para_list = []
            para_list.append(para)

            proxy = MyProxy(settings.CLUSTER_MASTER_URL)
            if data['exectype'] == 'now':
                proxy.add_job('inspect', 'exec', para_list)
                return HttpResponseRedirect('/createplansuccess1/')

            #周期性巡检计划
            task_instance = Task(test_suite=testsuite_instance,
                                 executor=data['executor'],
                                 system=cur_system_instance,
                                 province=data['province'],
                                 city=data['city'])
            task_instance.save()
            logger.info(u'巡检任务已存入数据库')

            hour = int(data['hour'])
            minute = int(data['minute'])

            exec_time = datetime.time(hour, minute)

            #用7位二进制数表示重复类型,例如每周一至周五运行,对应的二进制数为(0011111),对应的10进制数为31
            repeat_type = 0
            for item in data[
                    'repeat_type']:  #data['repeat_type']的类型是字符型,范围为1~7
                i = int(item) - 1  #转换为整形,然后将范围调整为0~6
                repeat_type += 2**i
            #创建巡检计划实例
            plan_instance = Plan(task=task_instance,
                                 exec_time=exec_time,
                                 repeat_type=repeat_type)
            plan_instance.save()
            proxy.add_plan(hour, minute, repeat_type, 'inspect', 'exec',
                           para_list, plan_instance.id)

            logger.info(u'巡检计划已存入数据库')

            return HttpResponseRedirect('/createplansuccess2/')
    else:
        form = PlanForm()
    return render_to_response('add_plan.html', {'form': form})