前言
公司急速扩展壮大,新员工对于性能的掌握及其有限,即使告诉他需要打什么数据,打多少量的数据,都要不断的进行指导,本工程对接的意义在于减少新员工学习成本,可以让新员工能迅速上手打压数据干活,从中再去慢慢理解脚本和其实现原理。
一、先上成果
界面及其建议,用最简单的html写成,底下具体过程会贴code。使用方式:输入系统基本信息,paas和saas以及mysql用户名密码,点击下方输入框或下拉框以及功能块的提交,即可直接对应数据量的打压,实现对应业务的数据。由于是半成品,界面简单粗糙,先实现了模型,后领导并不大力支持,于是搁置。
二、dangjo工程结构
主要内容就是django工程,外加对接的数据构造脚本(addData.py)。
三、对接原理
1.addData存放构造数据脚本
# -*- coding:utf-8 -*-
"""
使用说明:本文件配合func_vsl-2.0.0-py3.8.egg和TesterTools-2.2.0-py3.7.egg使用
主要用来添加或删除组织和设备,添加设备前需添加好组织,设备会平均分散在各个组织,删除组织前需先删除设备
"""
from func_vsl.vsl_func.rf_vsl import *
"""
平台及数据库参数基本配置
Username 平台用户名
Password 平台密码
ServiceIp 平台服务器ip
ServicePort 平台端口
db_ip nms数据库ip(新版本数据库已合并,同平台一致)
db_user 数据库用户
db_passwd 数据库密码
"""
genrator = GenerateData(Username='system', Password='system123', ServiceIp='10.80.59.141', ServicePort='8320',
db_ip='10.80.59.141', db_user='DHCloudkR', db_passwd='Cloud0#w8qNzCFA')
# 设置添加省组织是陕西省'61',组织默认添加4级
genrator.set_org('61')
# 插入组织,4级下级组织会一并插入
genrator.insert_orgs()
# 添加设备,参数为添加设备的数量
genrator.add_many_devices(10)
# 删除设备
genrator.delete_dev()
# 删除组织
genrator.delete_org(u'自动化测试省')
例如这一段,是构造添加组织和设备的数据构造脚本。
2.views调用addData或models实现业务逻辑
```python
from time import sleep
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
from func_vsl.vsl_func.rf_vsl import *
from addData.addData import genrator
status = ''
def homepage(request):
return redirect('/nms/')
def nms(request):
global status
return render(request, 'nms/nms.html', {'status': status})
from django.shortcuts import redirect
# 添加设备
def add_org(request):
"""
平台及数据库参数基本配置
Username 平台用户名
Password 平台密码
ServiceIp 平台服务器ip
ServicePort 平台端口
db_ip nms数据库ip(新版本数据库已合并,同平台一致)
db_user 数据库用户
db_passwd 数据库密码
"""
# genrator = GenerateData(Username='system', Password='Gauss@234', ServiceIp='10.80.50.58', ServicePort='8320',
# db_ip='10.80.50.5', db_user='DHCloudMq', db_passwd='Cloud0#Mmp9sQNx')
print('添加组织')
try:
global status
status = '添加中,请勿重复点击'
return redirect('/nms/')
# return HttpResponse('正在添加,稍安勿躁;继续其他操作')
finally:
# 设置添加省组织是陕西省'61',组织默认添加4级
genrator.set_org('61')
return redirect('/nms/')
3.urls指向你访问的网页
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$',views.homepage),
url(r'^addorg/$', views.add_org),
url(r'^nms/$', views.nms),
url(r'^nms/$', views.nms),
]
4.templates负责界面展示给用户
例,贴nms.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>智能运维性能脚本</title>
</head>
<body>
<h1 align="center">智能运维性能脚本</h1>
<h3>系统基本信息</h3>
<form action="#" method="POST">
vsl用户名
<input type="text" name="vsl_user">
vsl密码
<input type="text" name="vsl_passwd">
<br/>
nms用户名
<input type="text" name="nms_user">
nms密码
<input type="text" name="nms_passwd">
<br/>
mysql用户名
<input type="text" name="mysql_user">
mysql密码
<input type="text" name="mysql_passwd">
</form>
<h4>1.设备操作</h4>
<form action="/addorg/" method="GET">
添加 <select>
<option value="shanxi">陕西省</option>
</select>组织
<input type="submit" value="提交">
{{status}}
</form>
<form action="#" method="POST">
输入添加数量(建议少于1w)
<input type="text" name="dev_num">
<input type="submit" value="提交">
</form>
<form action="#" method="POST">
添加设备唯一编码(全部设备)
<!-- <input type="text" name="num"> -->
<input type="submit" value="提交">
<h4>2.工单</h4>
</form>
<form action="#" method="POST">
添加工单(数量)
<input type="text" name="workflow_num">
<input type="submit" value="提交">
</form>
<h4>3.报警</h4>
<form action="#" method="POST">
报警总数
<input type="text" name="alarm_num">
报警平均分配天数
<input type="text" name="alarm_day_num">
<input type="submit" value="提交">
</form>
<h4>4.地图</h4>
<form action="#" method="POST">
更新GPS(数量1w)
<!-- <input type="text" name="num"> -->
<input type="submit" value="提交">
</form>
<h4>4.录像存储</h4>
<form action="#" method="POST">
录像片段总数=天数*通道数(每天一条记录)<br />
天数
<input type="text" name="video_day_num">
通道数
<input type="text" name="video_dev_num">
<input type="submit" value="提交">
</form>
<h4>4.在离线</h4>
<form action="#" method="POST">
总数=通道数*天数<br />
天数
<input type="text" name="online_day_num">
通道数
<input type="text" name="online_dev_num">
<input type="submit" value="提交">
</form>
</body>
</html>
四、雏形初成
以上就是django对接性能脚本打压数据的雏形,了解django模型(Model), 视图(View)和控制器(Controller)即MVC等概念后,比较容易搭建。具体对接还未完成,上述简述过原因,领导不大力支持。各功能之间可以同步进行,直接调用异步任务add_job就可以,新人也能瞬间做到性能数据的打压。
后期分享django环境搭建及实现原理。