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;
using Microsoft.VisualStudio.TestTools.LoadTesting;
using System.IO;
using System.ComponentModel;
using System.Text.RegularExpressions;
namespace LIL_VSTT_Plugins
{
......@@ -62,6 +63,69 @@ namespace LIL_VSTT_Plugins
/// Filtrar bort oönskade objekt från sidor.
/// Samtliga objekt vars URL börjar med den angivna strängen kommer ignoreras och inte laddas ner.
/// </summary>
[DisplayName("Dynamisk URL Regex filter")]
[Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nFilter för att ignorera vissa objekt på websidor så de inte laddas ner automatiskt.")]
public class WebTestDependentRegexFilter : WebTestPlugin
{
string m_regex;
bool m_exclude = true;
/// <summary>
/// Fullständig URL (inkl http://) som börjar med FilterString kommer att ignoreras.
[DisplayName("RegEx")]
[Description("Dynamiska (dependent) request kommer att filtreras om de matchar detta uttryck.\r\nTex: www.adsite.com eller *.png")]
public string FilterString
{
get { return m_regex; }
set { m_regex = value; }
}
[DisplayName("Exclude")]
[DefaultValue(true)]
[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")]
public bool Exclude
{
get { return m_exclude; }
set { m_exclude = value; }
}
public override void PostRequest(object sender, PostRequestEventArgs e)
{
if (!string.IsNullOrEmpty(m_regex))
{
WebTestRequestCollection depsToRemove = new WebTestRequestCollection();
Regex regex = new Regex(m_regex);
foreach (WebTestRequest r in e.Request.DependentRequests)
{
if (m_exclude)
{
if (regex.IsMatch(r.Url))
{
depsToRemove.Add(r);
}
}
else
{
if (!regex.IsMatch(r.Url))
{
depsToRemove.Add(r);
}
}
}
foreach (WebTestRequest r in depsToRemove)
{
e.Request.DependentRequests.Remove(r);
}
}
}
}
/// <summary>
/// Filtrar bort oönskade objekt från sidor.
/// Samtliga objekt vars URL börjar med den angivna strängen kommer ignoreras och inte laddas ner.
/// </summary>
[DisplayName("Dynamisk URL exclude filter")]
[Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nFilter för att ignorera vissa objekt på websidor så de inte laddas ner automatiskt.")]
public class WebTestDependentFilter : WebTestPlugin
......@@ -152,7 +216,46 @@ namespace LIL_VSTT_Plugins
}
}
/// <summary>
/// Ignorerar status koder under 500.
/// </summary>
[DisplayName("Ignore 4xx status codes")]
[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")]
public class WebTestIgnore4xx : WebTestPlugin
{
public override void PostRequest(object sender, PostRequestEventArgs e)
{
if (e.ResponseExists && (int)e.Response.StatusCode >= 500) e.Request.Outcome = Outcome.Fail;
WebTestRequestCollection depsToRemove = new WebTestRequestCollection();
foreach (WebTestRequest r in e.Request.DependentRequests)
{
r.IgnoreHttpStatusCode = true;
}
}
public override void PreRequest(object sender, PreRequestEventArgs e)
{
e.Request.IgnoreHttpStatusCode = true;
}
}
/// <summary>
/// Ignorerar status koder under 500.
/// </summary>
[DisplayName("Ignore Dependent Results")]
[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]")]
public class WebTestIgnoreDependentResults : WebTestPlugin
{
public override void PostRequest(object sender, PostRequestEventArgs e)
{
foreach (WebTestRequest r in e.Request.DependentRequests)
{
r.ReportingName = "[dependent request]";
}
}
}
/// <summary>
/// Service Manager Plugin
......