Commit 733c8040 authored by liyuanhong's avatar liyuanhong

开发了循环压力测试脚本

parent 43363024
......@@ -270,15 +270,17 @@ class StreamH264Flv():
if __name__ == "__main__":
obj = StreamH264Flv()
obj.setSendDur(0.007)
obj.setSendDur(0.001)
obj.setIsSendAudio(1)
# obj.setMobile("013146201117")
obj.setMobile("142043390091")
obj.setChannel(1)
# obj.setHost("10.100.12.3")
obj.setHost("video-test.vandyo.com")
obj.setHost("10.100.11.125")
# obj.setHost("video-test.vandyo.com")
obj.setPort(1078)
obj.setVideoPath("../../flv/yyy.flv")
obj.setVideoPath("../../flv/bbb3.flv")
obj.connectServer()
obj.readFlvAndSend()
......@@ -3,6 +3,8 @@ import json
import re
import threading
import time
import traceback
import cv2
import requests
......@@ -32,7 +34,6 @@ class FlvPressureTest():
self.threadInfoPull["threadObj"] = {}
self.threadInfoPull["sucessT"] = {}
self.threadInfoPull["failT"] = {}
self.isOpenPullStream = 1 # 是否开启视频拉流 0:不 1:是
def setTerNum(self, data):
......@@ -54,25 +55,45 @@ class FlvPressureTest():
def setIsShowFrame(self,data):
self.isShowFrame = data
def testServicePush(self, cloudMirror):
cloudMirror.readFlvAndSend()
def testServicePull(self, mobile):
def getThreadInfo(self):
return self.threadInfo
def getThreadInfoPull(self):
return self.threadInfoPull
def testServicePush(self, cloudMirror,threadName):
try:
cloudMirror.readFlvAndSend()
except:
traceback.print_exc()
self.threadInfo["threadObj"].pop(threadName)
return
self.threadInfo["threadObj"].pop(threadName)
def testServicePull(self, mobile,threadName):
pullUrl = self.getPlayUrl(mobile,self.channel)
# pullUrl = self.replaceHost(pullUrl, "video-test.vandyo.com:")
cap = cv2.VideoCapture(pullUrl)
while (cap.isOpened()):
ret, frame = cap.read()
if ret == False:
break
if self.isShowFrame == 1:
cv2.imshow("video", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
print("拉流结束")
cap.release()
cv2.destroyAllWindows()
try:
while (cap.isOpened()):
ret, frame = cap.read()
if ret == False:
break
if self.isShowFrame == 1:
cv2.imshow("video", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
print("拉流结束")
cap.release()
cv2.destroyAllWindows()
except:
traceback.print_exc()
self.threadInfoPull["threadObj"].pop(threadName)
return
self.threadInfoPull["threadObj"].pop(threadName)
################################################
# 启动推流线程
################################################
def runPush(self, mobile, threadId):
cloudMirror = StreamH264Flv()
cloudMirror.setHost(self.host)
......@@ -83,18 +104,24 @@ class FlvPressureTest():
cloudMirror.setChannel(self.channel)
cloudMirror.setSendDur(self.sendDur)
conThread = threading.Thread(target=self.testServicePush, args=(cloudMirror,))
conThread = threading.Thread(target=self.testServicePush, args=(cloudMirror,threadId))
self.threadInfo["threadObj"][threadId] = conThread
conThread.start()
print(threadId + "启动了:" + mobile + "-" + str(self.channel))
################################################
# 启动拉流线程
################################################
def runPull(self, mobile, threadId):
time.sleep(1)
pullThread = threading.Thread(target=self.testServicePull, args=(mobile,))
pullThread = threading.Thread(target=self.testServicePull, args=(mobile,threadId))
self.threadInfoPull["threadObj"][threadId] = pullThread
pullThread.start()
print(threadId + "启动了:" + mobile + "-" + str(self.channel))
################################################
# 启动压力测试服务
################################################
def start(self):
for i in range(0, self.terNum):
mobile = self.mobileStart + i
......
#coding: utf-8
from lib.testCase.FlvPressureTest import FlvPressureTest
import time
from lib.testCase.FlvPressureTest import FlvPressureTest
import logging
logging.basicConfig(level = logging.INFO,format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
###########################################
# 推流h264 和 aac 文件压力测试
......@@ -23,21 +26,57 @@ def h264FilePushTest():
test.setAudioPath("aac/bbb3.aac")
test.start()
def getPressTestObj():
test = FlvPressureTest()
test.setHost("10.100.11.125")
test.setPort(1078)
test.setMobileStart(10000000000) # 开始的设备号 (累加)
test.setChannel(1) # 设置频道号
test.setTerNum(3) # 要启动的推拉流线程
test.setIsOpenPullStream(1) # 设置是否开启拉流
test.setIsShowFrame(0) # 拉流是否显示预览画面 (压力测试都应该填:0)
test.setSendDur(0.005) # 设置socket 发送数据间隔
test.setFlvPath("flv/aaa3.flv") # 设置视频路劲
test.start()
return test
###########################################
# 推流flv文件压力测试
###########################################
def flvFilePushTest():
test = FlvPressureTest()
test.setHost("10.100.12.3")
test.setPort(1078)
test.setMobileStart(10000000000)
test.setChannel(1)
test.setTerNum(1)
test.setIsOpenPullStream(1) # 设置是否开启拉流
test.setIsShowFrame(1) # 拉流是否显示预览画面
test.setSendDur(0.001)
test.setFlvPath("flv/aaa3.flv")
test.start()
isLoop = 1 # 是否循环压力测试 0: 不循环 1:循环
loopTime = 1 * 60 * 60 # 循环压力测试的时长
test = getPressTestObj()
threadInfo = test.getThreadInfo()
threadInfoPull = test.getThreadInfoPull()
logger.info("剩余推流线程:" + str(len(threadInfo["threadObj"])))
logger.info("剩余拉流线程:" + str(len(threadInfoPull["threadObj"])))
if isLoop == 0:
while len(threadInfo["threadObj"]) != 0 and len(threadInfoPull["threadObj"]) != 0:
time.sleep(5)
logger.info("剩余推流线程:" + str(len(threadInfo["threadObj"])))
logger.info("剩余拉流线程:" + str(len(threadInfoPull["threadObj"])))
threadInfo = test.getThreadInfo()
threadInfoPull = test.getThreadInfoPull()
else:
time.sleep(10)
if len(threadInfo["threadObj"]) == 0 and len(threadInfoPull["threadObj"]) == 0:
test = getPressTestObj()
logger.info("-----------------------------启动新一轮压力测试-----------------------------")
threadInfo = test.getThreadInfo()
threadInfoPull = test.getThreadInfoPull()
while len(threadInfo["threadObj"]) != 0 and len(threadInfoPull["threadObj"]) != 0:
time.sleep(5)
logger.info("剩余推流线程:" + str(len(threadInfo["threadObj"])))
logger.info("剩余拉流线程:" + str(len(threadInfoPull["threadObj"])))
threadInfo = test.getThreadInfo()
threadInfoPull = test.getThreadInfoPull()
flvFilePushTest()
logger.info("压力测试结束")
if __name__ == "__main__":
flvFilePushTest()
......
......@@ -53,5 +53,5 @@ class CameraArea():
)
if dlg.ShowModal() == wx.ID_OK:
path = dlg.GetPath()
print(path)
textCtr.SetValue(path)
dlg.Destroy()
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment