Loadrunner脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试
脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试
by:授客 QQ:1033553122
目的
实现基于http协议的流媒体在线视频播放,服务器性能测试脚本,模拟用户浏览器方式在线播放视频
开发环境
Loadrunner 11.0
eclipse-standard-kepler-SR2-win32.zip
jdk-6u14-windows-i586
Win7 32
脚本
DownloadVideo.java,代码如下,主要实现流媒体文件的下载及下载相关的分析
package downloadHttpMedia;
import java.io.*;
import java.net.*;
import java.util.*;
import java.text.*;
public class DownloadVideo {
public static int getFileByUrl(String address, int vuser_id){
Date date = new Date();
SimpleDateFormat formatDate = new SimpleDateFormat("yyyyMMddHHmmss");
String downloadTime = formatDate.format(date);
int totalDownloadSize = 0; //总下载大小
int lastDownloadSize = 0; //上次下载大小
long startDownloadTime = 0; //开始下载
long lastDownloadTime = 0; //上次下载时间
int second = 0; // 记录秒
try{
URL url = new URL(address);
URLConnection conn = url.openConnection();
BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());
FileOutputStream fos = new FileOutputStream("E:\\testvideo" + "_" + downloadTime + vuser_id + ".mp4"); //假设文件为.mp4
int fileTotalSizeInByte = conn.getContentLength();
System.out.println("File Size:" + fileTotalSizeInByte/1024 + "KB");
//获取文件大小
startDownloadTime = System.currentTimeMillis();
//产生一个当前的毫秒
--
自1970年1月1日0时起的毫秒数
lastDownloadTime = startDownloadTime;
while (totalDownloadSize <
fileTotalSizeInByte){
int bufferSize = bis.available(); //
获取数据流中可供读取的字节数
if (bufferSize > 0){
byte[] buf = new byte[bufferSize];
int size = bis.read(buf);
fos.write(buf,0, size); //写入输出流
totalDownloadSize = totalDownloadSize + size;
}
if (System.currentTimeMillis() - lastDownloadTime >
1000){
System.out.println("download speed(KB/s): " + second + " " +
(totalDownloadSize - lastDownloadSize)/1024);
lastDownloadTime = System.currentTimeMillis();
lastDownloadSize = totalDownloadSize;
second++;
}
}
System.out.println("Download Completed");
System.out.println("Average download speed: " +
(totalDownloadSize/1024) /
((System.currentTimeMillis() - startDownloadTime)/1000) +
"KB/s");
fos.close();
bis.close();
}catch(MalformedURLException e){
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
return totalDownloadSize/1024;
}
}
说明:如下,函数添加vuser_id参数主要是用于标识文件名称,以防止模拟并发操作时,不同用户下载的视频文件被覆盖,影响分析。
public static int getFileByUrl(String address, int
vuser_id){
TestDriver.java,测试程序,如下
package downloadHttpMedia;
public class TestDriver {
public static void main(String[] args)
{
String url =
"http://xx.xx-cn-hangzhou.aliyuncs.com/video/VID_20160509_141127.mp4";
DownloadVideo.getFileByUrl(url,1);
}
}
loadrunner中新建java
vuser协议的脚本,并将DownloadVideo.java导出jar,添加到lr中,,编写代码如下
附:
1、现成的jar文件下载地址:http://pan.baidu.com/s/1miESwVe
2、关于eclipse导出jar文件参考文章:http://blog.sina.com.cn/s/blog_13cc013b50102v4m7.html
import lrapi.lr;
import downloadMedia.*;
public class Actions
{
public int init() throws Throwable {
return 0;
}//end of init
public int action() throws Throwable {
int downloadSize = 0; //
下载文件大小
lr.rendezvous("rendezvous");
lr.start_transaction("downloadMedia");
String url = "";
int size = Integer.valueOf("").intValue();
int vuserid = Integer.valueOf("").intValue();
downloadSize = downloadMedia.getFileByUrl(url,vuserid);
if (downloadSize == size) {
lr.end_transaction("downloadMedia", lr.PASS);
}else{
lr.end_transaction("downloadMedia", lr.FAIL);
}
return
0;
}//end of action
public int end() throws Throwable {
return 0;
}//end of end
}
其中,和参数分别为视频播放http地址,及对应视频大小,为虚拟用户id
运行结果:
如上,显示每秒下载速度及平均下载速度
以下是生成的文件
Loadrunner脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试的更多相关文章
- 用c++开发基于tcp协议的文件上传功能
用c++开发基于tcp协议的文件上传功能 2005我正在一家游戏公司做程序员,当时一直在看<Windows网络编程> 这本书,把里面提到的每种IO模型都试了一次,强烈推荐学习网络编程的同学 ...
- loadrunner 脚本开发-参数化之将内容保存为参数、参数数组及参数值获取
转自:http://blog.sina.com.cn/s/blog_13cc013b50102v49c.html(查看原文) 在VuGen中默认使用{}的字符串称为参数 注意:参数必须在双引号中才能用 ...
- Loadrunner脚本开发规范
Loadrunner脚本开发规范 目录 1.一般约定... 3 2.代码注释约定... 4 3.格式化代码... 5 1.一般约定 1.1具体脚本规则,必须在具体代码中加注释,以便脚本开发人员阅读和理 ...
- Loadrunner 脚本开发-利用loadrunner开发Windows Sockets协议脚本
脚本开发-利用loadrunner开发Windows Sockets协议脚本 by:授客 QQ:1033553122 欢迎加入软件性能测试交流QQ群:7156436 实践举例 Socket服务端简单实 ...
- Loadrunner 脚本开发-利用Loadrunner生成Web service测试脚本
脚本开发-利用Loadrunner生成Web service测试脚本 1.选择协议--Web Service,如下图 2.导入服务 入口1:点击Manage Services ->弹出窗中选择“ ...
- loadrunner 脚本开发-文件下载
脚本开发-文件下载 by:授客 QQ:1033553122 下载简介 对 HTTP协议来说,无论是下载文件或者请求页面,对客户端来说,都只是发出一个GET请求,并不会记录点击后的“保存”.“另存为操作 ...
- loadrunner 脚本开发- web_url函数详解
脚本开发- web_url函数详解 by:授客 QQ:1033553122 加载指定url的web页面(GET请求) C语言函数 int web_url( const char *StepName ...
- loadrunner 脚本录制-Protocol Advisor协议分析器的使用
脚本录制-Protocol Advisor协议分析器的使用 by:授客 QQ:1033553122 1.启动Protocol Advisor File > Protocol Advisor &g ...
- Loadrunner 脚本开发-soap_request函数介绍及WebService接口测试
脚本开发- soap_request函数介绍及WebService接口测试 by:授客 QQ:1033553122 函数介绍 soap_request 函数执行一个SOAP请求 函数原型 int so ...
随机推荐
- Springboot/SpringMvc 读取上传 xls 文件内容
/** * 读取上传 xls 内容返回 * @param file * @return */@RequestMapping(value = "/read.xls")@Respons ...
- Java中的引用传递和值传递
Java中的引用传递和值传递 关于Java的引用传递和值传递,在听了老师讲解后,还是没有弄清楚是怎么一回事,于是查了资料,所以在这里与大家分享,有不对的地方,欢迎大家留言. java中是没有指针的,j ...
- Ehcache3开发入门简介
在高并发应用中缓存就是核心机制.最近在研究Ehcache,发现这是一个更加灵活易用的缓存框架(相对于Redis.Memcache),Ehcache更加小巧轻便.而且都有持久化机制,不用担心JVM和服务 ...
- ubuntu18.04 运行时提示缺少libstdc++.so.6
解决方法:输入命令 sudo apt- 提示:ubuntu默认软件包管理器不是yum,而是dpkg,安装软件时用apt-get PS:在ubuntu下最好不要去装yum,不然可能会出现一些奇怪的问题
- 使用jdk的keytool 生成CA证书的方法
一.CA证书生成设置总共分为以下5步: 步骤: 1.根据java的keytool生成CA根证书,放在服务器 2.根据服务器CA根证书导出客户端证书 3.tomcat增加SSL配置 4.客户端IE浏览器 ...
- 给recycleview加headview
参考了https://blog.csdn.net/qibin0506/article/details/49716795 由于recycleview没有直接添加头部view的api,所以需要我们自己去添 ...
- 详解C#异常处理
一.程序运行时产生的错误通过使用一种称为异常(Exception)的机制在程序中传递,通过异常处理(Exception Handling)有助于处理程序运行过程中发生的意外或异常情况:异常可由CLR和 ...
- 解决Android Studio 3.x版本的安装时没有SDK,运行时出现SDK tools错误
好久没更新了,最近手机上的闹钟APP没一个好用的,所以想自己写个. 那Android开发环境搭起来,注意先装好jdk. 1.安装Android Studio google的Android开发网站已经有 ...
- 项目实战安装工具箱Busybox
1.Busybox是一个集成了100多个最常用Linux命令的软件工具箱,他在单一的可执行文件中提供了精简的UNIX工具集.该工具箱中包含了常见简单实用的工具如cat.echo.grep.find.m ...
- maven package,clean,install,compile命令
1.Ideal中显示 2.各个阶段干嘛的? compile,编译命令,会在项目路径下生成一个target目录,在该目录中包含一个classes文件夹,里面全是生成的class文件及字节码文件 pack ...