针对httptest4net构建elasticsearch集群压力测试用例
httptest4net是可以自定义HTTP压力测试的工具,用户可以根据自己的情况编写测试用例加载到httptest4net中并运行测试。由于最近需要对elasticsearch搜索集群进行一个不同情况的测试,所以针对这个测试写了个简单的测试用例。
代码
[Test("ES base")]
public class ES_SearchUrlTester : IUrlTester
{
public ES_SearchUrlTester()
{
}
public string Url
{
get;
set;
}
static string[] urls = new string[] {
"http://192.168.20.156:9200/gindex/gindex/_search",
"http://192.168.20.158:9200/gindex/gindex/_search",
"http://192.168.20.160:9200/gindex/gindex/_search" };
private static long mIndex = ;
private static List<string> mWords;
protected static IList<string> Words()
{
if (mWords == null)
{
lock (typeof(ES_SearchUrlTester))
{
if (mWords == null)
{
mWords = new List<string>();
using (System.IO.StreamReader reader = new StreamReader(@"D:\main.dic"))
{
string line;
while ((line = reader.ReadLine()) != null)
{
mWords.Add(line);
}
}
}
}
}
return mWords;
}
/*
{"query" :
{
"bool" : {
"should" : [ {
"field" : {
"title" : "#key"
}
}, {
"field" : {
"kw" : "#key"
}
} ]
}
},
from:0,
size:10
}
*/
private static string GetSearchUrlWord()
{
IList<string> words= Words();
System.Threading.Interlocked.Increment(ref mIndex);
return Resource1.QueryString.Replace("#key", words[(int)(mIndex % words.Count)]);
}
public System.Net.HttpWebRequest CreateRequest()
{
var httpWebRequest = (HttpWebRequest)WebRequest.Create(urls[mIndex%urls.Length]);
httpWebRequest.ContentType = "application/json";
httpWebRequest.KeepAlive = false;
httpWebRequest.Method = "POST";
string json = GetSearchUrlWord();
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
streamWriter.Write(json);
streamWriter.Flush();
}
return httpWebRequest;
}
public TestType Type
{
get
{
return TestType.POST;
}
}
}
用例很简单根据节点和关键字构建不同请求的URL和JSON数据包即可完成。把上面代码编译在DLL后放到httptest4net的运行目录下即可以加载这用例并进行测试。
测试情况

针对httptest4net构建elasticsearch集群压力测试用例的更多相关文章
- 2.使用Helm构建ElasticSearch集群
作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-05-24 16:08:53 星期五 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...
- Elasticsearch集群 管理
第7章 深入Elasticsearch集群 启动一个Elasticsearch节点时,该节点会开始寻找具有相同集群名字并且可见的主节点.如 果找到主节点,该节点加入一个已经组成了的集群:如果没有找到, ...
- PB 级大规模 Elasticsearch 集群运维与调优实践
PB 级大规模 Elasticsearch 集群运维与调优实践 https://mp.weixin.qq.com/s/PDyHT9IuRij20JBgbPTjFA | 导语 腾讯云 Elasticse ...
- Elasticsearch集群架构的部署和调优(一)
[root@es-node1 ~]# mkdir /usr/java[root@es-node1 ~]# tar zxvf jdk1.8.0_131.tar.gz -C /usr/java/ [roo ...
- ELK 性能(4) — 大规模 Elasticsearch 集群性能的最佳实践
ELK 性能(4) - 大规模 Elasticsearch 集群性能的最佳实践 介绍 集群规模 集群数:6 整体集群规模: 300 Elasticsearch 实例 141 物理服务器 4200 CP ...
- 升级 Elasticsearch 集群数量实战记录
搜索引擎 升级 Elasticsearch 集群数量实战记录 现在线上有一个elasticsearch集群搜索服务有三台elasticsearch实例(es1.es2.es3),打算将其升级为5台(增 ...
- 手把手教你搭建一个Elasticsearch集群
一.为何要搭建 Elasticsearch 集群 凡事都要讲究个为什么.在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢? (1)高可用性 Elasticsearch 作为一个 ...
- ElasticSearch实战系列一: ElasticSearch集群+Kinaba安装教程
前言 本文主要介绍的是ElasticSearch集群和kinaba的安装教程. ElasticSearch介绍 ElasticSearch是一个基于Lucene的搜索服务器,其实就是对Lucene进行 ...
- 手把手教你搭建一个 Elasticsearch 集群
为何要搭建 Elasticsearch 集群 凡事都要讲究个为什么.在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢? 高可用性 Elasticsearch 作为一个搜索引擎, ...
随机推荐
- Flex_控件
1.Text控件 外观: 代码: <?xml version="1.0" encoding="utf-8"?> <s:Application ...
- 关于CacheLookup一个有趣的问题
今天写一个与其他系统进行物料同步的接口,通过COM Business Connector调用Axapta3.0的方法将数据插入到物料表中,中间发生异常,事务回滚,再次调用的时候提示刚刚发生异常的物料已 ...
- {C#}{GDI+}各种C#,GDI+的资料
GDI+各种功能: http://www.cnblogs.com/08shiyan/category/253906.html 字体:http://blog.sina.com.cn/s/blog_7c7 ...
- Shape comparison language
形状比较语言, 九交模型 In this topic About shape comparison language Dimensionality Extensions to the CBM SC ...
- 【MVC】 非常简单的页面导出 WORD, EXCEL方法
[MVC] 页面导出 WORD, EXCEL 前端 js function output() { var para = new Object(); para.html = getHtml(" ...
- POJ 2155 Matrix (二维树状数组)
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 17224 Accepted: 6460 Descripti ...
- 采用formdata做跨域的、无刷新、带进度条的文件上传
以前做无刷新上传,都要用iframe,如果想有进度条,就千难万难,不得不用flash等插件来实现. 现在HTML5终于普及了,筒子们不用再那么痛苦了. 所有这一切都变得异常简单!! 不信?且看如下代码 ...
- (转载)selenium-webdriver(python)
转载地址: http://www.cnblogs.com/fnng/p/3183777.html 本节重点: 简单对象的定位 -----自动化测试的核心 对象的定位应该是自动化测试的核心,要想操作一个 ...
- iOS 如何给Xcode7项目添加“.pch”文件
1.首先打开你的项目(演示使用一个空的项目),按照以下步骤即可 找到“Supporting Files”文件夹,右键即可看到下图,选择“New File...” 2.选择"iOS" ...
- Java核心知识点学习----多线程 倒计时记数器CountDownLatch和数据交换的Exchanger
本文将要介绍的内容都是Java5中的新特性,一个是倒计时记数器---CountDownLatch,另一个是用于线程间数据交换的Exchanger. 一.CountDownLatch 1.什么是Coun ...