针对Httptest4net构建Elasticsearch集群压力测试用例

针对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的运行目录下即可以加载这用例并进行测试。
  测试情况
bubuko.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。