Loadrunner脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试

简介: Loadrunner脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试

脚本开发-基于HTTP协议的流媒体视频在线播放服务器性能测试


 

目的

 

 

实现基于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(); //产生一个当前的毫秒--1970110时起的毫秒数

           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

 

运行结果:

 

如上,显示每秒下载速度及平均下载速度

 



以下是生成的文件

 


 

目录
相关文章
|
10月前
|
安全 Linux
阿里云linux服务器使用脚本通过安全组屏蔽异常海外访问ip
公网网站可能会遭受黑客攻击导致访问异常,使用此脚本可以屏蔽掉异常IP 恢复访问。也可自行设置定时任务定期检测屏蔽。
749 28
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
1031 1
|
运维 监控 数据库
自动化运维:使用Python脚本实现服务器监控
【8月更文挑战第31天】在这篇文章中,我们将探索如何利用Python编写简单的脚本来实现对服务器的基本监控。通过学习和应用这些技术,你可以快速检测服务器的状态,包括CPU使用率、内存占用和磁盘空间等关键指标。这不仅有助于及时发现问题,还能提升运维效率。文章将逐步引导你理解监控的重要性,并展示如何从零开始构建自己的监控工具。
|
监控 数据挖掘 Linux
Linux服务器PBS任务队列作业提交脚本的使用方法
【8月更文挑战第21天】在Linux服务器环境中,PBS任务队列能高效管理及调度计算任务。首先需理解基本概念:作业是在服务器上执行的任务;队列则是等待执行任务的列表,具有不同的资源限制与优先级;节点指分配给作业的计算资源。
2416 4
|
网络安全
mac下通过ssh脚本实现免账号密码连接运服务器
mac下通过ssh脚本实现免账号密码连接运服务器
215 3
|
运维 监控 网络安全
自动化运维:使用Python脚本实现服务器批量管理
【8月更文挑战第2天】在现代IT运维领域,效率和准确性是衡量工作质量的关键指标。手动管理大量服务器不仅耗时且容易出错,因此自动化运维工具的开发变得至关重要。本文将介绍如何利用Python编写一个简单的自动化脚本,实现对多台服务器的批量管理,包括自动更新、配置同步以及日志收集等功能。通过实际案例展示,我们能够看到自动化运维如何提升工作效率并减少人为错误。
|
网络协议 安全 Unix
6! 用Python脚本演示TCP 服务器与客户端通信过程!
6! 用Python脚本演示TCP 服务器与客户端通信过程!
468 1
|
监控 Linux Shell
"揭秘!一键掌控Linux服务器健康的秘密武器——超实用系统检查脚本,让你的服务器稳如老狗,告别宕机烦恼!"
【8月更文挑战第14天】服务器宕机或资源耗尽会严重影响业务。为此,你需要一个Linux系统检查脚本来守护服务器健康。它可以自动检测潜在问题如磁盘满载、内存泄漏等,避免服务中断。脚本应包括磁盘空间、内存/CPU使用、系统时间准确性、关键服务状态及系统日志分析等检查项。通过编写并定期运行这样的脚本,可以显著提高服务器的稳定性和可靠性。
373 1
|
运维 监控 API
自动化运维实践指南:Python脚本优化服务器管理任务
本文探讨了Python在自动化运维中的应用,介绍了使用Python脚本优化服务器管理的四个关键步骤:1) 安装必备库如paramiko、psutil和requests;2) 使用paramiko进行远程命令执行;3) 利用psutil监控系统资源;4) 结合requests自动化软件部署。这些示例展示了Python如何提升运维效率和系统稳定性。
1295 8
|
存储 运维 监控
自动化运维:使用Python脚本进行服务器监控
【8月更文挑战第31天】在数字化时代,服务器的稳定运行对于企业至关重要。本文将介绍如何使用Python编写一个简单的服务器监控脚本,帮助运维人员及时发现并解决潜在问题。我们将从基础的服务器资源监控开始,逐步深入到日志分析与报警机制的实现。通过实际代码示例和操作步骤,使读者能够快速掌握自动化监控的技能,提升工作效率。

热门文章

最新文章