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')
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'}
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)
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
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)
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")
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
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)
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'}
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)
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
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
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)
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")
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)
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
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
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'}
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'])
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')
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")
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)
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
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
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
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')
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
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")
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
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
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]) )
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)
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']}))
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)