Esempio n. 1
0
def save_new_test_case():
    log.log().logger.info(request)
    if request.method == 'GET':
        log.log().logger.info('post')
        return render_template("uitest/new_test_cases.html")
    if request.method == 'POST':
        info = request.form
        log.log().logger.info('info : %s' % info)
        name = viewutil.getInfoAttribute(info, 'name')
        module = viewutil.getInfoAttribute(info, 'module')
        description = viewutil.getInfoAttribute(info, 'description')
        steps = viewutil.getInfoAttribute(info, 'steps')
        log.log().logger.info("steps: %s" % steps)
        steps = steps.replace('"', "'")
        log.log().logger.info("steps: %s" % steps)
        type = viewutil.getInfoAttribute(info, 'type')
        if module == '' or name == '' or steps == '' or type == '':
            return '必填字段不得为空!'
        else:
            if type == '公共用例':
                isPublic = 1
            else:
                isPublic = 0
            test_case_manage.test_case_manage().new_test_case(
                module, name, steps, description, isPublic)
        # return render_template("test_cases.html")
        return redirect('test_cases')
Esempio n. 2
0
def getDevicesList():
    #获取列表
    from app.core import hubs
    list = hubs.hubs().getDevicesList()
    log.log().logger.info('list %s' % list)
    result = jsonify({'msg': list})
    return result, {'Content-Type': 'application/json'}
Esempio n. 3
0
def edit_user():
    if request.method == 'GET' and request.is_xhr:
        user_id = request.args.get('user_id')
        user = User.query.filter_by(id=user_id).first()
        return jsonify(user.to_json())
    elif request.method == 'POST' and request.is_xhr:
        edit_id = request.form.get('edit_id')
        edit_username = request.form.get('edit_username')
        edit_name = request.form.get('edit_name')
        edit_sex = request.form.get('edit_sex')
        edit_tel = request.form.get('edit_tel')
        edit_qq = request.form.get('edit_qq')
        edit_email = request.form.get('edit_email')
        _update = {
            "username": edit_username,
            "name": edit_name,
            "sex": edit_sex,
            "tel": edit_tel,
            "qq": edit_qq,
            "email": edit_email
        }
        User.query.filter_by(id=edit_id).update(_update)
        db.session.commit()
        logs = '更新用户 %s' % (_update)
        log('user', current_user.name, logs, datetime.now(),
            request.remote_addr)
        msg = {'status': 'ok', 'title': '更新用户', 'txt': '更新用户成功'}
        return jsonify(msg)
    else:
        abort(403)
Esempio n. 4
0
    def show_test_minders(self,conditionList, valueList, rows):
        fieldlist = ['id', 'module', 'name',  'description','content']
        search_value = fieldlist[0]
        for i in range(1,len(fieldlist)):
            search_value = search_value + ','+fieldlist[i]
        condition = ''
        for i in range(len(conditionList)):
            if valueList[i] !='':
                if conditionList[i]=='id':
                    condition += ' and %s = "%s"' %(conditionList[i],valueList[i])
                else:
                    condition += ' and '+str(conditionList[i]) +' like "%'+str(valueList[i])+'%"'
        results = []

        sql = 'select ' + search_value + ' from test_minder where status = 1 ' + str(condition) + ' order by id desc limit '+ str(rows)+';'
        print(sql)
        cases = useDB.useDB().search(sql)
        log.log().logger.info('cases : %s'%cases)
        for i in range(len(cases)):
            result = {}
            result['id'] = cases[i][0]
            result['module'] = cases[i][1]
            result['name'] = cases[i][2]
            result['description'] = cases[i][3]
            result['content'] = cases[i][4]
            results.append(result)
        return results
Esempio n. 5
0
def add_user():
    # 检查是否为ajax请求
    if request.method == 'POST':
        username = request.form.get('add_username', u'无用户名')
        pwd = request.form.get('add_password', u'无密码')
        name = request.form.get('add_name', u'无密码')
        sex = request.form.get('add_sex', '')
        qq = request.form.get('add_qq', '')
        email = request.form.get('add_email', u'无邮箱')
        tel = request.form.get('add_tel', '')
        if username and pwd:
            _user = User(username=username,
                         password=md5(pwd).hexdigest(),
                         name=name,
                         email=email,
                         sex=sex,
                         tel=tel,
                         qq=qq,
                         login_date=datetime.now())
            db.session.add(_user)
            db.session.commit()
            logs = '添加用户%s' % (name)
            log('user', current_user.name, logs, datetime.now(),
                request.remote_addr)
            msg = {'status': 'ok', 'title': '添加用户', 'txt': '添加用户成功'}
            return jsonify(msg)
        else:
            msg = {'status': 'error', 'title': '添加用户', 'txt': '添加用户失败'}
            return jsonify(msg)
    else:
        abort(403)
Esempio n. 6
0
def edit_test_suite():
    log.log().logger.info(request)
    if request.method == 'GET':
        log.log().logger.info('post')
        info = request.values
        log.log().logger.info('info :  %s' % info)
        id = viewutil.getInfoAttribute(info, 'id')
        log.log().logger.info('id: %s' % id)
        return render_template("uitest/edit_test_suite.html", id=id)
    if request.method == 'POST':
        info = request.form
        log.log().logger.info('info : %s' % info)
        id = viewutil.getInfoAttribute(info, 'id')
        name = viewutil.getInfoAttribute(info, 'name')
        run_type = viewutil.getInfoAttribute(info, 'run_type')
        description = viewutil.getInfoAttribute(info, 'description')
        if run_type == '' or name == '':
            message = '必填字段不得为空!'
            code = 500
        else:
            test_suite_manage.test_suite_manage().update_test_suite(
                id, ['name', 'run_type', 'description'],
                [name, run_type, description])
            message = 'success!'
            code = 200
        result = jsonify({'code': code, 'msg': message})
        return render_template("uitest/test_suite.html")
Esempio n. 7
0
def copy_test_case():
    log.log().logger.info(request)
    log.log().logger.info(request.method)
    # log.log().logger.info(request.value)
    if request.method == 'GET':
        log.log().logger.info('post')
        result = jsonify({'code': 500, 'msg': 'should be get!'})
        return result
    if request.method == 'POST':
        info = request.form
        log.log().logger.info('info :  %s' % info)
        id = viewutil.getInfoAttribute(info, 'id')
        log.log().logger.info(id)
        if id == '':
            result = jsonify({'code': 500, 'msg': 'test case is not found!'})
        else:
            result0 = test_case_manage.test_case_manage().copy_test_case(id)
            if result0:
                result = jsonify({'code': 200, 'msg': 'copy success!'})
            else:
                result = jsonify({
                    'code': 500,
                    'msg': 'test case is not found!'
                })
        return result
Esempio n. 8
0
def test_api_single_test_page():
    log.log().logger.info(request)
    if request.method == 'GET':
        log.log().logger.info(request.values)
        info = request.values
        id = viewutil.getInfoAttribute(info, 'id')
        return render_template('apinew/test_api_case_new_run.html', id=id)
Esempio n. 9
0
def copy_test_minder():
    log.log().logger.info(request)
    if request.method == 'GET':
        log.log().logger.info('post')
        return redirect("test_minders")
    if request.method == 'POST':
        info = request.values
        log.log().logger.info('info :%s' %info)
        id = viewutil.getInfoAttribute(info,'id')
        print(id)
        if id == '' :
            message =  '必填字段不得为空!'
            code = 500
        else:
            result = test_minder_manage.test_minder_manage().copy_test_minder(id)
            if result['code']:
                message = 'success!'
                code = 200
                id = result['id']
            else:
                message = 'error!'
                code = 500

        result = jsonify({'code': code, 'msg': message,'id':id})
        log.log().logger.info(result)
        log.log().logger.info('code is : %s'%code)
        return result,{'Content-Type': 'application/json'}
Esempio n. 10
0
def domain_status():
    if request.is_xhr:
        id = request.form.get('id')
        val = int(request.form.get('val'))
        if id:
            _dns = Dns.query.filter_by(id=id).first()
            _dns.status = val
            db.session.commit()
            if val == 0:
                logs = '暂停解析:域名%s,主机记录%s' % (_dns.zone, _dns.host)
                msg = {
                    'status': 'ok',
                    'title': '暂停解析',
                    'txt': '暂停解析成功',
                    'zone': _dns.zone
                }
            else:
                logs = '启用解析:域名%s,主机记录%s' % (_dns.zone, _dns.host)
                msg = {
                    'status': 'ok',
                    'title': '启用解析',
                    'txt': '启用解析成功',
                    'zone': _dns.zone
                }
            log('domain',
                current_user.name,
                logs,
                datetime.now(),
                request.remote_addr,
                zone=_dns.zone)
            return jsonify(msg)
        else:
            abort(403)
    abort(403)
Esempio n. 11
0
    def show_unittest_records(self, conditionList, valueList, fieldlist, rows):
        if len(fieldlist) == 0:
            fieldlist = ['id', 'name', 'start_time', 'end_time', 'file_name']
        search_value = fieldlist[0]
        for i in range(1, len(fieldlist)):
            search_value = search_value + ',' + fieldlist[i]
        condition = ''
        for i in range(len(conditionList)):
            if i == 0:
                condition += str(conditionList[i]) + ' like "%' + str(
                    valueList[i]) + '%"'
            else:
                condition += ' and ' + str(
                    conditionList[i]) + ' like "%' + str(valueList[i]) + '%"'

        results = []

        sql = 'select ' + search_value + ' from unittest_record where ' + str(
            condition) + 'order by id desc limit ' + str(rows) + ';'
        cases = useDB.useDB().search(sql)
        log.log().logger.info('cases : %s' % cases)
        for i in range(len(cases)):
            result = {}
            result['id'] = cases[i][0]
            result['name'] = cases[i][1]
            result['start_time'] = cases[i][2].strftime('%Y-%m-%d %H:%M:%S')
            result['end_time'] = cases[i][3].strftime('%Y-%m-%d %H:%M:%S')
            result['file_name'] = cases[i][4]
            results.append(result)
        # log.log().logger.info(results)
        return results
Esempio n. 12
0
 def show_test_batch(self, conditionList, valueList, fieldlist, rows):
     if len(fieldlist) == 0:
         fieldlist = [
             'id', 'test_case_id', 'name', 'status', 'steps', 'runtime',
             'message', 'screenshot', 'test_suite_id', 'ip', 'browser_type'
         ]
     search_value = fieldlist[0]
     for i in range(1, len(fieldlist)):
         search_value = search_value + ',' + fieldlist[i]
     condition = ''
     search_type1 = ''
     search_type2 = ''
     for i in range(len(conditionList)):
         if str(conditionList[i]) == 'id':
             search_type1 = '="'
             search_type2 = '"'
         else:
             search_type1 = ' like "%'
             search_type2 = '%"'
         if i == 0:
             condition += str(conditionList[i]) + search_type1 + str(
                 valueList[i]) + search_type2
             # condition += str(conditionList[i]) + ' like "%' + str(valueList[i]) + '%"'
         else:
             condition += ' and ' + str(
                 conditionList[i]) + search_type1 + str(
                     valueList[i]) + search_type2
             # condition += ' and ' + str(conditionList[i]) + ' like "%' + str(valueList[i]) + '%"'
     results = []
     sql = 'select ' + search_value + ' from test_batch where ' + str(
         condition) + ' order by id desc limit ' + str(rows) + ';'
     cases = useDB.useDB().search(sql)
     log.log().logger.info('cases : %s ' % cases)
     for i in range(len(cases)):
         result = {}
         for j in range(len(fieldlist)):
             if fieldlist[j] == 'runtime' and cases[i][j] is not None:
                 result0 = cases[i][j].strftime('%Y-%m-%d %H:%M:%S')
             elif fieldlist[j] == 'status':
                 if cases[i][3] == 0:
                     result0 = '0-待执行'
                 elif cases[i][3] == 1:
                     result0 = '1-执行成功'
                 elif cases[i][3] == 4:
                     result0 = '4-执行中'
                 elif cases[i][3] == 2:
                     result0 = '2-执行失败'
                 elif cases[i][3] == 3:
                     result0 = '3-无法执行'
                 elif cases[i][3] == -1:
                     result0 = '-1-默认'
                 else:
                     result0 = cases[i][3]
             else:
                 result0 = cases[i][j]
             result[fieldlist[j]] = result0
         results.append(result)
     log.log().logger.info("results is :%s" % results)
     return results
Esempio n. 13
0
 def new_test_batch(self,test_suite_id, test_case_id,name, steps,browser_type='Chrome'):
     log.log().logger.info('%s,%s,%s,%s' %(test_case_id,test_suite_id,name,steps))
     steps.replace('"','""')
     import re
     steps = re.sub('"', '""', steps)
     sql = string.Template('insert into test_batch (test_suite_id, test_case_id, name,steps,browser_type) values ("$test_suite_id","$test_case_id","$name","$steps","$browser_type");')
     sql = sql.substitute(test_suite_id = test_suite_id, test_case_id = test_case_id,steps=steps, name = name,browser_type=browser_type)
     useDB.useDB().insert(sql)
Esempio n. 14
0
 def wrapper():
     user = session.get('user', None)
     if user:
         log.log().logger.info("已登录")
         return fn()
     else:
         log.log().logger.info("未登录")
         return render_template("util/login.html")
Esempio n. 15
0
def update_zone():
    if request.method == 'GET' and request.is_xhr:
        id = request.args.get('id')
        if id:
            _dns = Dns.query.filter_by(id=id).first()
            _dnss = {
                'id': _dns.id,
                'zone': _dns.zone,
                'host': _dns.host,
                'type': _dns.type,
                'data': _dns.data,
                'ttl': _dns.ttl,
                'view': _dns.view
            }
            return jsonify(_dnss)
        else:
            abort(403)
    elif request.method == 'POST' and request.is_xhr:
        id = request.form.get('edit_id')
        zone = request.form.get('edit_zone')
        host = request.form.get('edit_host')
        _type = request.form.get('edit_type')
        view = request.form.get('edit_view')
        data = request.form.get('edit_data')
        ttl = request.form.get('edit_ttl')
        if host is None and _type is None and view is None and data is None and ttl is None and zone is None:
            abort(403)
        else:
            _dns = Dns.query.filter_by(id=id).first()
            _update = {
                "zone": zone,
                "host": host,
                "type": _type,
                "view": view,
                "data": data,
                "ttl": ttl
            }
            Dns.query.filter_by(id=id).update(_update)
            db.session.commit()
            logs = '更新解析:原主机记录:%s,原记录类型:%s,原线路类型:%s,原记录值:%s,TTL(秒):%s' % (
                _dns.host, _dns.type, _dns.view, _dns.data, _dns.ttl)
            _logs = '新主机记录:%s,新记录类型:%s,新线路类型:%s,新记录值:%s,新TTL(秒):%s' % (
                host, _type, view, data, ttl)
            log('domain',
                current_user.name,
                logs + _logs,
                datetime.now(),
                request.remote_addr,
                zone=zone)
            msg = {
                'status': 'ok',
                'title': '添加解析',
                'txt': '添加解析成功',
                'zone': '/domain_list/' + zone
            }
            return jsonify(msg)
    else:
        abort(403)
Esempio n. 16
0
 def show_test_keywords_options(self):
     results = []
     sql = 'select keyword from test_keyword where status = 1 ;'
     cases = useDB.useDB().search(sql)
     print(cases)
     log.log().logger.info('cases : %s' % cases)
     for i in range(len(cases)):
         results.append(cases[i][0])
     return results
Esempio n. 17
0
 def show_test_public_cases(self):
     results = []
     sql = 'select name from test_case where status = 1 and isPublicFunction = 1 ;'
     cases = useDB.useDB().search(sql)
     print(cases)
     log.log().logger.info('cases : %s' % cases)
     for i in range(len(cases)):
         results.append(cases[i][0])
     return results
Esempio n. 18
0
def add_hub():
    info = request.values
    log.log().logger.info('info : %s' % info)
    host = viewutil.getInfoAttribute(info, 'host')
    port = viewutil.getInfoAttribute(info, 'port')
    status = viewutil.getInfoAttribute(info, 'status')
    hubs.hubs().updateHub(host, port, '0', status)
    result = jsonify({'code': 200, 'msg': '新增成功'})
    return result, {'Content-Type': 'application/json'}
Esempio n. 19
0
def downloadFiles(job_dict):

    log_to_terminal('Dropbox Queue Handler: Downloading images', job_dict['socketid'])

    client = dropbox.client.DropboxClient(job_dict['dropbox_token'])
    try:
        folder_metadata = client.metadata(job_dict['dropbox_path'])
    except Exception as e:
        log_and_exit('Path: ' + job_dict['dropbox_path'] + ' not found', job_dict['socketid'])
        return

    log(job_dict['dropbox_path'], downloadFiles.__name__)
    log(job_dict['dropbox_token'], downloadFiles.__name__)

    for content in folder_metadata['contents']:
        if content['is_dir'] is False and 'image' in str(content['mime_type']):
            file, file_metadata = client.get_file_and_metadata(content['path'])

            rel_path = ntpath.dirname(str(content['path'])).lstrip('/')
            log_to_terminal(os.path.join(job_dict['storage_path'] ,rel_path , ntpath.basename(content['path'])),
                            job_dict['socketid'])

            if not os.path.exists(os.path.join(job_dict['storage_path'], rel_path)):
                os.makedirs(os.path.join(job_dict['storage_path'],  rel_path))
                os.chmod(os.path.join(job_dict['storage_path'] , rel_path), 0775)

            img = Image.open(StringIO(file.read()))
            img.save(os.path.join(job_dict['storage_path'], rel_path,
                                  ntpath.basename(content['path'])),
                                  file_metadata['mime_type'].split('/')[1])


    try:
        job_obj = Job()
        for k,v in job_dict.iteritems():
            setattr(job_obj, k, v)

        log(str(job_dict['storage_path'] + job_dict['dropbox_path'].strip('/')), 'directory')

        if job_obj.count is None or int(job_obj.count) <= 0:
            count = 0
            for name in os.listdir(os.path.join(job_dict['storage_path'], job_dict['dropbox_path'].strip('/'))):
                log(str(name), 'name')
                if os.path.isfile(os.path.join(job_dict['storage_path'], job_dict['dropbox_path'].strip('/'),  name)):
                    count +=1
                    log(str(name), 'name')
            job_obj.count = count

        # log_to_terminal('JobID: ' + str(job_obj.jobid), job_obj.socketid)
        # log_to_terminal('Count: ' + str(job_obj.count), job_obj.socketid)

        core_execute.execute(job_obj, os.path.join(job_dict['storage_path'], job_dict['dropbox_path'].strip('/')), 'dropbox')
    except Exception as e:
        print str(traceback.format_exc())
        log_and_exit(str(traceback.format_exc()), job_dict['socketid'])
Esempio n. 20
0
def save_new_test_keyword():
    log.log().logger.info(request)
    info = request.form
    log.log().logger.info('info : %s' %info)
    name = viewutil.getInfoAttribute(info,'name')
    paraCount = viewutil.getInfoAttribute(info,'paraCount')
    description = viewutil.getInfoAttribute(info,'description')
    template = viewutil.getInfoAttribute(info,'template')
    example = viewutil.getInfoAttribute(info, 'example')
    result0 = test_keyword_manage.test_keyword_manage().new_test_keyword(name, paraCount, description, template,example)
    return redirect('/testkeywords')
Esempio n. 21
0
def view_unitest_results():
    info = request.values
    log.log().logger.info('info : %s' %info)
    id = viewutil.getInfoAttribute(info, 'id')
    # from app import test_unittest_manage
    data = test_unittest_manage.test_unittest_manage().show_unittest_records(['id'], [id], [], 100)
    if len(data):
        filename = data[0]['file_name']
        return render_template("reports/"+filename)
    else:
        return render_template("util/unittest_records.html")
Esempio n. 22
0
    def copy_test_batch(self, new_test_suite_id, old_test_suite_id):
        sql = 'select test_case_id from test_batch where test_suite_id = "%s";' % old_test_suite_id
        result = useDB.useDB().search(sql)
        log.log().logger.info(result)
        idList = []
        if len(result):
            for id in result:
                log.log().logger.info(id)
                idList.append(id[0])

        return self.batch_new_testcase(new_test_suite_id, idList)
Esempio n. 23
0
 def show_test_suites(self, conditionList, valueList, fieldlist, rows):
     fieldlist = []
     if len(fieldlist) == 0:
         fieldlist = [
             'id', 'name', 'status', 'run_type', 'description', 'batchId'
         ]
     search_value = fieldlist[0]
     log.log().logger.info(fieldlist)
     for i in range(1, len(fieldlist)):
         search_value = search_value + ',' + fieldlist[i]
     condition = ''
     for i in range(len(conditionList)):
         if i == 0:
             condition += str(conditionList[i]) + ' like "%' + str(
                 valueList[i]) + '%"'
         else:
             condition += ' and ' + str(
                 conditionList[i]) + ' like "%' + str(valueList[i]) + '%"'
     results = []
     sql = 'select ' + str(search_value) + ' from test_suite where ' + str(
         condition) + ' and isDeleted = 0 order by id desc limit ' + str(
             rows) + ';'
     cases = useDB.useDB().search(sql)
     log.log().logger.info('cases : %s ' % cases)
     for i in range(len(cases)):
         result = {}
         result['id'] = cases[i][0]
         result['name'] = cases[i][1]
         if cases[i][2] == 0:
             status = '0-准备执行'
         elif cases[i][2] == 1:
             status = '1-执行完成'
         elif cases[i][2] == 2:
             status = '2-执行中'
         elif cases[i][2] == -1:
             status = '未执行'
         else:
             status = 'unknown'
         result['status'] = status
         if cases[i][3] == '0':
             run_type = 'Android'
         elif cases[i][3] == '1':
             run_type = 'iOS'
         elif cases[i][3] == '2':
             run_type = 'Chrome'
         else:
             run_type = cases[i][3]
         result['run_type'] = run_type
         result['description'] = cases[i][4]
         result['batchId'] = cases[i][5]
         results.append(result)
     # log.log().logger.info(results)
     return results
Esempio n. 24
0
def parseParameters(params):
    params = str(params)
    log(params, parseParameters.__name__)
    pat = re.compile('u\'[\w\s,]*\'')
    decoded_params = ''
    end = 0
    for i in pat.finditer(str(params)):
        decoded_params = decoded_params + params[end:i.start()] + '"' + params[i.start() + 2:i.end() - 1] + '"'
        end = i.end()
    decoded_params += params[end:]
    log(decoded_params, parseParameters.__name__)
    dict = json.loads(decoded_params)
    return dict
Esempio n. 25
0
def parseParameters(params):
    params = str(params)
    log(params, parseParameters.__name__)
    pat = re.compile('u\'[\w\s,]*\'')
    decoded_params = ''
    end = 0
    for i in pat.finditer(str(params)):
        decoded_params = decoded_params + params[end:i.start(
        )] + '"' + params[i.start() + 2:i.end() - 1] + '"'
        end = i.end()
    decoded_params += params[end:]
    log(decoded_params, parseParameters.__name__)
    dict = json.loads(decoded_params)
    return dict
Esempio n. 26
0
def test_batch_detail_report():
    REMOTE_HOST = "https://pyecharts.github.io/assets/js"
    bar = pyecharts.Pie()
    bar.width = 700
    bar.height = 400
    log.log().logger.info(request)
    if request.method == 'GET':
        log.log().logger.info('post')
        info = request.values
        log.log().logger.info('info :  %s' % info)
        id = viewutil.getInfoAttribute(info, 'test_suite_id')
        log.log().logger.info('id: %s' % id)
        statusList = test_batch_manage.test_batch_manage(
        ).show_test_batch_status(id)
        nameList, valueList = bar.cast(statusList)
        bar.add("results", ['失败', '待执行', '执行中', '成功'],
                valueList[0:4],
                is_more_utils=True,
                is_area_show=True,
                is_label_show=True,
                legend_pos="50%")
        return render_template("uitest/test_batch_detail_report.html",
                               id=id,
                               myechart=bar.render_embed(),
                               host=REMOTE_HOST,
                               script_list=bar.get_js_dependencies())
        # return render_template("uitest/test_batch_report.html", id=id)
    else:
        return render_template('test_suite.html')
Esempio n. 27
0
 def batch_new_testcase(self,
                        test_suite_id,
                        test_case_id_list,
                        browser_type_list=['']):
     support_browser = ['Chrome', 'Firefox', '']
     run_type = test_suite_manage.test_suite_manage().search_test_suite(
         test_suite_id, 'run_type')
     if run_type == 'Chrome':
         test_case_id_list = self.remove_android(test_case_id_list)
     log.log().logger.info('%s, %s' %
                           (test_case_id_list, len(test_case_id_list)))
     if len(test_case_id_list) == 0:
         result = 0
     else:
         for test_case_id in test_case_id_list:
             steps = test_case_manage.test_case_manage().search_test_case(
                 [test_case_id], ['name', 'steps'])
             log.log().logger.info('%s, %s, %s' %
                                   (steps, steps[0][0], steps[0][1]))
             if len(steps):
                 for browser_type in browser_type_list:
                     if browser_type not in support_browser:
                         log.log().logger.info(
                             '%s browser is not support!' % browser_type)
                     else:
                         self.new_test_batch(test_suite_id,
                                             test_case_id,
                                             steps[0][0],
                                             steps[0][1],
                                             browser_type=browser_type)
             else:
                 log.log().logger.info('test case not exist!')
             result = 1
     return result
Esempio n. 28
0
def test_case_runhistory_report2():
    REMOTE_HOST = "https://pyecharts.github.io/assets/js"
    bar = pyecharts.Pie()
    bar.add("Sports",
            ["Football", "Basketball", "Baseball", "Tennis", "Swimming"],
            [23, 34, 45, 56, 67],
            is_more_utils=True)

    log.log().logger.info(request)
    if request.method == 'GET':
        log.log().logger.info('post')
        info = request.values
        log.log().logger.info('info :  %s' % info)
        id = viewutil.getInfoAttribute(info, 'id')
        log.log().logger.info('id: %s' % id)
        if len(test_case_manage.test_case_manage().show_test_cases(['id'],
                                                                   [id], [],
                                                                   2)) == 1:
            return render_template("uitest/test_batch_result.html",
                                   id=id,
                                   type='test_case',
                                   test_suite_id='',
                                   myechart=bar.render_embed(),
                                   host=REMOTE_HOST,
                                   script_list=bar.get_js_dependencies())
        else:
            return render_template("uitest/test_cases.html")
    else:
        return render_template("uitest/test_cases.html")
Esempio n. 29
0
 def remove_android(self, test_case_id_list):
     caseList = ''
     for i in range(len(test_case_id_list)):
         if i:
             caseList = caseList + ',' + str(test_case_id_list[i])
         else:
             caseList = caseList + str(test_case_id_list[i])
     sql = 'select id from test_case where module !="android" and id in (%s);' % caseList
     result = useDB.useDB().search(sql)
     log.log().logger.info(result)
     newIdList = []
     for id in result:
         newIdList.append(id[0])
     log.log().logger.info(newIdList)
     return newIdList
Esempio n. 30
0
 def show_test_cases_unattach(self, test_suite_id, conditionList, valueList,
                              fieldlist, rows):
     fieldlist = [
         'id', 'module', 'name', 'steps', 'description', 'isPublicFunction'
     ]
     search_value = fieldlist[0]
     for i in range(1, len(fieldlist)):
         search_value = search_value + ',' + fieldlist[i]
     results = []
     log.log().logger.info(
         '%s, %s, %s, %s, %s' %
         (test_suite_id, conditionList, valueList, fieldlist, rows))
     condition = ''
     for i in range(len(conditionList)):
         if i == 0:
             if conditionList[i] == 'module':
                 log.log().logger.info(valueList[i])
                 moduleList = ''
                 for j in range(len(valueList[i])):
                     if j:
                         moduleList += ','
                     moduleList += '"' + valueList[i][j] + '"'
                 condition += str(
                     conditionList[i]) + ' in (' + str(moduleList) + ')'
             else:
                 condition += str(conditionList[i]) + ' like "%' + str(
                     valueList[i]) + '%"'
         else:
             if conditionList[i] == 'module':
                 log.log().logger.info(valueList[i])
                 moduleList = ''
                 for j in range(len(valueList[i])):
                     if j:
                         moduleList += ','
                     moduleList += '"' + valueList[i][j] + '"'
                 condition += ' and ' + str(
                     conditionList[i]) + ' in (' + str(moduleList) + ')'
             else:
                 condition += ' and ' + str(
                     conditionList[i]) + ' like "%' + str(
                         valueList[i]) + '%"'
     if condition != '':
         condition += ' and '
     sql = 'select ' + search_value + ' from test_case where status = 1 and isPublicFunction=0 and ' + str(
         condition
     ) + ' id not in (select distinct test_case_id from test_batch where test_suite_id = ' + test_suite_id + ' )  order by module desc;'
     cases = useDB.useDB().search(sql)
     log.log().logger.info('cases : %s' % cases)
     for i in range(len(cases)):
         result = {}
         result['id'] = cases[i][0]
         result['module'] = cases[i][1]
         result['name'] = cases[i][2]
         result['steps'] = cases[i][3]
         result['description'] = cases[i][4]
         result['isPublic'] = cases[i][5]
         results.append(result)
     return results
Esempio n. 31
0
 def rerun_test_batch(self,id, type):
     if type =='all':
         sql = 'select id,test_case_id from test_batch where test_suite_id = %s ;' % str(id)
     elif type == 'part':
         sql = 'select id,test_case_id from  test_batch where test_suite_id = %s and status in (2,3,4);' % (str(id))
     result = useDB.useDB().search(sql)
     if len(result):
         for case in result:
             steps = useDB.useDB().search('select steps from test_case where id = %s;' %case[1])
             if len(steps):
                 steps=steps[0][0]
                 steps.replace('"', '""')
                 import re
                 steps = re.sub('"', '""', steps)
                 useDB.useDB().insert('update test_batch set status=0, steps = "%s" where id = %s ;' % (steps,case[0]) )
                 log.log().logger.info('update test_batch set status=0, steps = "%s" where id = %s ;' % (steps,case[0]) )
Esempio n. 32
0
 def new_test_batch_IP(self, test_suite_id, test_case_id, name, steps, ip):
     log.log().logger.info('%s,%s,%s,%s' %
                           (test_case_id, test_suite_id, name, steps))
     steps.replace('"', '""')
     import re
     steps = re.sub('"', '""', steps)
     steps = str(steps).replace('\\', '\\\\')
     sql = string.Template(
         'insert into test_batch (test_suite_id, test_case_id, name,steps,ip) values ("$test_suite_id","$test_case_id","$name","$steps","$ip");'
     )
     sql = sql.substitute(test_suite_id=test_suite_id,
                          test_case_id=test_case_id,
                          steps=steps,
                          name=name,
                          ip=ip)
     useDB.useDB().insert(sql)
Esempio n. 33
0
def run(parsed_dict, mlab_obj):

    try:
        if 'dropbox_token' not in parsed_dict or parsed_dict['dropbox_token']=='None':
            parsed_dict['dropbox_token'] = None

        global jobid

        jobid = str(parsed_dict['jobid'])
        userid = str(parsed_dict['userid'])
        socketid = str(parsed_dict['socketid'])
        image_path = parsed_dict['image_path']
        result_path = str(parsed_dict['result_path'])

        list = None
        flag = None
        server = None

        dict_of_param = createList(image_path, parsed_dict)
        if 'dict' in dict_of_param:
            list = dict_of_param['dict']
        if 'flag' in dict_of_param:
            flag = dict_of_param['flag']
        if 'server' in dict_of_param:
            server = dict_of_param['server']

        log(list, "__main__")

        token = parsed_dict['token']
        result_url = parsed_dict['url'] + '/results/'
        result_path += '/results'
        source_type = parsed_dict['source_type']
        db_token = parsed_dict['dropbox_token']

        r.publish('chat', json.dumps({'error': str(parsed_dict), 'socketid': parsed_dict['socketid']}))

        if parsed_dict['exec'] == 'ImageStitch':
            output = run_executable(list)
            sendsMessageToRedis(userid, jobid, source_type, socketid, output, result_path, result_url,
                                dropbox_token=db_token)
            r.publish('chat', json.dumps({'message': str('Image Stitching done'), 'socketid': str(socketid), 'token': token, 'jobid': jobid}))


        elif(parsed_dict['exec'] == 'VOCRelease5'):
            #output = run_executable(list)
            output = run_matlab_code(mlab_obj, '/var/www/html/cloudcv/voc-dpm-matlab-bridge/pascal_object_detection.m', list, parsed_dict['socketid'])
            sendsMessageToRedis(userid, jobid, source_type, socketid, output, result_path, result_url,
                                dropbox_token=db_token)
            r.publish('chat', json.dumps({'message': str('Bounding Boxes Generated'), 'socketid': str(socketid), 'token': token, 'jobid': jobid}))

        elif(parsed_dict['exec'] == 'classify'):
            run_classification(parsed_dict['userid'], parsed_dict['jobid'], parsed_dict['image_path'],
                               parsed_dict['socketid'], parsed_dict['token'], parsed_dict['source_type'],result_path,
                               db_token=db_token)

        elif(parsed_dict['exec'] == 'features'):
            if server == 'decaf_server':
                r.publish('chat', json.dumps({'error': str('Starting Feature Generation'), 'socketid': str(socketid)}))
                r.publish('decaf_server_queue', json.dumps({'dir': parsed_dict['image_path'], 'flag': flag, 'socketid': parsed_dict['socketid'], 'jobid': str(jobid)}))

                while(True):
                    if r.hget(jobid, 'status') == 'done':
                        r.publish('chat', json.dumps({'error': str('Status: Done'), 'socketid': str(socketid)}))
                        sendsMessageToRedis(userid, jobid, source_type, socketid, '', result_path, result_url,
                                    dropbox_token=db_token)
                        r.publish('chat', json.dumps({'message': str('Features Generated'), 'socketid': str(socketid), 'token': token, 'jobid': jobid}))
                        break
                    else:
                        r.publish('chat', json.dumps({'error': str('Status: Still Running'), 'socketid': str(socketid)}))
                        print "Status not yet set"
                        log('Status not yet set', '__main__')
                        time.sleep(2)

            else:
                r.publish('chat', json.dumps({'error': str('Not decaf_server'), 'socketid': str(socketid)}))
                output = ''
                if(list['featList'] != ''):
                    #output += run_executable(list) + '\n'
                    output += run_matlab_code(mlab_obj, '/cloudcv/SUN_py/code/scene_sun/extractFeatPy.m', list, parsed_dict['socketid'])
                list_decaf = ['python', '/var/www/html/cloudcv/fileupload/executable/decaf_cal_feature.py', image_path, result_path, str(flag), parsed_dict['socketid']]
                output += run_executable(list_decaf, live=False, socketid=parsed_dict['socketid'])
                sendsMessageToRedis(userid, jobid, source_type, socketid, output, result_path, result_url,
                                    dropbox_token=db_token)
                r.publish('chat', json.dumps({'message': str('Features Generated'), 'socketid': str(socketid), 'token': token, 'jobid': jobid}))

    except Exception as e:
        print str(e)
        log(e, '__main__')
        r.publish('chat', json.dumps({'error': str(traceback.format_exc()), 'socketid': parsed_dict['socketid']}))
Esempio n. 34
0
def run(parsed_dict):
    socketid = str(parsed_dict['socketid'])
    try:
        if 'dropbox_token' not in parsed_dict or parsed_dict['dropbox_token']=='None':
            parsed_dict['dropbox_token'] = None

        global jobid

        jobid = str(parsed_dict['jobid'])
        userid = str(parsed_dict['userid'])

        image_path = parsed_dict['image_path']
        result_path = str(parsed_dict['result_path'])

        list = None
        flag = None
        server = None

        dict_of_param = createList(image_path, parsed_dict)
        if 'dict' in dict_of_param:
            list = dict_of_param['dict']
        if 'flag' in dict_of_param:
            flag = dict_of_param['flag']
        if 'server' in dict_of_param:
            server = dict_of_param['server']

        log(list, "__main__")

        token = parsed_dict['token']

        result_url = os.path.join(parsed_dict['url'], 'results')
        result_path = os.path.join(result_path, 'results')
        source_type = parsed_dict['source_type']
        db_token = parsed_dict['dropbox_token']

        if parsed_dict['exec'] == 'ImageStitch':
            print "Image Stitching running"
            output = run_executable(list, True, socketid)
            sendsMessageToRedis(userid, jobid, source_type, socketid, output, result_path, result_url,
                                dropbox_token=db_token)
            r.publish('chat', json.dumps({'done': str('Image Stitching done'), 'socketid': str(socketid), 'token': token, 'jobid': jobid}))


        elif(parsed_dict['exec'] == 'VOCRelease5'):
            # output = run_executable(list)
            output = run_matlab_code(mlab_obj, '/var/www/html/cloudcv/voc-dpm-matlab-bridge/pascal_object_detection.m', list, parsed_dict['socketid'])
            sendsMessageToRedis(userid, jobid, source_type, socketid, output, result_path, result_url,
                                dropbox_token=db_token)
            r.publish('chat', json.dumps({'message': str('Bounding Boxes Generated'), 'socketid': str(socketid), 'token': token, 'jobid': jobid}))

        elif(parsed_dict['exec'] == 'classify'):
            run_classification(parsed_dict['userid'], parsed_dict['jobid'], parsed_dict['image_path'],
                               parsed_dict['socketid'], parsed_dict['token'], parsed_dict['source_type'],result_path,
                               db_token=db_token)

        elif(parsed_dict['exec'] == 'features'):
            print result_url
            tags = {}
            matlabfilepath = decaf_cal_feature.calculate_decaf(parsed_dict['image_path'], result_path,3,socketid, tags)
            sendsMessageToRedis(userid, jobid, source_type, socketid, '', result_path, result_url,
                                    dropbox_token=db_token)
            r.publish('chat', json.dumps({'done': str('Features Generated'),
                                          'socketid': str(socketid), 'token': token, 'jobid': jobid}))

    except Exception as e:
        log_and_exit(str(traceback.format_exc()), socketid)