• 针对httptest4net构建elasticsearch集群压力测试用例


            httptest4net是可以自定义HTTP压力测试的工具,用户可以根据自己的情况编写测试用例加载到httptest4net中并运行测试。由于最近需要对elasticsearch搜索集群进行一个不同情况的测试,所以针对这个测试写了个简单的测试用例。

    代码

      1  [Test("ES base")]
      2     public class ES_SearchUrlTester : IUrlTester
      3     {
      4      
      5         public ES_SearchUrlTester()
      6         {
      7           
      8 
      9         }
     10         public string Url
     11         {
     12             get;
     13             set;
     14         }
     15 
     16 
     17         static string[] urls = new string[] { 
     18             "http://192.168.20.156:9200/gindex/gindex/_search",
     19             "http://192.168.20.158:9200/gindex/gindex/_search",
     20             "http://192.168.20.160:9200/gindex/gindex/_search" };
     21 
     22         private static long mIndex = 0;
     23 
     24         private static List<string> mWords;
     25 
     26         protected static IList<string> Words()
     27         {
     28 
     29             if (mWords == null)
     30             {
     31                 lock (typeof(ES_SearchUrlTester))
     32                 {
     33                     if (mWords == null)
     34                     {
     35                         mWords = new List<string>();
     36                         using (System.IO.StreamReader reader = new StreamReader(@"D:main.dic"))
     37                         {
     38                             string line;
     39 
     40                             while ((line = reader.ReadLine()) != null)
     41                             {
     42                                 mWords.Add(line);
     43                             }
     44                         }
     45                     }
     46                 }
     47             }
     48             return mWords;
     49         }
     50         /*
     51           {"query" : 
     52     {
     53   "bool" : {
     54     "should" : [ {
     55       "field" : {
     56         "title" : "#key"
     57       }
     58     }, {
     59       "field" : {
     60         "kw" : "#key"
     61       }
     62     } ]
     63   }
     64     },
     65 from:0,
     66 size:10
     67 }
     68          */
     69         private static string GetSearchUrlWord()
     70         {
     71             IList<string> words= Words();
     72             System.Threading.Interlocked.Increment(ref mIndex);
     73             return Resource1.QueryString.Replace("#key", words[(int)(mIndex % words.Count)]); 
     74         }
     75 
     76         public System.Net.HttpWebRequest CreateRequest()
     77         {
     78             var httpWebRequest = (HttpWebRequest)WebRequest.Create(urls[mIndex%urls.Length]);
     79             httpWebRequest.ContentType = "application/json";
     80             httpWebRequest.KeepAlive = false;
     81             httpWebRequest.Method = "POST";
     82             string json = GetSearchUrlWord();
     83             using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
     84             {
     85 
     86                 streamWriter.Write(json);
     87                 streamWriter.Flush();
     88             }
     89             return httpWebRequest;
     90 
     91         }
     92 
     93         public TestType Type
     94         {
     95             get
     96             {
     97                 return TestType.POST;
     98             }
     99         }
    100     }

    用例很简单根据节点和关键字构建不同请求的URL和JSON数据包即可完成。把上面代码编译在DLL后放到httptest4net的运行目录下即可以加载这用例并进行测试。

    测试情况

    下载httptest4net

  • 相关阅读:
    宠物店4.0的安装
    《professional asp.net 2.0》读书笔记连载2
    《xhtml 入门系列》之一
    ALinq 让Mysql变得如此简单
    ALinq 入门学习(八)ALinq 对Vs2010 的支持
    教你一款极为简单实用的图表插件
    虚拟机下无法启动 Linux 系统
    怎样去突破文件依赖缓存
    jQuery 表单验证扩展(五)
    Log4Net 全方位跟踪程序运行
  • 原文地址:https://www.cnblogs.com/smark/p/3957801.html
Copyright © 2020-2023  润新知