放在全文开头,这次去实习的感受:学到了很多知识,感谢各位大佬的包容,我很惭愧没帮上什么忙,以后要好好学习,记录一下这次经历,如果能帮到他人就更好了nice。
1.电脑须安装pycharm
2.了解UDP通讯
3.代码自动分析
4.日志
5.监控CPU以及内存利用率
6.json格式
7.时间戳
8.pandas模块等
下面为客户端代码:
#!/usr/bin/env python3
# coding: utf-8
import time
import json
import socket
import subprocess
import logging
from datetime import datetime
import psutil
import utils
import csv
import os
import log_utils
import pandas as pd
import glob
import commands
import win32api
# import client
log_utils.make_logger(stream=True, stream_level=logging.WARN)
logger = logging.getLogger(__name__)
# input_batch = 100 # 改1
# 插入数据
def put_data(service_name, key, count):
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
data = {'cmdid': 100}
# data = json.loads(json.dumps(article_info)) # dumps:字典->字符串 loads:字符串->字典
param = {"service_name": service_name, 'key': key, 'count': count}
data['param'] = param
data = json.dumps(data)
# count1 = 0
# data_list = []
# for i in range(0, count):
# data_list.append(i)
# if count1 == (input_batch - 1):
try:
udp_socket.sendto(data.encode("utf-8"), ("127.0.0.1", 8087))
except Exception as e:
logger.info("ERROR: Send fail: {reason}".format(reason=e.reason))
return False
# recv_msg2(udp_socket)
# count1 = 0
# data_list = []
# count1 += 1
# if len(data_list) > 0:
# udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
# logger.info("ERROR: {len}".format(len=len(data_list)))
# dump_object(data_list)
# 101获取指定数量的数据
def verify_data(service_name, key, triggerEventId, count):
global ansh
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
data = {'cmdid': 101}
# data = json.loads(json.dumps(article_info)) # dumps:字典->字符串 loads:字符串->字典
param = {"service_name": service_name, 'key': key, 'triggerEventId': triggerEventId, 'count': count}
data['param'] = param
data = json.dumps(data)
# print(data)
# print(type(data))
# print(key)
# print(type(key))
h = key.count(",")
print("信号的数量为:")
print(h + 1) # h+1为信号的数量
# 字符串以逗号分隔变成多个信号量,组成一个列表
list1 = key.split(",")
list1.insert(0, 'timestamp')
print("除去第一列,其他列为想要查询的信号量:")
print(list1)
try:
udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
except Exception as e:
logger.info("ERROR: Send fail: {reason}".format(reason=e.reason))
return False
# recv_msg(udp_socket)
recv_msg2(udp_socket) # 接收查询到的csv文件并保存在桌面
# 以下为从桌面读取查询到的csv文件并进行测试
csvx_list = glob.glob('C:\\Users\\Mi\\Desktop\\test\\*.csv')
print('总共发现%s个CSV文件' % len(csvx_list))
suml = 0
list3 = []
for i in csvx_list: # i是正在处理的文件名
csvfile = open(i, encoding='utf-8')
csvreader = pd.read_csv(csvfile)
ansl = csvreader.shape[1]
# print(csvreader.columns.tolist()) # 输出所有列名
list2 = csvreader.columns.tolist() # 所有列名
list3 = list3 + list2
ansh = csvreader.shape[0] # 行
suml = suml + ansl
# print(suml - 1) # 每个csv有多少列,这个不重要
# print(ansh) # 每个csv有多少行
print("查询出来的所有信号量:")
print(list(set(list3)))
print(suml - len(csvx_list)) # 26列一共
if (h + 1) == (suml - len(csvx_list)):
print("查询出来的不同信号量的个数正确。")
else:
print("查询出来的不同信号量的个数错误。")
list1.sort()
list(set(list3)).sort()
if list1 == list(set(list3)):
print("查询出来的不同信号量的名称可以对应上。")
else:
print("查询出来的不同信号量的名称不可以对应上。")
if count == ansh:
print("查询出来的条数与命令输入想查询出来的条数相等。")
else:
print("查询出来的条数与命令输入想查询出来的条数不相等。")
# 102获取指定时间段内的数据
def gets_the_data(service_name, key, triggerEventId, start_time):
global ansh
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
data = {'cmdid': 102}
# data = json.loads(json.dumps(article_info)) # dumps:字典->字符串 loads:字符串->字典
param = {"service_name": service_name, 'key': key, 'triggerEventId': triggerEventId, 'start_time': start_time}
data['param'] = param
data = json.dumps(data)
# print(data)
# print(type(data))
h = key.count(",")
print("信号的数量为:")
print(h + 1) # h+1为信号的数量
# 字符串以逗号分隔变成多个信号量,组成一个列表
list1 = key.split(",")
list1.insert(0, 'timestamp')
print("除去第一列,其他列为想要查询的信号量:")
print(list1)
try:
udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
except Exception as e:
logger.info("ERROR: Send fail: {reason}".format(reason=e.reason))
return False
# recv_msg(udp_socket)
recv_msg2(udp_socket) # 接收查询到的数据保存成桌面的csv文件
csvx_list = glob.glob('C:\\Users\\Mi\\Desktop\\test\\*.csv')
print('共发现%s个CSV文件' % len(csvx_list))
suml = 0
list3 = []
for i in csvx_list: # i是正在处理的文件名
csvfile = open(i, encoding='utf-8')
csvreader = pd.read_csv(csvfile)
ansl = csvreader.shape[1]
# print(csvreader.columns.tolist()) # 输出所有列名
list2 = csvreader.columns.tolist() # 所有列名
list3 = list3 + list2
ansh = csvreader.shape[0] # 行
suml = suml + ansl
# print(suml - 1) # 每个csv有多少列,这个不重要
# print(ansh) # 每个csv有多少行
# y = csvreader[["timestamp"]] # 读取timestamp的值
# print(y)
# print(type(y))
csvreader['timestamp'] = csvreader['timestamp'].astype('object')
# print("*************************")
csvreader['timestamp'] = csvreader['timestamp'].astype('int64')
# print(csvreader['timestamp'])
# print(type(csvreader))
print("list4为timestamp的值的列表形式:")
# print(csvreader.loc[csvreader['timestamp'] > start_time, 'timestamp'].values)
list4 = csvreader.loc[csvreader['timestamp'] > 0, 'timestamp'].values
print(list4)
print("以下输出的为start_time = :")
print(start_time)
ok = 0
for i in list4:
if i < start_time:
ok = 1
print("查询出来的时间段错误。")
break
if ok == 0:
print("查询出来的的时间段正确。")
print("以下为查询出来的所有信号量:")
print(list(set(list3)))
print(suml - len(csvx_list)) # 26列一共
if (h + 1) == (suml - len(csvx_list)):
print("查询出来的不同信号量的个数正确。")
else:
print("查询出来的不同信号量的个数错误。")
list1.sort()
list(set(list3)).sort()
if list1 == list(set(list3)):
print("查询出来的不同信号量的名称可以对应上。")
else:
print("查询出来的不同信号量的名称不可以对应上。")
# 103 删除指定时间段内的数据
def delete_data(service_name, key, triggerEventId, start_time, time_span):
global ansh
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
data = {'cmdid': 103}
# data = json.loads(json.dumps(article_info)) # dumps:字典->字符串 loads:字符串->字典
param = {"service_name": service_name, 'key': key, 'triggerEventId': triggerEventId, 'start_time': start_time,
'time_span': time_span}
data['param'] = param
data = json.dumps(data)
# print(data)
# print(type(data))
# udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
h = key.count(",")
print("信号的数量为:")
print(h + 1) # h+1为信号的数量
# 字符串以逗号分隔变成多个信号量,组成一个列表
list1 = key.split(",")
list1.insert(0, 'timestamp')
print("除去第一列,其他列为想要查询的信号量:")
print(list1)
try:
udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
except Exception as e:
logger.info("ERROR: Send fail: {reason}".format(reason=e.reason))
return False
# recv_msg(udp_socket)
recv_msg2(udp_socket)
# 2.从桌面读取csv文件后进行筛选
csvx_list = glob.glob('C:\\Users\\Mi\\Desktop\\test\\*.csv')
print('共发现%s个CSV文件' % len(csvx_list))
suml = 0
list3 = []
for i in csvx_list: # i是正在处理的文件名
csvfile = open(i, encoding='utf-8')
csvreader = pd.read_csv(csvfile)
ansl = csvreader.shape[1]
# print(csvreader.columns.tolist()) # 输出所有列名
list2 = csvreader.columns.tolist() # 所有列名
list3 = list3 + list2
ansh = csvreader.shape[0] # 行
suml = suml + ansl
# print(suml - 1) # 每个csv有多少列,这个不重要
# print(ansh) # 每个csv有多少行
# y = csvreader[["timestamp"]] # 读取timestamp的值
# print(y)
# print(type(y))
csvreader['timestamp'] = csvreader['timestamp'].astype('object')
# print("*************************")
csvreader['timestamp'] = csvreader['timestamp'].astype('int64')
# print(csvreader['timestamp'])
# print(type(csvreader))
print("list4为timestamp的值的列表形式:")
# print(csvreader.loc[csvreader['timestamp'] > start_time, 'timestamp'].values)
list4 = csvreader.loc[csvreader['timestamp'] > 0, 'timestamp'].values
print(list4)
print("以下输出的为start_time = :")
print(start_time)
ok = 0
for i in list4:
if i < start_time:
ok = 1
print("删除查询出来的时间段错误。")
break
elif i > start_time + time_span:
ok = 1
print("删除查询出来的时间段错误。")
break
if ok == 0:
print("删除查询出来的的时间段正确。")
print("以下为查询出来的所有信号量:")
print(list(set(list3)))
print(suml - len(csvx_list)) # 26列一共
if (h + 1) == (suml - len(csvx_list)):
print("查询出来的不同信号量的个数正确。")
else:
print("查询出来的不同信号量的个数错误。")
list1.sort()
list(set(list3)).sort()
if list1 == list(set(list3)):
print("查询出来的不同信号量的名称可以对应上。")
else:
print("查询出来的不同信号量的名称不可以对应上。")
# 104 性能测试1
def performance_test01(service_name, key_count, frequency, key_prefix):
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
data = {'cmdid': 104}
# data = json.loads(json.dumps(article_info)) # dumps:字典->字符串 loads:字符串->字典
param = {"service_name": service_name, 'key_count': key_count, 'frequency': frequency, 'key_prefix': key_prefix}
data['param'] = param
data = json.dumps(data)
# print(data)
# print(type(data))
# udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
try:
udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
except Exception as e:
logger.info("ERROR: Send fail: {reason}".format(reason=e.reason))
return False
# recv_msg(udp_socket)
recv_msg2(udp_socket)
# 105 性能测试2
def performance_test02(service_name, value_type, generate_mode):
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
data = {'cmdid': 105}
# data = json.loads(json.dumps(article_info)) # dumps:字典->字符串 loads:字符串->字典
param = {"service_name": service_name, 'value_type': value_type, 'generate_mode': generate_mode}
data['param'] = param
data = json.dumps(data)
# print(data)
# print(type(data))
# udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
try:
udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
except Exception as e:
logger.info("ERROR: Send fail: {reason}".format(reason=e.reason))
return False
# recv_msg(udp_socket)
recv_msg2(udp_socket)
# 106 设置待上传信号列表
def wait_upload(service_name, key):
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
data = {'cmdid': 106}
# data = json.loads(json.dumps(article_info)) # dumps:字典->字符串 loads:字符串->字典
param = {"service_name": service_name, 'key': key}
data['param'] = param
data = json.dumps(data)
# print(data)
# print(type(data))
# udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
try:
udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
except Exception as e:
logger.info("ERROR: Send fail: {reason}".format(reason=e.reason))
return False
# recv_msg(udp_socket)
recv_msg2(udp_socket)
# 107 周期性上传数据
def periodic_upload(service_name, period):
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
data = {'cmdid': 107}
# data = json.loads(json.dumps(article_info)) # dumps:字典->字符串 loads:字符串->字典
param = {"service_name": service_name, 'period': period}
data['param'] = param
data = json.dumps(data)
# print(data)
# print(type(data))
# udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
try:
udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
except Exception as e:
logger.info("ERROR: Send fail: {reason}".format(reason=e.reason))
return False
# recv_msg(udp_socket)
recv_msg2(udp_socket)
# 108 停止周期性上传数据
def stop_period_upload():
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
data = {'cmdid': 108}
# data = json.loads(json.dumps(article_info)) # dumps:字典->字符串 loads:字符串->字典
param = {}
data['param'] = param
data = json.dumps(data)
# print(data)
# print(type(data))
# udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
try:
udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
except Exception as e:
logger.info("ERROR: Send fail: {reason}".format(reason=e.reason))
return False
# recv_msg(udp_socket)
recv_msg2(udp_socket)
# 109 删除指定时间
def delete_specified_time(service_name, time, delete_from_file):
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
data = {'cmdid': 109}
# data = json.loads(json.dumps(article_info)) # dumps:字典->字符串 loads:字符串->字典
param = {"service_name": service_name, 'time': time, "delete_from_file": delete_from_file}
data['param'] = param
data = json.dumps(data)
# print(data)
# print(type(data))
# udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
try:
udp_socket.sendto(str(data).encode("utf-8"), ("127.0.0.1", 8087))
except Exception as e:
logger.info("ERROR: Send fail: {reason}".format(reason=e.reason))
return False
# recv_msg(udp_socket)
recv_msg2(udp_socket)
def test_put_and_verify_immediatelly():
logger.info("test_put_and_verify_immediatelly")
logger.info("put test0")
put_data("shadow", "signal_test0", 2000)
logger.info("get test0")
verify_data("shadow", "signal_test0", 10001, 2000)
logger.info("put test1")
put_data("raw", "signal_test1", 200)
logger.info("get test1")
verify_data("raw", "signal_test1", 10001, 200)
def test_put_and_verify_until_memdata_exists():
logger.info("test_put_and_verify_until_memdata_exists")
logger.info("put test2, test3")
put_data("raw", "signal_test2", 100000)
put_data("shadow", "signal_test3", 20000)
while utils.file_exists("vdata_mem_data") != True:
logger.info("Get until mem_data_xxx.mmf exist")
verify_data("raw", "signal_test2", 10002, 100000)
verify_data("shadow", "signal_test3", 10002, 20000)
time.sleep(30)
time.sleep(10)
logger.info("mem_data_xxx.mmf exist")
verify_data("raw", "signal_test2", 10002, 100000)
verify_data("shadow", "signal_test3", 10002, 20000)
def test_put_and_verify_until_store_data_exists():
logger.info("test_put_and_verify_until_store_data_exists")
logger.info("put test4, test5")
put_data("raw", "signal_test4", 120000)
put_data("shadow", "signal_test5", 20000)
while utils.file_exists("vdata_store_data") != True:
logger.info("Get until store_data_xxx.stf exist")
verify_data("raw", "signal_test4", 10003, 120000)
verify_data("shadow", "signal_test5", 10003, 20000)
time.sleep(30)
time.sleep(10)
logger.info("store_data_xxx.stf exist")
verify_data("raw", "signal_test4", 10003, 120000)
verify_data("shadow", "signal_test5", 10003, 20000)
def test_put_and_verify_after_several_restart():
logger.info("test_put_and_verify_after_several_restart")
logger.info("put test6, test7")
put_data("raw", "signal_test6", 120000)
put_data("shadow", "signal_test7", 20000)
cnt = 0
while cnt < 10:
verify_data("raw", "signal_test6", 10004, 120000)
verify_data("shadow", "signal_test7", 10004, 20000)
cnt += 1
# time.sleep(10)
logger.info("store_data_xxx.stf exist")
verify_data("raw", "signal_test6", 10004, 120000)
verify_data("shadow", "signal_test7", 10004, 20000)
def recv_msg(udp_socket): # 查询结果可能有很多条数据,保存到ans.txt中
recv_data, send_addr = udp_socket.recvfrom(1024)
with open("C:\\Users\\Mi\\Desktop\\ans.txt", "a") as ans:
ans.write(str(recv_data.decode("utf-8")) + str(send_addr) + '\n')
# 接收查询到的数据保存到桌面csv文件
def recv_msg2(udp_socket):
# 1.接收查询到的数据保存在桌面
# 2.从桌面读取csv文件后进行筛选
recv_data, send_addr = udp_socket.recvfrom(1024)
with open("C:\\Users\\Mi\\Desktop\\ans.txt", "a+") as ans:
ans.write(str(recv_data.decode("utf-8")) + str(send_addr) + '\n')
# 打开csv文件 将数据写入csv
csvFile = open("C:\\Users\\Mi\\Desktop\\instance.csv", "a+", newline='')
writer = csv.writer(csvFile)
writer.writerow(recv_data)
csvFile.close()
# 要求:监控CPU和内存占用率
# 监控CPU信息
def cpu():
cpu = psutil.cpu_count(False) # cpu核数 默认逻辑CPU核数, False查看真实cpu核数 2
cpu_per = int(psutil.cpu_percent(1)) # 每秒cpu使用率,(1,true) 每一核cpu的每秒使用率; 36
# print("请输出每秒的CPU使用率:")
# print(cpu, cpu_per)
# print(cpu_per)
return cpu_per
# 监控内存信息
def mem():
mem = psutil.virtual_memory() # 查看内存信息:(total,available,percent,used,free) # 单位为字节
mem_total = int(mem[0] / 1024 / 1024) # 总共多少 字节/1024=千字节 千字节/1024=兆字节 兆字节/1024=吉字节(GB)
mem_used = int(mem[3] / 1024 / 1024) # 已经使用了多少
mem_per = int(mem[2]) # 使用了百分之多少
a = float(mem[0] / 1024 / 1024 / 1024)
b = float(mem[3] / 1024 / 1024 / 1024)
mem_total2 = float('%.2f' % a)
mem_used2 = float('%.2f' % b)
mem_info2 = {
'mem_total': mem_total2,
'mem_used': mem_used2,
'mem_per': mem_per,
}
print("请输出当前计算机监控的内存信息占用数量其单位为GB:")
print(mem_info2)
mem_info = {
'mem_total': mem_total,
'mem_used': mem_used,
'mem_per': mem_per,
}
print("请输出当前计算机监控的内存信息占用数量其单位为兆字节:")
print(mem_info)
return mem_info
# 间隔一定时间(10秒),输出当前的CPU状态信息
def all_msg():
msg = []
now_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
msg.append(now_time) # 获取时间点
cpu_info = cpu()
msg.append(cpu_info) # cpu 使用率,单位:%
mem_info = mem()
msg.append(mem_info['mem_per']) # 内存使用率,单位:%
return msg
def test_CPU():
cnt_times = 1
while (1):
msg = all_msg()
print("以下为获取计算机的时间点 and CPU使用率% and 内存使用率%:")
print(msg) # 实时打印每隔十秒写入txt的数据。
with open("C:\\Users\\Mi\\Desktop\\cs_monitor.txt", "a+") as fp:
b = [str(i) for i in msg]
# print(b)
fp.write((','.join(b)) + '\n')
cnt_times += 1
# 每隔5秒,统计一次当前计算机的使用情况。
time.sleep(5)
if cnt_times > 1: # 可以随意调整,与等待时间的长短有关
break
def test_stability():
# 稳定性测试
def proc_exist(process_name):
pl = psutil.pids() # 返回当前正在运行的PID的排序列表
for pid in pl:
if psutil.Process(pid).name() == process_name:
return pid
# isinstance:判断一个对象是否为一个已知的类型,判断proc_exist函数是否为int类型
if isinstance(proc_exist('vdata.exe'), int):
print('vdata.exe is running')
else:
print('vdata.exe is not running...')
def test02(): # question1:可执行程序里面是返回值还是打印值
cmd = r"C:\\Users\\Mi\\Desktop\\20210727.exe"
# if os.path.exists(cmd):
# # getstatusoutput(cmd):会保存可执行程序中的打印值和主函数的返回值,但不会打印执行命令的输出过程,要再写打印语句才能打印
# rc = subprocess.getstatusoutput(cmd) # subprocess.getstatusoutput()返回计算过程中的所有值
# print(rc) # rc = 0返回值 None (0, '30')
# print('*' * 10)
# os.popen(cmd):将可执行程序中的所有内容打印输出成文件,也不会打印执行过程中输出的内容,通过读文件可以输出所有的打印内容
f = os.popen(cmd).readlines()
print(f) # ['30\n']
# print(type(f))
with open("C:\\Users\\Mi\\Desktop\\tmp.txt", "a") as fp: # 将可执行文件里面的内容写入到txt中
fp.write(str(f))
# print('='*10)
# os.system():会保存打印值和主函数的返回结果,且会将执行过程中要打印的内容打印出来
# g = os.system(cmd) # 30 1
# print(g)
# 已经将可执行程序中打印的内容存到txt中,存的是列表类型,比如['30\n']这样。
def main():
# win32api.ShellExecute(0, 'open', r'C:\\Users\\Mi\\Desktop\\20210727.exe', '', '', 0) # 启动可执行文件
# win32api.ShellExecute(0, 'open', r'chrome.exe', '', '', 1) # 启动可执行文件
# print("-----=================----")
# os.system("taskkill /f /im chrome.exe") # 杀死进程
# udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# test02()
test_put_and_verify_immediatelly()
test_put_and_verify_until_memdata_exists()
test_put_and_verify_until_store_data_exists()
test_put_and_verify_after_several_restart()
tis1 = time.perf_counter() # 计算程序运行的时间,单位为秒。start
sum = 0
with open("C:\\Users\\Mi\\Desktop\\109data.json", 'r') as fp:
for line in fp:
sum += 1
# print(sum)
fp.close()
with open("C:\\Users\\Mi\\Desktop\\109data.json", 'r') as fp:
while sum != 0:
for i in fp.readlines():
dic = json.loads(i) # json转换为字典
dic = eval(dic)
# print(dic)
p = dic.get('cmdid')
service_name = dic.get('param').get('service_name')
if p == 100:
key = dic.get('param').get('key')
count = dic.get('param').get('count')
put_data(service_name, key, count)
elif p == 101:
key = dic.get('param').get('key')
triggerEventId = dic.get('param').get('triggerEventId')
count = dic.get('param').get('count')
verify_data(service_name, key, triggerEventId, count)
elif p == 102:
key = dic.get('param').get('key')
triggerEventId = dic.get('param').get('triggerEventId')
start_time = dic.get('param').get('start_time')
gets_the_data(service_name, key, triggerEventId, start_time)
elif p == 103:
key = dic.get('param').get('key')
triggerEventId = dic.get('param').get('triggerEventId')
start_time = dic.get('param').get('start_time')
time_span = dic.get('param').get('time_span')
delete_data(service_name, key, triggerEventId, start_time, time_span)
elif p == 104:
key_count = dic.get('param').get('key_count')
frequency = dic.get('param').get('frequency')
key_prefix = dic.get('param').get('key_prefix')
performance_test01(service_name, key_count, frequency, key_prefix)
test_CPU()
elif p == 105:
value_type = dic.get('param').get('value_type')
generate_mode = dic.get('param').get('generate_mode')
performance_test02(service_name, value_type, generate_mode)
test_CPU()
elif p == 106:
key = dic.get('param').get('key')
wait_upload(service_name, key)
test_CPU()
elif p == 107:
period = dic.get('param').get('period')
periodic_upload(service_name, period)
elif p == 108:
stop_period_upload()
test_CPU()
elif p == 109:
time1 = dic.get('param').get('time')
delete_from_file = dic.get('param').get('delete_from_file')
delete_specified_time(service_name, time1, delete_from_file)
# tis1 = time.perf_counter()
test_stability()
tis2 = time.perf_counter()
tis = tis2 - tis1
print("运行时间: %.2f秒" % tis)
sum -= 1
if sum == 0:
break
if __name__ == '__main__':
main()
下面为服务端代码:
import socket
import json
import csv
def recv_msg(udp_socket):
while True:
a, client_addr = udp_socket.recvfrom(1024)
b = a.decode()
data = json.loads(b) # loads:str->dict
# 以下是将数据添加到tmp.txt中
if data["cmdid"] == 100:
with open("C:\\Users\\Mi\\Desktop\\tmp.txt", "a") as fp:
fp.write(str(data) + '\n')
# udp_socket.sendto(b"add data successfully!", client_addr)
elif data['cmdid'] == 101: # 101:获取指定数量的数据
value = list(data.values())
# value = ','.join(value)
# value = value.rstrip('\n')
# value = list(value)
# print(type(value)) # <class 'list'>
# print(value) # ['raw', 'fdsdf', '995', '864']
csvFile = open("C:\\Users\\Mi\\Desktop\\instance.csv", "a+", newline='') # 打开csv文件 将读取到的数据写入csv
writer = csv.writer(csvFile)
writer.writerow(value)
csvFile.close()
# print(type(bytes_s))
bytes_s = bytes(("gets the specified amount of data:" + str(data)).encode("utf8"))
udp_socket.sendto(bytes_s, client_addr)
elif data['cmdid'] == 102: # 102:获取指定时间段内的数据
value = list(data.values())
csvFile = open("C:\\Users\\Mi\\Desktop\\instance.csv", "a+", newline='') # 打开csv文件 将读取到的数据写入csv
writer = csv.writer(csvFile)
writer.writerow(value)
csvFile.close()
bytes_s = bytes(("gets the data in the specified time period:" + str(data)).encode("utf8"))
udp_socket.sendto(bytes_s, client_addr)
elif data['cmdid'] == 103: # 103:删除指定时间段内的数据
value = list(data['param'].values())
csvFile = open("C:\\Users\\Mi\\Desktop\\instance.csv", "a+", newline='') # 打开csv文件 将读取到的数据写入csv
writer = csv.writer(csvFile)
writer.writerow(value)
csvFile.close()
bytes_s = bytes(("delete data for a specified period of time:" + str(data)).encode("utf8"))
udp_socket.sendto(bytes_s, client_addr)
elif data['cmdid'] == 104: # 104:性能测试1
value = list(data.values())
csvFile = open("C:\\Users\\Mi\\Desktop\\instance.csv", "a+", newline='') # 打开csv文件 将读取到的数据写入csv
writer = csv.writer(csvFile)
writer.writerow(value)
csvFile.close()
bytes_s = bytes(("performance testing one:" + str(data)).encode("utf8"))
udp_socket.sendto(bytes_s, client_addr)
elif data['cmdid'] == 105: # 105:性能测试2
value = list(data.values())
csvFile = open("C:\\Users\\Mi\\Desktop\\instance.csv", "a+", newline='') # 打开csv文件 将读取到的数据写入csv
writer = csv.writer(csvFile)
writer.writerow(value)
csvFile.close()
bytes_s = bytes(("performance testing two:" + str(data)).encode("utf8"))
udp_socket.sendto(bytes_s, client_addr)
elif data['cmdid'] == 106: # 106:设置待上传信号列表
value = list(data.values())
csvFile = open("C:\\Users\\Mi\\Desktop\\instance.csv", "a+", newline='') # 打开csv文件 将读取到的数据写入csv
writer = csv.writer(csvFile)
writer.writerow(value)
csvFile.close()
bytes_s = bytes(("set signal list to be uploaded:" + str(data)).encode("utf8"))
udp_socket.sendto(bytes_s, client_addr)
elif data['cmdid'] == 107: # 107:周期性上传数据
value = list(data.values())
csvFile = open("C:\\Users\\Mi\\Desktop\\instance.csv", "a+", newline='') # 打开csv文件 将读取到的数据写入csv
writer = csv.writer(csvFile)
writer.writerow(value)
csvFile.close()
bytes_s = bytes(("upload data periodically:" + str(data)).encode("utf8"))
udp_socket.sendto(bytes_s, client_addr)
elif data['cmdid'] == 108: # 108:停止周期性上传数据
value = list(data.values())
csvFile = open("C:\\Users\\Mi\\Desktop\\instance.csv", "a+", newline='') # 打开csv文件 将读取到的数据写入csv
writer = csv.writer(csvFile)
writer.writerow(value)
csvFile.close()
bytes_s = bytes(("stop uploading data periodically:" + str(data)).encode("utf8"))
udp_socket.sendto(bytes_s, client_addr)
else: # 109:删除指定时间的数据
value = list(data.values())
csvFile = open("C:\\Users\\Mi\\Desktop\\instance.csv", "a+", newline='') # 打开csv文件 将读取到的数据写入csv
writer = csv.writer(csvFile)
writer.writerow(value)
csvFile.close()
bytes_s = bytes(("delete data at specified time:" + str(data)).encode("utf8"))
udp_socket.sendto(bytes_s, client_addr)
def main():
server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(('', 8087))
recv_msg(server)
server.close()
if __name__ == '__main__':
main()