Commit da3a3431 da3a343197a55471251c3f2c5501fd1dc74d1304 by Christian Gerdes

Nya plugins för filtrering och hantering av dependents

1 parent 0ac81457
...@@ -7,6 +7,7 @@ using Microsoft.VisualStudio.TestTools.WebTesting; ...@@ -7,6 +7,7 @@ using Microsoft.VisualStudio.TestTools.WebTesting;
7 using Microsoft.VisualStudio.TestTools.LoadTesting; 7 using Microsoft.VisualStudio.TestTools.LoadTesting;
8 using System.IO; 8 using System.IO;
9 using System.ComponentModel; 9 using System.ComponentModel;
10 using System.Text.RegularExpressions;
10 11
11 namespace LIL_VSTT_Plugins 12 namespace LIL_VSTT_Plugins
12 { 13 {
...@@ -62,6 +63,69 @@ namespace LIL_VSTT_Plugins ...@@ -62,6 +63,69 @@ namespace LIL_VSTT_Plugins
62 /// Filtrar bort oönskade objekt från sidor. 63 /// Filtrar bort oönskade objekt från sidor.
63 /// Samtliga objekt vars URL börjar med den angivna strängen kommer ignoreras och inte laddas ner. 64 /// Samtliga objekt vars URL börjar med den angivna strängen kommer ignoreras och inte laddas ner.
64 /// </summary> 65 /// </summary>
66 [DisplayName("Dynamisk URL Regex filter")]
67 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nFilter för att ignorera vissa objekt på websidor så de inte laddas ner automatiskt.")]
68 public class WebTestDependentRegexFilter : WebTestPlugin
69 {
70 string m_regex;
71 bool m_exclude = true;
72
73 /// <summary>
74 /// Fullständig URL (inkl http://) som börjar med FilterString kommer att ignoreras.
75
76 [DisplayName("RegEx")]
77 [Description("Dynamiska (dependent) request kommer att filtreras om de matchar detta uttryck.\r\nTex: www.adsite.com eller *.png")]
78 public string FilterString
79 {
80 get { return m_regex; }
81 set { m_regex = value; }
82 }
83
84 [DisplayName("Exclude")]
85 [DefaultValue(true)]
86 [Description("Om satt till true kommer matchande requests att tas bort/exkluderas. Om satt till false kommer alla request utom de som matchar att tas bort/exkluderas")]
87 public bool Exclude
88 {
89 get { return m_exclude; }
90 set { m_exclude = value; }
91 }
92
93 public override void PostRequest(object sender, PostRequestEventArgs e)
94 {
95 if (!string.IsNullOrEmpty(m_regex))
96 {
97 WebTestRequestCollection depsToRemove = new WebTestRequestCollection();
98 Regex regex = new Regex(m_regex);
99
100 foreach (WebTestRequest r in e.Request.DependentRequests)
101 {
102 if (m_exclude)
103 {
104 if (regex.IsMatch(r.Url))
105 {
106 depsToRemove.Add(r);
107 }
108 }
109 else
110 {
111 if (!regex.IsMatch(r.Url))
112 {
113 depsToRemove.Add(r);
114 }
115 }
116 }
117 foreach (WebTestRequest r in depsToRemove)
118 {
119 e.Request.DependentRequests.Remove(r);
120 }
121 }
122 }
123 }
124
125 /// <summary>
126 /// Filtrar bort oönskade objekt från sidor.
127 /// Samtliga objekt vars URL börjar med den angivna strängen kommer ignoreras och inte laddas ner.
128 /// </summary>
65 [DisplayName("Dynamisk URL exclude filter")] 129 [DisplayName("Dynamisk URL exclude filter")]
66 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nFilter för att ignorera vissa objekt på websidor så de inte laddas ner automatiskt.")] 130 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nFilter för att ignorera vissa objekt på websidor så de inte laddas ner automatiskt.")]
67 public class WebTestDependentFilter : WebTestPlugin 131 public class WebTestDependentFilter : WebTestPlugin
...@@ -152,7 +216,46 @@ namespace LIL_VSTT_Plugins ...@@ -152,7 +216,46 @@ namespace LIL_VSTT_Plugins
152 } 216 }
153 } 217 }
154 218
219 /// <summary>
220 /// Ignorerar status koder under 500.
221 /// </summary>
222 [DisplayName("Ignore 4xx status codes")]
223 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nDetta plugin ändrar alla request så de inte går fel på grund av 4xx status koder i svaret samt ignorerar statuskoden helt på alla dependent requests")]
224 public class WebTestIgnore4xx : WebTestPlugin
225 {
226 public override void PostRequest(object sender, PostRequestEventArgs e)
227 {
228
229 if (e.ResponseExists && (int)e.Response.StatusCode >= 500) e.Request.Outcome = Outcome.Fail;
230 WebTestRequestCollection depsToRemove = new WebTestRequestCollection();
231
232 foreach (WebTestRequest r in e.Request.DependentRequests)
233 {
234 r.IgnoreHttpStatusCode = true;
235 }
236 }
237
238 public override void PreRequest(object sender, PreRequestEventArgs e)
239 {
240 e.Request.IgnoreHttpStatusCode = true;
241 }
242 }
155 243
244 /// <summary>
245 /// Ignorerar status koder under 500.
246 /// </summary>
247 [DisplayName("Ignore Dependent Results")]
248 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nDependent requests kommer laddas ner men ej mätas individuellt. Alla kommer enbart mätas gemensamt som [dependent]")]
249 public class WebTestIgnoreDependentResults : WebTestPlugin
250 {
251 public override void PostRequest(object sender, PostRequestEventArgs e)
252 {
253 foreach (WebTestRequest r in e.Request.DependentRequests)
254 {
255 r.ReportingName = "[dependent request]";
256 }
257 }
258 }
156 259
157 /// <summary> 260 /// <summary>
158 /// Service Manager Plugin 261 /// Service Manager Plugin
......