针对Httptest4net构建Elasticsearch集群压力测试用例
作者:网络转载 发布时间:[ 2014/11/25 13:21:12 ] 推荐标签:测试用例 软件测试 压力测试
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 }

sales@spasvo.com