Commit 7af20a06 7af20a0659152ece8e0b1d95d84a1480dd0313d7 by Christian Gerdes

Initial sync

1 parent 5065a052
1 TestResults
...\ No newline at end of file ...\ No newline at end of file
1 
2 Microsoft Visual Studio Solution File, Format Version 12.00
3 # Visual Studio 2013
4 VisualStudioVersion = 12.0.31101.0
5 MinimumVisualStudioVersion = 10.0.40219.1
6 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8ADAFB91-C10D-42C8-8499-30B3692C27F3}"
7 ProjectSection(SolutionItems) = preProject
8 LIL_VSTT_Plugins.vsmdi = LIL_VSTT_Plugins.vsmdi
9 Local.testsettings = Local.testsettings
10 TraceAndTestImpact.testsettings = TraceAndTestImpact.testsettings
11 EndProjectSection
12 EndProject
13 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LIL_VSTT_Plugins", "LIL_VSTT_Plugins\LIL_VSTT_Plugins.csproj", "{06A22593-601E-4386-917A-9835DE30E14E}"
14 EndProject
15 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestProject1", "TestProject1\TestProject1.csproj", "{01CF59F6-F912-447A-91BC-0301FDA09C02}"
16 EndProject
17 Global
18 GlobalSection(SolutionConfigurationPlatforms) = preSolution
19 Debug|Any CPU = Debug|Any CPU
20 Release|Any CPU = Release|Any CPU
21 EndGlobalSection
22 GlobalSection(ProjectConfigurationPlatforms) = postSolution
23 {06A22593-601E-4386-917A-9835DE30E14E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
24 {06A22593-601E-4386-917A-9835DE30E14E}.Debug|Any CPU.Build.0 = Debug|Any CPU
25 {06A22593-601E-4386-917A-9835DE30E14E}.Release|Any CPU.ActiveCfg = Release|Any CPU
26 {06A22593-601E-4386-917A-9835DE30E14E}.Release|Any CPU.Build.0 = Release|Any CPU
27 {01CF59F6-F912-447A-91BC-0301FDA09C02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
28 {01CF59F6-F912-447A-91BC-0301FDA09C02}.Debug|Any CPU.Build.0 = Debug|Any CPU
29 {01CF59F6-F912-447A-91BC-0301FDA09C02}.Release|Any CPU.ActiveCfg = Release|Any CPU
30 {01CF59F6-F912-447A-91BC-0301FDA09C02}.Release|Any CPU.Build.0 = Release|Any CPU
31 EndGlobalSection
32 GlobalSection(SolutionProperties) = preSolution
33 HideSolutionNode = FALSE
34 EndGlobalSection
35 GlobalSection(TestCaseManagementSettings) = postSolution
36 CategoryFile = LIL_VSTT_Plugins.vsmdi
37 EndGlobalSection
38 EndGlobal
1 <?xml version="1.0" encoding="UTF-8"?>
2 <TestLists xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
3 <TestList name="Lists of Tests" id="8c43106b-9dc1-4907-a29f-aa66a61bf5b6">
4 <RunConfiguration id="f9146b42-ca07-41ed-9af4-6ec2afc90583" name="Local" storage="local.testsettings" type="Microsoft.VisualStudio.TestTools.Common.TestRunConfiguration, Microsoft.VisualStudio.QualityTools.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
5 </TestList>
6 </TestLists>
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Net;
6 using Microsoft.VisualStudio.TestTools.WebTesting;
7 using Microsoft.VisualStudio.TestTools.LoadTesting;
8 using System.IO;
9 using System.ComponentModel;
10
11 namespace LIL_VSTT_Plugins
12 {
13 /// <summary>
14 /// Nästlad extraction rule
15 /// Kombination av två extractions rules i en. Den andra söker i resultatet av den första.
16 /// </summary>
17 [DisplayName("Nested Extraction")]
18 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nKombination av två extractions där den andra söker i resultatet av den första.")]
19 public class NestedExtractionRule : ExtractionRule
20 {
21 // Indata
22 private string start1;
23 [DisplayName("Extraction 1 Starts With")]
24 [Description("")]
25 public string Start1
26 {
27 get { return start1; }
28 set { start1 = value; }
29 }
30
31 private string end1;
32 [DisplayName("Extraction 1 Ends With")]
33 [Description("")]
34 public string End1
35 {
36 get { return end1; }
37 set { end1 = value; }
38 }
39
40 private string start2;
41 [DisplayName("Extraction 2 Starts With")]
42 [Description("")]
43 public string Start2
44 {
45 get { return start2; }
46 set { start2 = value; }
47 }
48
49 private string end2;
50 [DisplayName("Exctration 2 Ends With")]
51 [Description("")]
52 public string End2
53 {
54 get { return end2; }
55 set { end2 = value; }
56 }
57
58 public override void Extract(object sender, ExtractionEventArgs e)
59 {
60 // Find the first extraction
61 // TODO: Du behöver spola fram till att börja sökningen av end1 EFTER start1!
62 string extraction1;
63 int s1, s2, e1, e2;
64
65 s1 = e.Response.BodyString.IndexOf(start1) + start1.Length;
66 e1 = e.Response.BodyString.IndexOf(end1);
67
68 // Validate
69 if (s1 > e.Response.BodyString.Length || (e1 - s1 < 1))
70 {
71 // Error
72 e.Success = false;
73 return;
74 }
75
76 extraction1 = e.Response.BodyString.Substring(s1, e1 - s1);
77
78 // Find the second extraction
79 // TODO: Du behöver spola fram till att börja sökningen av end2 EFTER start2!
80 string extraction2;
81
82 s2 = extraction1.IndexOf(start2) + start2.Length;
83 e2 = extraction1.IndexOf(end2);
84
85 // Validate
86 if (s2 > extraction1.Length || (e2 - s2 < 1))
87 {
88 // Error
89 e.Success = false;
90 return;
91 }
92
93 extraction2 = extraction1.Substring(s2, e2 - s2);
94
95
96 e.WebTest.Context.Add(this.ContextParameterName, extraction2);
97 e.Success = true;
98 }
99 }
100 }
1 <?xml version="1.0" encoding="utf-8"?>
2 <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <PropertyGroup>
4 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
5 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
6 <ProductVersion>8.0.30703</ProductVersion>
7 <SchemaVersion>2.0</SchemaVersion>
8 <ProjectGuid>{06A22593-601E-4386-917A-9835DE30E14E}</ProjectGuid>
9 <OutputType>Library</OutputType>
10 <AppDesignerFolder>Properties</AppDesignerFolder>
11 <RootNamespace>LIL_VSTT_Plugins</RootNamespace>
12 <AssemblyName>LIL_VSTT_Plugins</AssemblyName>
13 <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
14 <FileAlignment>512</FileAlignment>
15 </PropertyGroup>
16 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
17 <DebugSymbols>true</DebugSymbols>
18 <DebugType>full</DebugType>
19 <Optimize>false</Optimize>
20 <OutputPath>bin\Debug\</OutputPath>
21 <DefineConstants>DEBUG;TRACE</DefineConstants>
22 <ErrorReport>prompt</ErrorReport>
23 <WarningLevel>4</WarningLevel>
24 </PropertyGroup>
25 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
26 <DebugType>pdbonly</DebugType>
27 <Optimize>true</Optimize>
28 <OutputPath>bin\Release\</OutputPath>
29 <DefineConstants>TRACE</DefineConstants>
30 <ErrorReport>prompt</ErrorReport>
31 <WarningLevel>4</WarningLevel>
32 </PropertyGroup>
33 <ItemGroup>
34 <Reference Include="Microsoft.VisualStudio.QualityTools.LoadTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
35 <Reference Include="Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
36 <Reference Include="System" />
37 <Reference Include="System.Core" />
38 <Reference Include="System.Xml.Linq" />
39 <Reference Include="System.Data.DataSetExtensions" />
40 <Reference Include="Microsoft.CSharp" />
41 <Reference Include="System.Data" />
42 <Reference Include="System.Xml" />
43 </ItemGroup>
44 <ItemGroup>
45 <Compile Include="ValidationRules.cs" />
46 <Compile Include="ExtractionRules.cs" />
47 <Compile Include="Swedbank.cs" />
48 <Compile Include="WebTestPlugins.cs" />
49 <Compile Include="LoadTestPlugins.cs" />
50 <Compile Include="Properties\AssemblyInfo.cs" />
51 </ItemGroup>
52 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
53 <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
54 Other similar extension points exist, see Microsoft.Common.targets.
55 <Target Name="BeforeBuild">
56 </Target>
57 <Target Name="AfterBuild">
58 </Target>
59 -->
60 </Project>
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using Microsoft.VisualStudio.TestTools.LoadTesting;
6 using System.ComponentModel;
7 using System.IO;
8 using System.Collections.Specialized;
9
10 namespace LIL_VSTT_Plugins
11 {
12
13 /// <summary>
14 /// LoadTest Context Copy
15 /// </summary>
16 [DisplayName("LoadTest Context Copy")]
17 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nKopierar context parametrar satta i loadtestet till alla test context i test mixen.")]
18 public class LoadTestPluginCopier : ILoadTestPlugin
19 {
20 //store the load test object.
21 LoadTest mLoadTest;
22
23 public void Initialize(LoadTest loadTest)
24 {
25 mLoadTest = loadTest;
26
27 //connect to the TestStarting event.
28 mLoadTest.TestStarting += new EventHandler<TestStartingEventArgs>(mLoadTest_TestStarting);
29 }
30
31
32 void mLoadTest_TestStarting(object sender, TestStartingEventArgs e)
33 {
34 //When the test starts, copy the load test context parameters to
35 //the test context parameters
36 foreach (string key in mLoadTest.Context.Keys)
37 {
38 e.TestContextProperties.Add(key, mLoadTest.Context[key]);
39 }
40 }
41 }
42
43 /// <summary>
44 /// Service Manager Plugin
45 /// </summary>
46 [DisplayName("Service Manager Config")]
47 [Description("(C) Copyright 2015 LIGHTS IN LINE AB\r\nSätter config värden i Service Manager instansen för hela testet.")]
48 public class ServiceManagerPlugin : ILoadTestPlugin
49 {
50 [DisplayName("Use Expect 100 Behaviour"), DefaultValue(true)]
51 public bool exp100 { get; set; }
52
53 [DisplayName("Max Connection Idle Time"), DefaultValue(100)]
54 public int maxIdle { get; set; }
55
56 [DisplayName("TCP Keep Alive"), DefaultValue(false)]
57 public bool keepAlive { get; set; }
58
59 [DisplayName("TCP Keep Alive Timeout (ms)"), DefaultValue(5000)]
60 public int timeOut { get; set; }
61
62 [DisplayName("TCP Keep Alive Interval"), DefaultValue(1000)]
63 public int interVal { get; set; }
64
65 [DisplayName("Use Nagle Algorithm"), DefaultValue(false)]
66 public bool useNagle { get; set; }
67
68 public void Initialize(LoadTest loadTest)
69 {
70 System.Net.ServicePointManager.Expect100Continue = exp100;
71 System.Net.ServicePointManager.MaxServicePointIdleTime = maxIdle;
72 System.Net.ServicePointManager.SetTcpKeepAlive(keepAlive, timeOut, interVal);
73 System.Net.ServicePointManager.UseNagleAlgorithm = useNagle;
74 //System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls; Needs .net 4.5 in order to enable high security protocols
75 }
76
77 }
78
79 [DisplayName("Set Test Context Parameters")]
80 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nSätter parametrar i testcontextet för tester i mixen hämtat från en CSV fil")]
81 public class SetTestParameter : ILoadTestPlugin
82 {
83 // Summary:
84 // Initializes the load test plug-in.
85 //
86 // Parameters:
87 // loadTest:
88 // The load test to be executed.
89
90 private string myConnectionString = "";
91 private string myLogFileString = "";
92 private string myParameterName = "";
93 private string myTestNames = "";
94 private string myScenarioNames = "";
95 private string myAgentNames = "";
96 private string myColNames = "";
97 private bool myUseRandom = true;
98 private bool myUseUnique = false;
99 private bool myUseUniqueIteration = false;
100 private bool myLogToFile = false;
101 private bool myLogAppendID = false;
102 private bool myLogAppendName = false;
103 private bool mySeqLoop = false;
104 private bool myHasColName = false;
105 private bool myUseAutoSplit = false;
106
107 private StringCollection myParams = new StringCollection();
108 private Random random = new Random();
109 private LoadTest m_loadTest;
110
111 [DisplayName("CSV filens sökväg")]
112 [Description("Ange den fullständiga sökvägen till CSV filen. Observera att filen behöver finnas på alla agenterna också om du inte kör lokalt.")]
113 [DefaultValue("C:\\Userdata.csv")]
114 public string Connection_String
115 {
116 get { return myConnectionString; }
117 set { myConnectionString = value; }
118 }
119
120 [DisplayName("CSV filen har kolumnamn")]
121 [Description("Ange om csv filen har rubriker i form av kolumnnamn. Om du sätter True kommer kolmnens rubrik att användas som parameternamn istället.")]
122 [DefaultValue(false)]
123 public bool Has_col_name
124 {
125 get { return myHasColName; }
126 set { myHasColName = value; }
127 }
128
129 [DisplayName("CSV Autosplit per agent")]
130 [Description("Ange True om du vill att filen automatiskt ska splittas mellan alla aktiva agenter.")]
131 [DefaultValue(false)]
132 public bool Autosplit
133 {
134 get { return myUseAutoSplit; }
135 set { myUseAutoSplit = value; }
136 }
137
138 [DisplayName("Context Parameter Namn")]
139 [Description("Ange namnet på parametern som vi ska lägga till i TestContext, om det är flera använd CSV format.")]
140 [DefaultValue("UserName")]
141 public string Parameter_Name
142 {
143 get { return myParameterName; }
144 set { myParameterName = value; }
145 }
146
147 [DisplayName("Loggfilens namn")]
148 [Description("Ange den fullständiga sökvägen till logg filen. Om filen finns kommer den inte skrivas över utan läggas till i slutet.")]
149 [DefaultValue("C:\\Temp\\Fungerande.log")]
150 public string LogFilePathString
151 {
152 get { return myLogFileString; }
153 set { myLogFileString = value; }
154 }
155
156 [DisplayName("Loggfilens namn: Lägg till ID")]
157 [Description("Ange True om du vill att Agent ID samt VU ID läggs till automatiskt i slutet på filnamnet.")]
158 [DefaultValue(false)]
159 public bool LogFileAppendID
160 {
161 get { return myLogAppendID; }
162 set { myLogAppendID = value; }
163 }
164
165 [DisplayName("Loggfilens namn: Lägg till Namn")]
166 [Description("Ange True om du vill att Scenario Name samt Test Name läggs till automatiskt i slutet på filnamnet.")]
167 [DefaultValue(false)]
168 public bool LogFileAppendName
169 {
170 get { return myLogAppendName; }
171 set { myLogAppendName = value; }
172 }
173
174 [DisplayName("Välj slumpmässigt?")]
175 [Description("Ange True om du vill välja en slumpmässig användare. False går igenom listan sekventiellt.")]
176 [DefaultValue(true)]
177 public bool Use_Random
178 {
179 get { return myUseRandom; }
180 set { myUseRandom = value; }
181 }
182
183 [DisplayName("Välj unikt per VU?")]
184 [Description("Ange True om du vill att varje LoadTest VU ska ha sitt eget unika värde och återanvända detta i varje iteration. Stänger av slumpmässigt val.")]
185 [DefaultValue(false)]
186 public bool Use_Unique
187 {
188 get { return myUseUnique; }
189 set { myUseUnique = value; }
190 }
191
192 [DisplayName("Välj unikt per Iteration?")]
193 [Description("Ange True om du vill att varje LoadTest VU ska ha sitt eget unika värde för varje iteration, dvs aldrig återanvändas av någon under testet.")]
194 [DefaultValue(false)]
195 public bool Use_UniqueIteration
196 {
197 get { return myUseUniqueIteration; }
198 set { myUseUniqueIteration = value; }
199 }
200
201 [DisplayName("Välj sekventiell loop?")]
202 [Description("Ange true om du vill börja om från början om sekventiell läsning får slut på värden. Gäller även Unik läsning.")]
203 [DefaultValue(false)]
204 public bool Use_Loop
205 {
206 get { return mySeqLoop; }
207 set { mySeqLoop = value; }
208 }
209
210 [DisplayName("Logga fungerande till fil?")]
211 [Description("Ange True om du vill att poster vars tester slutar i Pass ska loggas till fil (c:\\fungerande.log). Om filen redan finns läggs de till i slutet.")]
212 [DefaultValue(false)]
213 public bool Log_To_File
214 {
215 get { return myLogToFile; }
216 set { myLogToFile = value; }
217 }
218
219 [DisplayName("Endast dessa Tester")]
220 [Description("Parametrar sätts endast på tester i test mixen där namnet eller del av namnet för testet finns i denna lista. Lämna blankt för att sätta i alla tester.")]
221 [DefaultValue("")]
222 public string Test_Names
223 {
224 get { return myTestNames; }
225 set { myTestNames = value; }
226 }
227
228 [DisplayName("Endast dessa Scenarios")]
229 [Description("Parametrar sätts endast på Scenarion där namnet eller del av namnet för scenariot finns i denna lista. Lämna blankt för att sätta i alla scenarion.")]
230 [DefaultValue("")]
231 public string Scenario_Names
232 {
233 get { return myScenarioNames; }
234 set { myScenarioNames = value; }
235 }
236
237 [DisplayName("Endast dessa Agenter")]
238 [Description("Parametrar sätts endast på Agenter där namnet eller del av namnet för agenten finns i denna lista. Lämna blankt för att sätta i alla agenter.")]
239 [DefaultValue("")]
240 public string Agent_Names
241 {
242 get { return myAgentNames; }
243 set { myAgentNames = value; }
244 }
245
246 public void Initialize(LoadTest loadTest)
247 {
248 // Only run on specific agents if specified
249 if (myAgentNames.Length > 0 && !myAgentNames.ToLower().Contains(loadTest.Context.AgentName.ToLower())) return;
250
251 // Vi bör läsa in alla värden här
252 this.initUserArray(myConnectionString, loadTest.Context.AgentCount, loadTest.Context.AgentId);
253
254 if (myParams.Count > 0)
255 {
256 m_loadTest = loadTest;
257 if (myUseUniqueIteration)
258 m_loadTest.TestStarting += new EventHandler<TestStartingEventArgs>(loadTestStartingUniqueIteration);
259 else if (myUseUnique)
260 m_loadTest.TestStarting += new EventHandler<TestStartingEventArgs>(loadTestStartingUnique);
261 else if (myUseRandom)
262 m_loadTest.TestStarting += new EventHandler<TestStartingEventArgs>(loadTestStartingRandom);
263 else
264 m_loadTest.TestStarting += new EventHandler<TestStartingEventArgs>(loadTestStartingSeq);
265 }
266 if (myLogToFile)
267 {
268 m_loadTest.TestFinished += new EventHandler<TestFinishedEventArgs>(loadTestEndLogger);
269 }
270 }
271
272 void loadTestEndLogger(object sender, TestFinishedEventArgs e)
273 {
274 // Log the user to logfile if the test is passed
275 if (e.Result.Passed && shouldRun(e))
276 {
277 string fileName = myLogFileString;
278 if (myLogAppendID) fileName = fileName + ".Agent" + m_loadTest.Context.AgentId + ".Vu" + e.UserContext.UserId;
279 if (myLogAppendName) fileName = fileName + "." + e.UserContext.ScenarioName + "." + e.TestName;
280 string[] allNames;
281 if (myHasColName) allNames = myColNames.Split(','); else allNames = myParameterName.Split(',');
282 string row = "";
283 foreach (string name in allNames)
284 {
285 if(e.UserContext.Keys.Contains(name)) {
286 if (row.Length == 0)
287 row += e.UserContext[name];
288 else
289 row += "," + e.UserContext[name];
290 }
291 }
292 File.AppendAllText(fileName + ".csv", row + "\r\n");
293 }
294 }
295
296 void loadTestStartingRandom(object sender, TestStartingEventArgs e)
297 {
298 setParameters(this.getRandomUser(), e);
299 }
300
301 void loadTestStartingSeq(object sender, TestStartingEventArgs e)
302 {
303 setParameters(this.getSeqUser(e.UserContext.CompletedTestCount), e);
304 }
305
306 void loadTestStartingUnique(object sender, TestStartingEventArgs e)
307 {
308 setParameters(this.getSeqUser(e.UserContext.UserId), e);
309 }
310
311 void loadTestStartingUniqueIteration(object sender, TestStartingEventArgs e)
312 {
313 setParameters(this.getSeqUser(e.TestIterationNumber - 1), e);
314 }
315
316 void setParameters(string user, TestStartingEventArgs e)
317 {
318 if (shouldRun(e))
319 {
320 // Add context parameters to the starting test
321 int numParams = 1;
322 if (myHasColName == true && myColNames.Contains(',')) numParams = countColumns(myColNames);
323 if (myHasColName == false && myParameterName.Contains(',')) numParams = countColumns(myParameterName);
324 //e.TestContextProperties.Add("LIL_LogValue", user);
325 //e.UserContext["LIL_LogValue"] = user;
326 string[] allParams = user.Split(',');
327 string[] allNames;
328 if (myHasColName) allNames = myColNames.Split(','); else allNames = myParameterName.Split(',');
329 for (int i = 0; i < numParams; i++)
330 {
331 e.TestContextProperties.Add(allNames[i], allParams[i]);
332 e.UserContext[allNames[i]] = allParams[i];
333 }
334 }
335 }
336
337 int countColumns(string input)
338 {
339 int count = 1;
340 for (int i = 0; i < input.Length; i++)
341 {
342 if (input[i] == ',') count++;
343 }
344 return count;
345 }
346
347 bool shouldRun(TestStartingEventArgs e)
348 {
349 bool doRun = true;
350 if (myTestNames.Length > 0 && !myTestNames.ToLower().Contains(e.TestName.ToLower())) doRun = false;
351 if (myScenarioNames.Length > 0 && !myScenarioNames.ToLower().Contains(e.ScenarioName.ToLower())) doRun = false;
352 return doRun;
353 }
354
355 bool shouldRun(TestFinishedEventArgs e)
356 {
357 bool doRun = true;
358 if (myTestNames.Length > 0 && !myTestNames.ToLower().Contains(e.TestName.ToLower())) doRun = false;
359 if (myScenarioNames.Length > 0 && !myScenarioNames.ToLower().Contains(e.ScenarioName.ToLower())) doRun = false;
360 return doRun;
361 }
362
363 string getRandomUser()
364 {
365 int randomIndex = random.Next(myParams.Count - 1);
366 return myParams[randomIndex];
367 }
368
369 string getSeqUser(int seqIndex)
370 {
371 if (seqIndex < myParams.Count)
372 return myParams[seqIndex];
373 else
374 {
375 if (mySeqLoop)
376 return myParams[seqIndex % myParams.Count];
377 else
378 return myParams[myParams.Count - 1];
379 }
380 }
381
382 bool initUserArray(string path, int agentCount, int agentId)
383 {
384 if (path.Length > 0)
385 {
386 //StreamReader re = File.OpenText(path);
387 StreamReader re = new StreamReader(path, System.Text.Encoding.Default);
388 string input = null;
389 int lineNum = 0;
390 int dataNum = 0;
391 while ((input = re.ReadLine()) != null)
392 {
393 lineNum++;
394 if (lineNum == 1 && myHasColName == true)
395 {
396 // First line is column names
397 myColNames = input.TrimEnd();
398 }
399 else
400 {
401 if (myUseAutoSplit)
402 {
403 int ifAgentId = 0;
404 if (dataNum >= agentCount) ifAgentId = (dataNum % agentCount) + 1;
405 else ifAgentId = dataNum + 1;
406 if (ifAgentId == agentId)
407 {
408 myParams.Add(input.TrimEnd());
409 }
410 dataNum++;
411 }
412 else
413 {
414 myParams.Add(input.TrimEnd());
415 }
416 }
417 }
418 re.Close();
419 return true;
420 }
421 else {
422 return false;
423 }
424 }
425 }
426 }
1 using System.Reflection;
2 using System.Runtime.CompilerServices;
3 using System.Runtime.InteropServices;
4
5 // General Information about an assembly is controlled through the following
6 // set of attributes. Change these attribute values to modify the information
7 // associated with an assembly.
8 [assembly: AssemblyTitle("LIL_VSTT_Plugins")]
9 [assembly: AssemblyDescription("Plugins for Web and Load Tests")]
10 [assembly: AssemblyConfiguration("")]
11 [assembly: AssemblyCompany("LIGHTS IN LINE AB")]
12 [assembly: AssemblyProduct("Visual Studio 2010 Ultimate")]
13 [assembly: AssemblyCopyright("© LIGHTS IN LINE AB 2014")]
14 [assembly: AssemblyTrademark("All Rights Reserved")]
15 [assembly: AssemblyCulture("")]
16
17 // Setting ComVisible to false makes the types in this assembly not visible
18 // to COM components. If you need to access a type in this assembly from
19 // COM, set the ComVisible attribute to true on that type.
20 [assembly: ComVisible(false)]
21
22 // The following GUID is for the ID of the typelib if this project is exposed to COM
23 [assembly: Guid("eb453bc6-d339-4a51-9cd4-44478831db9a")]
24
25 // Version information for an assembly consists of the following four values:
26 //
27 // Major Version
28 // Minor Version
29 // Build Number
30 // Revision
31 //
32 // You can specify all the values or you can default the Build and Revision Numbers
33 // by using the '*' as shown below:
34 // [assembly: AssemblyVersion("1.0.*")]
35 [assembly: AssemblyVersion("1.3.0.0")]
36 [assembly: AssemblyFileVersion("1.3.0.0")]
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using Microsoft.VisualStudio.TestTools.WebTesting;
6 using System.ComponentModel;
7 using Microsoft.VisualStudio.TestTools.WebTesting.Rules;
8 using System.Text.RegularExpressions;
9 using System.IO;
10 using Microsoft.VisualStudio.TestTools.LoadTesting;
11
12 namespace LIL_VSTT_Plugins
13 {
14 [DisplayName("Set Request Think Time"), Description("Changes the thinktime on requests with a set thinktime over 0 to the value of the ThinkTime context parameter")]
15 public class SetRequestThinkTime : WebTestPlugin
16 {
17 public override void PreRequest(object sender, PreRequestEventArgs e)
18 {
19 WebTestContext ctx = e.WebTest.Context;
20
21 if (ctx.ContainsKey("ThinkTime"))
22 {
23 int tt = Int32.Parse(ctx["ThinkTime"].ToString());
24 if (e.Request.ThinkTime > 0)
25 {
26 e.Request.ThinkTime = tt;
27 }
28 }
29 }
30 }
31
32 [DisplayName("Clear Cookies"), Description("Clears all cookies from previous iterations of this webtest")]
33 public class ClearCookies : WebTestPlugin
34 {
35 public override void PreWebTest(object sender, PreWebTestEventArgs e)
36 {
37 e.WebTest.Context.CookieContainer = new System.Net.CookieContainer();
38 }
39 }
40
41 [DisplayName("Think Time Emulator 10/190"), Description("Sets a context parameter named ThinkTime in each starting test to a random value between 10%-190% of the specified value.")]
42 public class ThinkTimeEmulator10190 : ILoadTestPlugin
43 {
44 [DisplayName("Think Time"), DefaultValue(0), Description("The Think Time to be used seconds. Default is 0.")]
45 public int ThinkTime { get; set; }
46
47 //store the load test object.
48 LoadTest mLoadTest;
49 Random rnd = new Random();
50
51 public void Initialize(LoadTest loadTest)
52 {
53 mLoadTest = loadTest;
54
55 //connect to the TestStarting event.
56 mLoadTest.TestStarting += new EventHandler<TestStartingEventArgs>(mLoadTest_TestStarting);
57 }
58
59
60 void mLoadTest_TestStarting(object sender, TestStartingEventArgs e)
61 {
62 // Set the think time parameter in the tests context to a new value
63 int min = ThinkTime/10;
64 int max = ThinkTime*2 - min;
65 e.TestContextProperties.Add("ThinkTime", rnd.Next(min, max));
66 }
67 }
68
69 [DisplayName("Set Cookie from Query String"), Description("Sets a cookie with given name from the value of a given Query String parameter if found in the current request")]
70 public class SetCookieFromQueryString : WebTestPlugin
71 {
72 [DisplayName("Cookie name"), Description("Name of the cookie to set")]
73 public String CookieName { get; set; }
74
75 [DisplayName("Query String parameter name"), Description("Name of the query string parameter to look for")]
76 public String ParamName { get; set; }
77
78 public override void PreRequest(object sender, PreRequestEventArgs e)
79 {
80 base.PreRequest(sender, e);
81 QueryStringParameterCollection col = e.Request.QueryStringParameters;
82 for(int x=0; x < col.Count; x++)
83 {
84 if (col[x].Name == ParamName)
85 {
86 e.Request.Cookies.Add(new System.Net.Cookie(CookieName, col[x].Value));
87 return;
88 }
89 }
90 }
91
92 public override void PostRequest(object sender, PostRequestEventArgs e)
93 {
94 base.PostRequest(sender, e);
95 if (e.Request.HasDependentRequests)
96 {
97 foreach (WebTestRequest item in e.Request.DependentRequests)
98 {
99 QueryStringParameterCollection col = item.QueryStringParameters;
100 for (int x = 0; x < col.Count; x++)
101 {
102 if (col[x].Name == ParamName)
103 {
104 item.Cookies.Add(new System.Net.Cookie(CookieName, col[x].Value));
105 }
106 }
107 }
108 }
109 }
110 }
111
112 [DisplayName("Add Header"), Description("Adds the specified header to all requests matching a given URL regex")]
113 public class AddHeader : WebTestPlugin
114 {
115 [DisplayName("Header Name"), Description("Name of the header to set")]
116 public String HeaderName { get; set; }
117
118 [DisplayName("Header Value"), Description("Value of the header to set")]
119 public String HeaderValue { get; set; }
120
121 [DisplayName("URL RegEx"), Description("Regular Expression to match on the URL. Empty matches all requests.")]
122 public String RegEx { get; set; }
123
124 public override void PreRequest(object sender, PreRequestEventArgs e)
125 {
126 base.PreRequest(sender, e);
127 if (Regex.Match(e.Request.Url, RegEx).Success || RegEx.Length == 0)
128 {
129 e.Request.Headers.Add(HeaderName, HeaderValue);
130 }
131 }
132
133 public override void PostRequest(object sender, PostRequestEventArgs e)
134 {
135 base.PostRequest(sender, e);
136 if (e.Request.HasDependentRequests)
137 {
138 foreach (WebTestRequest item in e.Request.DependentRequests)
139 {
140 if (Regex.Match(item.Url, RegEx).Success || RegEx.Length == 0)
141 {
142 item.Headers.Add(HeaderName, HeaderValue);
143 }
144 }
145 }
146 }
147 }
148
149 [DisplayName("Log Context Arrays to File"), Description("Logs the specified context parameter arrays to file after each test iteration, one row for each array value")]
150 public class LogContextArrayToFile : WebTestPlugin
151 {
152 [DisplayName("Parameter arrays"), Description("Comma separated list of array parameters to log")]
153 public String Params { get; set; }
154
155 [DisplayName("File Name"), Description("The file name to use for logging")]
156 public String Filename { get; set; }
157
158 private bool header = true;
159 private string[] paramlist = null;
160
161 public override void PostWebTest(object sender, PostWebTestEventArgs e)
162 {
163 if (Params.Length == 0 || Filename.Length == 0) return;
164 if (paramlist == null) paramlist = Params.Split(',');
165 if (header)
166 {
167 File.AppendAllText(Filename, Params + "\r\n");
168 header = false;
169 }
170 // Check that the first param array has a count
171 int count = 0;
172 WebTestContext ctx = e.WebTest.Context;
173 if (ctx.ContainsKey(paramlist[0] + "_count")) count = Int32.Parse(ctx[paramlist[0] + "_count"].ToString());
174 for (int i = 1; i <= count; i++)
175 {
176 string row = "";
177 foreach (string param in paramlist)
178 {
179 if (row.Length > 0) row += ",";
180 if (ctx.ContainsKey(param + "_" + i)) row += ctx[param + "_" + i].ToString();
181 }
182 File.AppendAllText(Filename, row + "\r\n");
183 }
184 base.PostWebTest(sender, e);
185 }
186 }
187
188 [DisplayName("Log Context to File"), Description("Logs the specified context parameters to file after each test iteration")]
189 public class LogContextToFile : WebTestPlugin
190 {
191 [DisplayName("Regular Expression"), Description("The RegEx to use to match context parameter names")]
192 public String myRegex { get; set; }
193
194 [DisplayName("File Name"), Description("The file name to use for logging")]
195 public String Filename { get; set; }
196
197 [DisplayName("Write header"), DefaultValue(false), Description("Writes the parameter names as a header. Will write a new header for each user (dont use in loadtest)")]
198 public bool useHeader { get; set; }
199
200 [DisplayName("Log if passed"), DefaultValue(true), Description("Logs the parameters if the webtest passed")]
201 public bool logPassed { get; set; }
202
203 [DisplayName("Log if failed"), DefaultValue(true), Description("Logs the parameters if the webtest failed")]
204 public bool logFailed { get; set; }
205
206 private bool header = true;
207
208 public override void PostWebTest(object sender, PostWebTestEventArgs e)
209 {
210 if ((e.WebTest.Outcome == Outcome.Pass && logPassed) || (e.WebTest.Outcome == Outcome.Fail && logFailed)) {
211 string row = "";
212 string hrow = "";
213
214 foreach (KeyValuePair<string, object> pair in e.WebTest.Context)
215 {
216 if (Regex.Match(pair.Key, myRegex).Success)
217 {
218 if (header && useHeader)
219 {
220 if (hrow.Length == 0) hrow = pair.Key.ToString();
221 else hrow += "," + pair.Key.ToString();
222 }
223 if (row.Length == 0) row = pair.Value.ToString();
224 else row += "," + pair.Value.ToString();
225 }
226 }
227 if (header && useHeader)
228 {
229 File.AppendAllText(Filename + e.WebTest.Context.WebTestUserId + ".log", hrow + "\r\n");
230 header = false;
231 }
232 File.AppendAllText(Filename + e.WebTest.Context.WebTestUserId + ".log", row + "\r\n");
233 base.PostWebTest(sender, e);
234 }
235 }
236 }
237
238 [DisplayName("Multi Regular Expression"), Description("Saves all matches for a regular expression including a count")]
239 public class MultiRegExExtract : ExtractionRule
240 {
241 [DisplayName("Regular Expression"), Description("The RegEx to use, supports grouping, for example (.+?)")]
242 public String Regex { get; set; }
243
244 [DisplayName("Group Name"), DefaultValue("1"), Description("The group to use as the value for the parameter, default is 1")]
245 public String GroupName { get; set; }
246
247 [DisplayName("Pass if not found"), DefaultValue(false), Description("Wherever this extration rule should pass even if no matches are found. Default false.")]
248 public bool PassIfNotFound { get; set; }
249
250 public override void Extract(object sender, ExtractionEventArgs e)
251 {
252 MatchCollection matches = System.Text.RegularExpressions.Regex.Matches(
253 e.Response.BodyString,
254 Regex,
255 RegexOptions.IgnoreCase);
256 int index = 0;
257 foreach (Match match in matches)
258 {
259 index++;
260 e.WebTest.Context[ContextParameterName + "_" + index] = match.Groups[GroupName].Value;
261 }
262 if (index > 0)
263 {
264 e.WebTest.Context[ContextParameterName + "_count"] = index.ToString();
265 e.Success = true;
266 e.Message = "Found " + index + " matches";
267 }
268 else
269 {
270 e.WebTest.Context[ContextParameterName + "_count"] = index.ToString();
271 e.Success = PassIfNotFound;
272 e.Message = "No matches found. Body size is " + e.Response.BodyString.Length;
273 }
274 }
275 }
276
277 [DisplayName("Extract Count"), Description("Counts all matches for a given RegEx and saves the count to the specified parameter")]
278 public class ExtractCount : ExtractionRule
279 {
280 [DisplayName("Regular Expression"), Description("The RegEx to use")]
281 public String Regex { get; set; }
282
283 [DisplayName("Fail on zero count"), DefaultValue(false), Description("Wherever this extration rule should fail if no matches are found")]
284 public bool FailOnZero { get; set; }
285
286 public override void Extract(object sender, ExtractionEventArgs e)
287 {
288 MatchCollection matches = System.Text.RegularExpressions.Regex.Matches(
289 e.Response.BodyString,
290 Regex,
291 RegexOptions.IgnoreCase);
292
293 e.WebTest.Context[ContextParameterName] = matches.Count.ToString();
294 e.Message = "Found " + matches.Count + " matches";
295 if (FailOnZero && matches.Count == 0)
296 {
297 e.Success = false;
298 }
299 }
300 }
301
302 [DisplayName("Regular Expression Loop"), Description("Loop Condition that matches once on each regexp in previous response body")]
303 public class RegExpLoop : ConditionalRule
304 {
305 private Int32 CurrentMatch { get; set; }
306 private String LastUrl { get; set; }
307 private MatchCollection Matches { get; set; }
308
309 [DisplayName("Context parameter"), IsContextParameterName(true),
310 Description("Name of context parameter where the current value should be set in each loop")]
311 public string ContextParameterName { get; set; }
312
313 [DisplayName("Regex"), Description("The RegEx to use, supports grouping, for example (.+?)")]
314 public String Regex { get; set; }
315
316 [DisplayName("GroupName"), Description("The group to use as the value for the parameter if several are specified, default is 1")]
317 public String GroupName { get; set; }
318
319 // Methods
320 public override void CheckCondition(object sender, ConditionalEventArgs e)
321 {
322 if (CurrentMatch < Matches.Count)
323 {
324 e.WebTest.Context[ContextParameterName] =
325 Matches[CurrentMatch].Groups[GroupName].Value;
326 e.IsMet = true;
327 CurrentMatch++;
328 return;
329 }
330
331 e.IsMet = false;
332 }
333
334 public override void Initialize(object sender, ConditionalEventArgs e)
335 {
336 CurrentMatch = 0;
337 Matches = System.Text.RegularExpressions.Regex.Matches(
338 e.WebTest.LastResponse.BodyString,
339 Regex,
340 RegexOptions.IgnoreCase);
341 }
342
343 public override string StringRepresentation()
344 {
345 return "Regex condition " + Regex;
346 }
347 }
348 }
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Net;
6 using Microsoft.VisualStudio.TestTools.WebTesting;
7 using Microsoft.VisualStudio.TestTools.LoadTesting;
8 using System.IO;
9 using System.ComponentModel;
10 using System.Text.RegularExpressions;
11
12 namespace LIL_VSTT_Plugins
13 {
14 /// <summary>
15 /// Count Validation
16 /// Räknar hur många gånger ett visst reguljärt utryck finns i svaret och validerar detta
17 /// </summary>
18 [DisplayName("Count Validation")]
19 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nValiderar att ett reguljärt utryck finns minst ett visst antal gånger i svaret, eller inte.")]
20 public class CountValidation : ValidationRule
21 {
22 [DisplayName("RegEx"), Description("Regular Expression to match on the response.")]
23 public String RegEx { get; set; }
24
25 [DisplayName("Condition"), Description("Valid conditions are =,>,<,>=,<=")]
26 [DefaultValue("=")]
27 public String myCon { get; set; }
28
29 [DisplayName("Count"), Description("Expected count of occurences")]
30 public int Count { get; set; }
31
32 [DisplayName("Pass"), Description("Pass or fail if count matches. True passes if the count matches, False fails if the count matches")]
33 [DefaultValue(true)]
34 public bool Pass { get; set; }
35
36 public override void Validate(object sender, ValidationEventArgs e)
37 {
38 MatchCollection matches = System.Text.RegularExpressions.Regex.Matches(
39 e.Response.BodyString,
40 RegEx,
41 RegexOptions.IgnoreCase);
42
43 switch (myCon) {
44 case "=":
45 if (matches.Count == Count) { e.IsValid = Pass; e.Message = "Number of matches equal to count. Valid set to " + Pass.ToString(); }
46 break;
47 case "<":
48 if (matches.Count < Count) { e.IsValid = Pass; e.Message = "Number of matches less than count. Valid set to " + Pass.ToString(); }
49 break;
50 case ">":
51 if (matches.Count > Count) { e.IsValid = Pass; e.Message = "Number of matches higher than count. Valid set to " + Pass.ToString(); }
52 break;
53 case "<=":
54 if (matches.Count <= Count) { e.IsValid = Pass; e.Message = "Number of matches less or equal to count. Valid set to " + Pass.ToString(); }
55 break;
56 case ">=":
57 if (matches.Count >= Count) { e.IsValid = Pass; e.Message = "Number of matches higher or equal to count. Valid set to " + Pass.ToString(); }
58 break;
59 default:
60 e.IsValid = true; e.Message = "Invalid condition specified. Validation will pass.";
61 break;
62 }
63 }
64 }
65 }
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5 using System.Net;
6 using Microsoft.VisualStudio.TestTools.WebTesting;
7 using Microsoft.VisualStudio.TestTools.LoadTesting;
8 using System.IO;
9 using System.ComponentModel;
10
11 namespace LIL_VSTT_Plugins
12 {
13
14
15 /// <summary>
16 /// Datasource Unique Once
17 /// </summary>
18 [DisplayName("Datasource Unique Once")]
19 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nOBS! Läs hela! Styr datasource selection till att endast göras en gång per VU. Du måste ändra i din datasource Access Metod till Do Not Move Automatically! WebTestUserId används för att välja rad. Använder de datasources som finns definerade i webtestet. Använd test mix based on users starting tests samt 0 percent new users.")]
20 public class UniqueOnce : WebTestPlugin
21 {
22 string dataSourceName;
23 string dataTableName;
24 int offset;
25
26 [DisplayName("Datakällans namn")]
27 [Description("Ange namnet på datakällan i ditt webtest, tex DataSource1")]
28 [DefaultValue("DataSource1")]
29 public string DataSourceName
30 {
31 get { return dataSourceName; }
32 set { dataSourceName = value; }
33 }
34
35 [DisplayName("Tabellens namn")]
36 [Description("Ange namnet på den tabell som ska användas, tex Userdata#csv")]
37 public string DataSourceTableName
38 {
39 get { return dataTableName; }
40 set { dataTableName = value; }
41 }
42
43 [DisplayName("Offset")]
44 [Description("Används för att hoppa över ett visst antal rader från början på datakällan så de inte används.")]
45 [DefaultValue(0)]
46 public int Offset
47 {
48 get { return offset; }
49 set { offset = value; }
50 }
51
52 public override void PreWebTest(object sender, PreWebTestEventArgs e)
53 {
54 base.PreWebTest(sender, e);
55 int index = e.WebTest.Context.WebTestUserId + offset;
56 e.WebTest.MoveDataTableCursor(dataSourceName, dataTableName, index);
57 e.WebTest.AddCommentToResult("Selected row number " + index + " from datasource " + dataSourceName + " and table " + dataTableName + ".");
58 }
59 }
60
61 /// <summary>
62 /// 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 /// </summary>
65 [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.")]
67 public class WebTestDependentFilter : WebTestPlugin
68 {
69 string m_startsWith;
70
71 /// <summary>
72 /// Fullständig URL (inkl http://) som börjar med FilterString kommer att ignoreras.
73
74 [DisplayName("URL börjar med")]
75 [Description("Dynamiska (dependent) objekt som hittas kommer endast att laddas ner om de INTE börjar med denna sträng.\r\nTex: https://www.excludedsite.com")]
76 public string FilterString
77 {
78 get { return m_startsWith; }
79 set { m_startsWith = value; }
80 }
81
82 public override void PostRequest(object sender, PostRequestEventArgs e)
83 {
84 WebTestRequestCollection depsToRemove = new WebTestRequestCollection();
85 Boolean hasRun = false;
86
87 foreach (WebTestRequest r in e.Request.DependentRequests)
88 {
89 if (!string.IsNullOrEmpty(m_startsWith) &&
90 r.Url.StartsWith(m_startsWith))
91 {
92 depsToRemove.Add(r);
93 hasRun = true;
94 }
95 }
96 foreach (WebTestRequest r in depsToRemove)
97 {
98 e.Request.DependentRequests.Remove(r);
99 }
100
101 if (hasRun)
102 {
103 //e.WebTest.AddCommentToResult("WebTestDependentFilter has run");
104 }
105 }
106 }
107
108 /// <summary>
109 /// Filtrar bort oönskade objekt från sidor.
110 /// Samtliga objekt vars URL börjar med den angivna strängen kommer ignoreras och inte laddas ner.
111 /// </summary>
112 [DisplayName("Dynamisk URL include filter")]
113 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nFilter för att ignorera vissa objekt på websidor så de inte laddas ner automatiskt.")]
114 public class WebTestDependentIncludeFilter : WebTestPlugin
115 {
116 string m_startsWith;
117
118 /// <summary>
119 /// Fullständig URL (inkl http://) som börjar med FilterString kommer att ignoreras.
120
121 [DisplayName("URL börjar med")]
122 [Description("Alla dynamiska (dependent) objekt som hittas kommer endast att laddas ner OM DE BÖRJAR med denna sträng.\r\nTex: https://www.onlythissite.com")]
123 public string FilterString
124 {
125 get { return m_startsWith; }
126 set { m_startsWith = value; }
127 }
128
129 public override void PostRequest(object sender, PostRequestEventArgs e)
130 {
131 WebTestRequestCollection depsToRemove = new WebTestRequestCollection();
132 Boolean hasRun = false;
133
134 foreach (WebTestRequest r in e.Request.DependentRequests)
135 {
136 if (!string.IsNullOrEmpty(m_startsWith) &&
137 !r.Url.StartsWith(m_startsWith))
138 {
139 depsToRemove.Add(r);
140 hasRun = true;
141 }
142 }
143 foreach (WebTestRequest r in depsToRemove)
144 {
145 e.Request.DependentRequests.Remove(r);
146 }
147
148 if (hasRun)
149 {
150 //e.WebTest.AddCommentToResult("WebTestDependentFilter has run");
151 }
152 }
153 }
154
155
156
157 /// <summary>
158 /// WebTest plugin som tar bort expected-100 headern från post requests
159 /// Beta
160 /// </summary>
161 [DisplayName("Expect 100 Off")]
162 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nStänger av .NET expected-100 headern i posts.")]
163 public class expect100Off : WebTestPlugin
164 {
165 public override void PreWebTest(object sender, PreWebTestEventArgs e)
166 {
167 base.PreWebTest(sender, e);
168 System.Net.ServicePointManager.Expect100Continue = false;
169 System.Net.ServicePointManager.MaxServicePointIdleTime = 30;
170 }
171 }
172
173 /// <summary>
174 /// WebTest Plugin Template
175 /// </summary>
176 [DisplayName("Randomize each page")]
177 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nVäljer en ny slumpmässig rad i din datasource vid varje sida/page i skriptet.")]
178 public class randomOnEachPage : WebTestPlugin
179 {
180 string dataSourceName;
181 string dataTableName;
182 int datasourceSize = 0;
183 Random RandomNumber = new Random(System.DateTime.Now.Millisecond);
184
185 [DisplayName("Datakällans namn")]
186 [Description("Ange namnet på datakällan i ditt webtest, tex DataSource1")]
187 [DefaultValue("DataSource1")]
188 public string DataSourceName
189 {
190 get { return dataSourceName; }
191 set { dataSourceName = value; }
192 }
193
194 [DisplayName("Tabellens namn")]
195 [Description("Ange namnet på den tabell som ska användas, tex Userdata#csv")]
196 public string DataSourceTableName
197 {
198 get { return dataTableName; }
199 set { dataTableName = value; }
200 }
201
202 public override void PrePage(object sender, PrePageEventArgs e)
203 {
204 base.PrePage(sender, e);
205 if (datasourceSize == 0) {
206 int size = e.WebTest.GetDataTableRowCount(dataSourceName, dataTableName);
207 if(size > 0)
208 datasourceSize = size;
209 else
210 return;
211 }
212 if (datasourceSize > 0)
213 {
214 int index = RandomNumber.Next(0, datasourceSize - 1);
215 e.WebTest.MoveDataTableCursor(dataSourceName, dataTableName, index);
216 //e.WebTest.AddCommentToResult("Selected row number " + index + " from datasource " + dataSourceName + " and table " + dataTableName + ".");
217 }
218 }
219 }
220
221
222 ///<summary>
223 ///WebTest Plugin Data Generator
224 ///</summary>
225 [DisplayName("Data Generator Timestamp")]
226 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nGenererar en timestamp som context parameter")]
227 public class dataGenTimestamp : WebTestPlugin
228 {
229 private string paramName;
230 [DisplayName("Parameter namn")]
231 [Description("Ange namnet på parametern i ditt webtest, tex TimeStampParameter1")]
232 [DefaultValue("TimeStampParameter1")]
233 public string ParamNameVal
234 {
235 get { return paramName; }
236 set { paramName = value; }
237 }
238
239 private bool millis = false;
240 [DisplayName("Använd millisekunder")]
241 [Description("Sätt till true om du vill ha värdet i millisekunder istället för sekunder.")]
242 [DefaultValue(false)]
243 public bool MillisecondsVal
244 {
245 get { return millis; }
246 set { millis = value; }
247 }
248
249 private bool prePage = false;
250 [DisplayName("Uppdatera på varje Page")]
251 [Description("Sätt till true om du vill ha värdet uppdaterat inför varje ny sida som laddas i testet.")]
252 [DefaultValue(false)]
253 public bool PrePageVal
254 {
255 get { return prePage; }
256 set { prePage = value; }
257 }
258
259 private bool preTrans = false;
260 [DisplayName("Uppdatera på varje Transaktion")]
261 [Description("Sätt till true om du vill ha värdet uppdaterat inför varje ny transaktion i testet.")]
262 [DefaultValue(false)]
263 public bool PreTransactionVal
264 {
265 get { return preTrans; }
266 set { preTrans = value; }
267 }
268
269 private bool preReq = false;
270 [DisplayName("Uppdatera på varje Request")]
271 [Description("Sätt till true om du vill ha värdet uppdaterat inför varje nytt request i testet.")]
272 [DefaultValue(false)]
273 public bool PreRequestVal
274 {
275 get { return preReq; }
276 set { preReq = value; }
277 }
278
279 public override void PreWebTest(object sender, PreWebTestEventArgs e)
280 {
281 update(e.WebTest.Context);
282 base.PreWebTest(sender, e);
283 }
284
285 public override void PrePage(object sender, PrePageEventArgs e)
286 {
287 if (prePage) update(e.WebTest.Context);
288 base.PrePage(sender, e);
289 }
290
291 public override void PreRequestDataBinding(object sender, PreRequestDataBindingEventArgs e)
292 {
293 if (preReq) update(e.WebTest.Context);
294 base.PreRequestDataBinding(sender, e);
295 }
296
297 public override void PreTransaction(object sender, PreTransactionEventArgs e)
298 {
299 if (preTrans) update(e.WebTest.Context);
300 base.PreTransaction(sender, e);
301 }
302
303 private void update(WebTestContext context)
304 {
305 TimeSpan span = (DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc));
306 if (millis) context[paramName] = ((Int64) span.TotalMilliseconds).ToString();
307 else context[paramName] = ((Int64) span.TotalSeconds).ToString();
308 }
309 }
310
311
312 /*
313 /// <summary>
314 /// WebTest Plugin Template
315 /// </summary>
316 [DisplayName("Plugin Namn")]
317 [Description("(C) Copyright 2011 LIGHTS IN LINE AB\r\nFörklaring")]
318 public class myPlugin : WebTestPlugin
319 {
320 public override void PreWebTest(object sender, PreWebTestEventArgs e)
321 {
322 base.PreWebTest(sender, e);
323 e.WebTest.Context.CookieContainer = new myCookieContainer();
324 }
325 }
326 */
327
328 }
1 <?xml version="1.0" encoding="UTF-8"?>
2 <TestSettings name="Local" id="f9146b42-ca07-41ed-9af4-6ec2afc90583" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
3 <Description>These are default test settings for a local test run.</Description>
4 <Deployment enabled="false" />
5 <Execution>
6 <TestTypeSpecific />
7 <AgentRule name="Execution Agents">
8 </AgentRule>
9 </Execution>
10 </TestSettings>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <LoadTest Name="LoadTest1" Description="" Owner="" storage="c:\users\gerdes\documents\visual studio 2010\lil_vstt_plugins\testproject1\loadtest1.loadtest" Priority="2147483647" Enabled="true" CssProjectStructure="" CssIteration="" DeploymentItemsEditable="" WorkItemIds="" TraceLevel="None" CurrentRunConfig="Run Settings1" Id="0e35c1c4-9214-4fc4-907f-42e11a00845a" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
3 <Scenarios>
4 <Scenario Name="Scenario1" DelayBetweenIterations="1" PercentNewUsers="0" IPSwitching="true" TestMixType="PercentageOfUsersRunning" ApplyDistributionToPacingDelay="true" MaxTestIterations="0" DisableDuringWarmup="false" DelayStartTime="0" AllowedAgents="">
5 <ThinkProfile Value="0.2" Pattern="NormalDistribution" />
6 <LoadProfile Pattern="Constant" InitialUsers="10" />
7 <TestMix>
8 <TestProfile Name="WebTest1" Path="webtest1.webtest" Id="c649760b-6dd8-4210-8a6d-3c6596d08668" Percentage="100" Type="Microsoft.VisualStudio.TestTools.WebStress.DeclarativeWebTestElement, Microsoft.VisualStudio.QualityTools.LoadTest, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
9 </TestMix>
10 <BrowserMix>
11 <BrowserProfile Percentage="100">
12 <Browser Name="Internet Explorer 7.0" MaxConnections="2">
13 <Headers>
14 <Header Name="User-Agent" Value="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" />
15 <Header Name="Accept" Value="*/*" />
16 <Header Name="Accept-Language" Value="{{$IEAcceptLanguage}}" />
17 <Header Name="Accept-Encoding" Value="GZIP" />
18 </Headers>
19 </Browser>
20 </BrowserProfile>
21 </BrowserMix>
22 <NetworkMix>
23 <NetworkProfile Percentage="100">
24 <Network Name="LAN" BandwidthInKbps="1000000" NetworkProfileConfigurationXml="&lt;Emulation&gt;&lt;VirtualChannel name=&quot;defaultChannel&quot;&gt;&lt;FilterList/&gt;&lt;VirtualLink instances=&quot;1&quot; name=&quot;defaultLink&quot;&gt;&lt;LinkRule dir=&quot;upstream&quot;&gt;&lt;Bandwidth&gt;&lt;Speed unit=&quot;kbps&quot;&gt;1000000&lt;/Speed&gt;&lt;/Bandwidth&gt;&lt;/LinkRule&gt;&lt;LinkRule dir=&quot;downstream&quot;&gt;&lt;Bandwidth&gt;&lt;Speed unit=&quot;kbps&quot;&gt;1000000&lt;/Speed&gt;&lt;/Bandwidth&gt;&lt;/LinkRule&gt;&lt;/VirtualLink&gt;&lt;/VirtualChannel&gt;&lt;/Emulation&gt;" />
25 </NetworkProfile>
26 </NetworkMix>
27 </Scenario>
28 </Scenarios>
29 <CounterSets>
30 <CounterSet Name="LoadTest" CounterSetType="LoadTest" LocId="">
31 <CounterCategories>
32 <CounterCategory Name="LoadTest:Scenario">
33 <Counters>
34 <Counter Name="User Load" HigherIsBetter="true" />
35 <Counter Name="Tests Running" HigherIsBetter="true" />
36 </Counters>
37 </CounterCategory>
38 <CounterCategory Name="LoadTest:Test">
39 <Counters>
40 <Counter Name="Total Tests" HigherIsBetter="true" />
41 <Counter Name="Passed Tests" HigherIsBetter="true" />
42 <Counter Name="Failed Tests" />
43 <Counter Name="Tests/Sec" HigherIsBetter="true" />
44 <Counter Name="Passed Tests/Sec" HigherIsBetter="true" />
45 <Counter Name="Failed Tests/Sec" />
46 <Counter Name="Avg. Requests/Test" HigherIsBetter="true" />
47 <Counter Name="Avg. Test Time" />
48 <Counter Name="% Time in LoadTestPlugin" />
49 <Counter Name="% Time in WebTest code" />
50 <Counter Name="% Time in Rules" />
51 </Counters>
52 </CounterCategory>
53 <CounterCategory Name="LoadTest:Transaction">
54 <Counters>
55 <Counter Name="Total Transactions" HigherIsBetter="true" />
56 <Counter Name="Avg. Transaction Time" />
57 <Counter Name="Avg. Response Time" />
58 <Counter Name="Transactions/Sec" HigherIsBetter="true" />
59 </Counters>
60 </CounterCategory>
61 <CounterCategory Name="LoadTest:Errors">
62 <Counters>
63 <Counter Name="Http Errors" />
64 <Counter Name="Validation Rule Errors" />
65 <Counter Name="Extraction Rule Errors" />
66 <Counter Name="Requests Timed Out" />
67 <Counter Name="Exceptions" />
68 <Counter Name="Total Errors" />
69 <Counter Name="Errors/Sec" />
70 <Counter Name="Threshold Violations/Sec" />
71 </Counters>
72 </CounterCategory>
73 <CounterCategory Name="LoadTest:Page">
74 <Counters>
75 <Counter Name="Total Pages" HigherIsBetter="true" />
76 <Counter Name="Avg. Page Time" />
77 <Counter Name="Page Response Time Goal" HigherIsBetter="true" />
78 <Counter Name="% Pages Meeting Goal" HigherIsBetter="true" />
79 <Counter Name="Pages/Sec" HigherIsBetter="true" />
80 </Counters>
81 </CounterCategory>
82 <CounterCategory Name="LoadTest:Request">
83 <Counters>
84 <Counter Name="Total Requests" HigherIsBetter="true" />
85 <Counter Name="Passed Requests" HigherIsBetter="true" />
86 <Counter Name="Failed Requests" />
87 <Counter Name="Cached Requests" HigherIsBetter="true" />
88 <Counter Name="Requests/Sec" HigherIsBetter="true" />
89 <Counter Name="Passed Requests/Sec" HigherIsBetter="true" />
90 <Counter Name="Failed Requests/Sec" />
91 <Counter Name="Avg. First Byte Time" />
92 <Counter Name="Avg. Response Time" />
93 <Counter Name="Avg. Connection Wait Time">
94 <ThresholdRules>
95 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareCounters, Microsoft.VisualStudio.QualityTools.LoadTest, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
96 <RuleParameters>
97 <RuleParameter Name="DependentCategory" Value="LoadTest:Page" />
98 <RuleParameter Name="DependentCounter" Value="Avg. Page Time" />
99 <RuleParameter Name="DependentInstance" Value="_Total" />
100 <RuleParameter Name="AlertIfOver" Value="True" />
101 <RuleParameter Name="WarningThreshold" Value="0.25" />
102 <RuleParameter Name="CriticalThreshold" Value="0.5" />
103 </RuleParameters>
104 </ThresholdRule>
105 </ThresholdRules>
106 </Counter>
107 <Counter Name="Avg. Content Length" />
108 </Counters>
109 </CounterCategory>
110 <CounterCategory Name="LoadTest:LogEntries">
111 <Counters>
112 <Counter Name="Total Log Entries" />
113 <Counter Name="Log Entries/Sec" />
114 </Counters>
115 </CounterCategory>
116 </CounterCategories>
117 </CounterSet>
118 <CounterSet Name="Controller" CounterSetType="Controller" LocId="CounterSet_Controller">
119 <CounterCategories>
120 <CounterCategory Name="Memory">
121 <Counters>
122 <Counter Name="% Committed Bytes In Use" Range="100" />
123 <Counter Name="Available MBytes" RangeGroup="Memory Bytes" HigherIsBetter="true">
124 <ThresholdRules>
125 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
126 <RuleParameters>
127 <RuleParameter Name="AlertIfOver" Value="False" />
128 <RuleParameter Name="WarningThreshold" Value="100" />
129 <RuleParameter Name="CriticalThreshold" Value="50" />
130 </RuleParameters>
131 </ThresholdRule>
132 </ThresholdRules>
133 </Counter>
134 <Counter Name="Page Faults/sec" />
135 <Counter Name="Pages/sec" />
136 <Counter Name="Pool Paged Bytes" RangeGroup="Memory Bytes" />
137 <Counter Name="Pool Nonpaged bytes" RangeGroup="Memory Bytes" />
138 </Counters>
139 </CounterCategory>
140 <CounterCategory Name="Network Interface">
141 <Counters>
142 <Counter Name="Bytes Received/sec" RangeGroup="Network Bytes" />
143 <Counter Name="Bytes Sent/sec" RangeGroup="Network Bytes" />
144 <Counter Name="Output Queue Length">
145 <ThresholdRules>
146 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
147 <RuleParameters>
148 <RuleParameter Name="AlertIfOver" Value="True" />
149 <RuleParameter Name="WarningThreshold" Value="1.5" />
150 <RuleParameter Name="CriticalThreshold" Value="2" />
151 </RuleParameters>
152 </ThresholdRule>
153 </ThresholdRules>
154 </Counter>
155 <Counter Name="Packets Received/sec" RangeGroup="Network Packets" />
156 <Counter Name="Packets Sent/sec" RangeGroup="Network Packets" />
157 <Counter Name="Current Bandwidth" RangeGroup="Network Bytes" />
158 <Counter Name="Bytes Total/sec" RangeGroup="Network Bytes">
159 <ThresholdRules>
160 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareCounters, Microsoft.VisualStudio.QualityTools.LoadTest, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
161 <RuleParameters>
162 <RuleParameter Name="DependentCategory" Value="Network Interface" />
163 <RuleParameter Name="DependentCounter" Value="Current Bandwidth" />
164 <RuleParameter Name="DependentInstance" Value="" />
165 <RuleParameter Name="AlertIfOver" Value="True" />
166 <RuleParameter Name="WarningThreshold" Value="0.6" />
167 <RuleParameter Name="CriticalThreshold" Value="0.7" />
168 </RuleParameters>
169 </ThresholdRule>
170 </ThresholdRules>
171 </Counter>
172 </Counters>
173 <Instances>
174 <Instance Name="*" />
175 </Instances>
176 </CounterCategory>
177 <CounterCategory Name="PhysicalDisk">
178 <Counters>
179 <Counter Name="% Disk Read Time" Range="100" />
180 <Counter Name="% Disk Time" Range="100" />
181 <Counter Name="% Disk Write Time" Range="100" />
182 <Counter Name="% Idle Time" Range="100" HigherIsBetter="true">
183 <ThresholdRules>
184 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
185 <RuleParameters>
186 <RuleParameter Name="AlertIfOver" Value="False" />
187 <RuleParameter Name="WarningThreshold" Value="40" />
188 <RuleParameter Name="CriticalThreshold" Value="20" />
189 </RuleParameters>
190 </ThresholdRule>
191 </ThresholdRules>
192 </Counter>
193 <Counter Name="Avg. Disk Bytes/Read" RangeGroup="DiskBytesRate" />
194 <Counter Name="Avg. Disk Bytes/Transfer" RangeGroup="DiskBytesRate" />
195 <Counter Name="Avg. Disk Bytes/Write" RangeGroup="DiskBytesRate" />
196 <Counter Name="Avg. Disk Queue Length" RangeGroup="Disk Queue Length" />
197 <Counter Name="Avg. Disk Read Queue Length" RangeGroup="Disk Queue Length" />
198 <Counter Name="Avg. Disk Write Queue Length" RangeGroup="Disk Queue Length" />
199 <Counter Name="Current Disk Queue Length" RangeGroup="Disk Queue Length" />
200 <Counter Name="Avg. Disk sec/Read" RangeGroup="Disk sec" />
201 <Counter Name="Avg. Disk sec/Transfer" RangeGroup="Disk sec" />
202 <Counter Name="Avg. Disk sec/Write" RangeGroup="Disk sec" />
203 <Counter Name="Disk Bytes/sec" RangeGroup="Disk Bytes sec" />
204 <Counter Name="Disk Read Bytes/sec" RangeGroup="Disk Bytes sec" />
205 <Counter Name="Disk Reads/sec" RangeGroup="Disk Transfers sec" />
206 <Counter Name="Disk Transfers/sec" RangeGroup="Disk Transfers sec" />
207 <Counter Name="Disk Write Bytes/sec" RangeGroup="Disk Bytes sec" />
208 <Counter Name="Disk Writes/sec" RangeGroup="Disk Transfers sec" />
209 <Counter Name="Split IO/Sec" RangeGroup="Disk Transfers sec" />
210 </Counters>
211 <Instances>
212 <Instance Name="*" />
213 </Instances>
214 </CounterCategory>
215 <CounterCategory Name="Processor">
216 <Counters>
217 <Counter Name="% Processor Time" Range="100">
218 <ThresholdRules>
219 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
220 <RuleParameters>
221 <RuleParameter Name="AlertIfOver" Value="True" />
222 <RuleParameter Name="WarningThreshold" Value="75" />
223 <RuleParameter Name="CriticalThreshold" Value="90" />
224 </RuleParameters>
225 </ThresholdRule>
226 </ThresholdRules>
227 </Counter>
228 <Counter Name="% Privileged Time" Range="100" />
229 <Counter Name="% User Time" Range="100" />
230 </Counters>
231 <Instances>
232 <Instance Name="_Total" />
233 </Instances>
234 </CounterCategory>
235 <CounterCategory Name="System">
236 <Counters>
237 <Counter Name="Context Switches/sec" />
238 <Counter Name="Processes" />
239 <Counter Name="Processor Queue Length" />
240 <Counter Name="Threads" />
241 </Counters>
242 </CounterCategory>
243 <CounterCategory Name="Process">
244 <Counters>
245 <Counter Name="% Processor Time" RangeGroup="Processor Time" />
246 <Counter Name="% Privileged Time" RangeGroup="Processor Time" />
247 <Counter Name="% User Time" RangeGroup="Processor Time" />
248 <Counter Name="Handle Count" />
249 <Counter Name="Thread Count" />
250 <Counter Name="Private Bytes" RangeGroup="Memory Bytes" />
251 <Counter Name="Virtual Bytes" RangeGroup="Memory Bytes" />
252 <Counter Name="Working Set" RangeGroup="Memory Bytes" />
253 </Counters>
254 <Instances>
255 <Instance Name="QTController" />
256 </Instances>
257 </CounterCategory>
258 </CounterCategories>
259 <DefaultCountersForAutomaticGraphs>
260 <DefaultCounter CategoryName="Processor" CounterName="% Processor Time" InstanceName="_Total" GraphName="" />
261 <DefaultCounter CategoryName="Memory" CounterName="Available MBytes" InstanceName="" GraphName="" />
262 </DefaultCountersForAutomaticGraphs>
263 </CounterSet>
264 <CounterSet Name="Agent" CounterSetType="Agent" LocId="CounterSet_Agent">
265 <CounterCategories>
266 <CounterCategory Name="Memory">
267 <Counters>
268 <Counter Name="% Committed Bytes In Use" Range="100" />
269 <Counter Name="Available MBytes" RangeGroup="Memory Bytes" HigherIsBetter="true">
270 <ThresholdRules>
271 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
272 <RuleParameters>
273 <RuleParameter Name="AlertIfOver" Value="False" />
274 <RuleParameter Name="WarningThreshold" Value="100" />
275 <RuleParameter Name="CriticalThreshold" Value="50" />
276 </RuleParameters>
277 </ThresholdRule>
278 </ThresholdRules>
279 </Counter>
280 <Counter Name="Page Faults/sec" />
281 <Counter Name="Pages/sec" />
282 <Counter Name="Pool Paged Bytes" RangeGroup="Memory Bytes" />
283 <Counter Name="Pool Nonpaged bytes" RangeGroup="Memory Bytes" />
284 </Counters>
285 </CounterCategory>
286 <CounterCategory Name="Network Interface">
287 <Counters>
288 <Counter Name="Bytes Received/sec" RangeGroup="Network Bytes" />
289 <Counter Name="Bytes Sent/sec" RangeGroup="Network Bytes" />
290 <Counter Name="Output Queue Length">
291 <ThresholdRules>
292 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
293 <RuleParameters>
294 <RuleParameter Name="AlertIfOver" Value="True" />
295 <RuleParameter Name="WarningThreshold" Value="1.5" />
296 <RuleParameter Name="CriticalThreshold" Value="2" />
297 </RuleParameters>
298 </ThresholdRule>
299 </ThresholdRules>
300 </Counter>
301 <Counter Name="Packets Received/sec" RangeGroup="Network Packets" />
302 <Counter Name="Packets Sent/sec" RangeGroup="Network Packets" />
303 <Counter Name="Current Bandwidth" RangeGroup="Network Bytes" />
304 <Counter Name="Bytes Total/sec" RangeGroup="Network Bytes">
305 <ThresholdRules>
306 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareCounters, Microsoft.VisualStudio.QualityTools.LoadTest, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
307 <RuleParameters>
308 <RuleParameter Name="DependentCategory" Value="Network Interface" />
309 <RuleParameter Name="DependentCounter" Value="Current Bandwidth" />
310 <RuleParameter Name="DependentInstance" Value="" />
311 <RuleParameter Name="AlertIfOver" Value="True" />
312 <RuleParameter Name="WarningThreshold" Value="0.6" />
313 <RuleParameter Name="CriticalThreshold" Value="0.7" />
314 </RuleParameters>
315 </ThresholdRule>
316 </ThresholdRules>
317 </Counter>
318 </Counters>
319 <Instances>
320 <Instance Name="*" />
321 </Instances>
322 </CounterCategory>
323 <CounterCategory Name="PhysicalDisk">
324 <Counters>
325 <Counter Name="% Disk Read Time" Range="100" />
326 <Counter Name="% Disk Time" Range="100" />
327 <Counter Name="% Disk Write Time" Range="100" />
328 <Counter Name="% Idle Time" Range="100" HigherIsBetter="true">
329 <ThresholdRules>
330 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
331 <RuleParameters>
332 <RuleParameter Name="AlertIfOver" Value="False" />
333 <RuleParameter Name="WarningThreshold" Value="40" />
334 <RuleParameter Name="CriticalThreshold" Value="20" />
335 </RuleParameters>
336 </ThresholdRule>
337 </ThresholdRules>
338 </Counter>
339 <Counter Name="Avg. Disk Bytes/Read" RangeGroup="DiskBytesRate" />
340 <Counter Name="Avg. Disk Bytes/Transfer" RangeGroup="DiskBytesRate" />
341 <Counter Name="Avg. Disk Bytes/Write" RangeGroup="DiskBytesRate" />
342 <Counter Name="Avg. Disk Queue Length" RangeGroup="Disk Queue Length" />
343 <Counter Name="Avg. Disk Read Queue Length" RangeGroup="Disk Queue Length" />
344 <Counter Name="Avg. Disk Write Queue Length" RangeGroup="Disk Queue Length" />
345 <Counter Name="Current Disk Queue Length" RangeGroup="Disk Queue Length" />
346 <Counter Name="Avg. Disk sec/Read" RangeGroup="Disk sec" />
347 <Counter Name="Avg. Disk sec/Transfer" RangeGroup="Disk sec" />
348 <Counter Name="Avg. Disk sec/Write" RangeGroup="Disk sec" />
349 <Counter Name="Disk Bytes/sec" RangeGroup="Disk Bytes sec" />
350 <Counter Name="Disk Read Bytes/sec" RangeGroup="Disk Bytes sec" />
351 <Counter Name="Disk Reads/sec" RangeGroup="Disk Transfers sec" />
352 <Counter Name="Disk Transfers/sec" RangeGroup="Disk Transfers sec" />
353 <Counter Name="Disk Write Bytes/sec" RangeGroup="Disk Bytes sec" />
354 <Counter Name="Disk Writes/sec" RangeGroup="Disk Transfers sec" />
355 <Counter Name="Split IO/Sec" RangeGroup="Disk Transfers sec" />
356 </Counters>
357 <Instances>
358 <Instance Name="*" />
359 </Instances>
360 </CounterCategory>
361 <CounterCategory Name="Processor">
362 <Counters>
363 <Counter Name="% Processor Time" Range="100">
364 <ThresholdRules>
365 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
366 <RuleParameters>
367 <RuleParameter Name="AlertIfOver" Value="True" />
368 <RuleParameter Name="WarningThreshold" Value="75" />
369 <RuleParameter Name="CriticalThreshold" Value="90" />
370 </RuleParameters>
371 </ThresholdRule>
372 </ThresholdRules>
373 </Counter>
374 <Counter Name="% Privileged Time" Range="100" />
375 <Counter Name="% User Time" Range="100" />
376 </Counters>
377 <Instances>
378 <Instance Name="0" />
379 <Instance Name="_Total" />
380 </Instances>
381 </CounterCategory>
382 <CounterCategory Name="System">
383 <Counters>
384 <Counter Name="Context Switches/sec" />
385 <Counter Name="Processes" />
386 <Counter Name="Processor Queue Length" />
387 <Counter Name="Threads" />
388 </Counters>
389 </CounterCategory>
390 <CounterCategory Name="Process">
391 <Counters>
392 <Counter Name="% Processor Time" RangeGroup="Processor Time" />
393 <Counter Name="% Privileged Time" RangeGroup="Processor Time" />
394 <Counter Name="% User Time" RangeGroup="Processor Time" />
395 <Counter Name="Handle Count" />
396 <Counter Name="Thread Count" />
397 <Counter Name="Private Bytes" RangeGroup="Memory Bytes" />
398 <Counter Name="Virtual Bytes" RangeGroup="Memory Bytes" />
399 <Counter Name="Working Set" RangeGroup="Memory Bytes" />
400 </Counters>
401 <Instances>
402 <Instance Name="devenv" />
403 <Instance Name="QTAgentService" />
404 <Instance Name="QTAgent" />
405 <Instance Name="QTAgent32" />
406 <Instance Name="QTDCAgent" />
407 <Instance Name="QTDCAgent32" />
408 </Instances>
409 </CounterCategory>
410 </CounterCategories>
411 <DefaultCountersForAutomaticGraphs>
412 <DefaultCounter CategoryName="Processor" CounterName="% Processor Time" InstanceName="0" GraphName="" RunType="Local" />
413 <DefaultCounter CategoryName="Processor" CounterName="% Processor Time" InstanceName="_Total" GraphName="" RunType="Remote" />
414 <DefaultCounter CategoryName="Memory" CounterName="Available MBytes" InstanceName="" GraphName="" />
415 </DefaultCountersForAutomaticGraphs>
416 </CounterSet>
417 </CounterSets>
418 <RunConfigurations>
419 <RunConfiguration Name="Run Settings1" Description="" ResultsStoreType="Database" TimingDetailsStorage="AllIndividualDetails" SaveTestLogsOnError="true" SaveTestLogsFrequency="1" MaxErrorDetails="200" MaxErrorsPerType="1000" MaxThresholdViolations="1000" MaxRequestUrlsReported="1000" UseTestIterations="true" RunDuration="600" WarmupTime="0" CoolDownTime="0" TestIterations="20" WebTestConnectionModel="ConnectionPerUser" WebTestConnectionPoolSize="50" SampleRate="5" ValidationLevel="High" SqlTracingConnectString="" SqlTracingConnectStringDisplayValue="" SqlTracingDirectory="" SqlTracingEnabled="false" SqlTracingMinimumDuration="500" RunUnitTestsInAppDomain="true">
420 <CounterSetMappings>
421 <CounterSetMapping ComputerName="[CONTROLLER MACHINE]">
422 <CounterSetReferences>
423 <CounterSetReference CounterSetName="LoadTest" />
424 <CounterSetReference CounterSetName="Controller" />
425 </CounterSetReferences>
426 </CounterSetMapping>
427 <CounterSetMapping ComputerName="[AGENT MACHINES]">
428 <CounterSetReferences>
429 <CounterSetReference CounterSetName="Agent" />
430 </CounterSetReferences>
431 </CounterSetMapping>
432 </CounterSetMappings>
433 </RunConfiguration>
434 </RunConfigurations>
435 </LoadTest>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <LoadTest Name="LoadTest2" Description="" Owner="" storage="c:\users\gerdes\documents\visual studio 2010\lil_vstt_plugins\testproject1\loadtest2.loadtest" Priority="2147483647" Enabled="true" CssProjectStructure="" CssIteration="" DeploymentItemsEditable="" WorkItemIds="" TraceLevel="None" CurrentRunConfig="Run Settings1" Id="fc290026-ccfc-431e-9205-3b60d7d6f429" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
3 <Scenarios>
4 <Scenario Name="Scenario1" DelayBetweenIterations="1" PercentNewUsers="0" IPSwitching="true" TestMixType="PercentageOfUsersRunning" ApplyDistributionToPacingDelay="true" MaxTestIterations="0" DisableDuringWarmup="false" DelayStartTime="0" AllowedAgents="">
5 <ThinkProfile Value="0.2" Pattern="NormalDistribution" />
6 <LoadProfile Pattern="Constant" InitialUsers="1" />
7 <TestMix>
8 <TestProfile Name="TestMethod1" Path="bin\release\testproject1.dll" Id="59863143-3238-122e-4d8a-637b491cc755" Percentage="100" Type="Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement, Microsoft.VisualStudio.QualityTools.Tips.UnitTest.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
9 </TestMix>
10 <BrowserMix>
11 <BrowserProfile Percentage="100">
12 <Browser Name="Internet Explorer 7.0" MaxConnections="2">
13 <Headers>
14 <Header Name="User-Agent" Value="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" />
15 <Header Name="Accept" Value="*/*" />
16 <Header Name="Accept-Language" Value="{{$IEAcceptLanguage}}" />
17 <Header Name="Accept-Encoding" Value="GZIP" />
18 </Headers>
19 </Browser>
20 </BrowserProfile>
21 </BrowserMix>
22 <NetworkMix>
23 <NetworkProfile Percentage="100">
24 <Network Name="LAN" BandwidthInKbps="1000000" NetworkProfileConfigurationXml="&lt;Emulation&gt;&lt;VirtualChannel name=&quot;defaultChannel&quot;&gt;&lt;FilterList/&gt;&lt;VirtualLink instances=&quot;1&quot; name=&quot;defaultLink&quot;&gt;&lt;LinkRule dir=&quot;upstream&quot;&gt;&lt;Bandwidth&gt;&lt;Speed unit=&quot;kbps&quot;&gt;1000000&lt;/Speed&gt;&lt;/Bandwidth&gt;&lt;/LinkRule&gt;&lt;LinkRule dir=&quot;downstream&quot;&gt;&lt;Bandwidth&gt;&lt;Speed unit=&quot;kbps&quot;&gt;1000000&lt;/Speed&gt;&lt;/Bandwidth&gt;&lt;/LinkRule&gt;&lt;/VirtualLink&gt;&lt;/VirtualChannel&gt;&lt;/Emulation&gt;" />
25 </NetworkProfile>
26 </NetworkMix>
27 </Scenario>
28 </Scenarios>
29 <CounterSets>
30 <CounterSet Name="LoadTest" CounterSetType="LoadTest" LocId="">
31 <CounterCategories>
32 <CounterCategory Name="LoadTest:Scenario">
33 <Counters>
34 <Counter Name="User Load" HigherIsBetter="true" />
35 <Counter Name="Tests Running" HigherIsBetter="true" />
36 </Counters>
37 </CounterCategory>
38 <CounterCategory Name="LoadTest:Test">
39 <Counters>
40 <Counter Name="Total Tests" HigherIsBetter="true" />
41 <Counter Name="Passed Tests" HigherIsBetter="true" />
42 <Counter Name="Failed Tests" />
43 <Counter Name="Tests/Sec" HigherIsBetter="true" />
44 <Counter Name="Passed Tests/Sec" HigherIsBetter="true" />
45 <Counter Name="Failed Tests/Sec" />
46 <Counter Name="Avg. Requests/Test" HigherIsBetter="true" />
47 <Counter Name="Avg. Test Time" />
48 <Counter Name="% Time in LoadTestPlugin" />
49 <Counter Name="% Time in WebTest code" />
50 <Counter Name="% Time in Rules" />
51 </Counters>
52 </CounterCategory>
53 <CounterCategory Name="LoadTest:Transaction">
54 <Counters>
55 <Counter Name="Total Transactions" HigherIsBetter="true" />
56 <Counter Name="Avg. Transaction Time" />
57 <Counter Name="Avg. Response Time" />
58 <Counter Name="Transactions/Sec" HigherIsBetter="true" />
59 </Counters>
60 </CounterCategory>
61 <CounterCategory Name="LoadTest:Errors">
62 <Counters>
63 <Counter Name="Http Errors" />
64 <Counter Name="Validation Rule Errors" />
65 <Counter Name="Extraction Rule Errors" />
66 <Counter Name="Requests Timed Out" />
67 <Counter Name="Exceptions" />
68 <Counter Name="Total Errors" />
69 <Counter Name="Errors/Sec" />
70 <Counter Name="Threshold Violations/Sec" />
71 </Counters>
72 </CounterCategory>
73 <CounterCategory Name="LoadTest:Page">
74 <Counters>
75 <Counter Name="Total Pages" HigherIsBetter="true" />
76 <Counter Name="Avg. Page Time" />
77 <Counter Name="Page Response Time Goal" HigherIsBetter="true" />
78 <Counter Name="% Pages Meeting Goal" HigherIsBetter="true" />
79 <Counter Name="Pages/Sec" HigherIsBetter="true" />
80 </Counters>
81 </CounterCategory>
82 <CounterCategory Name="LoadTest:Request">
83 <Counters>
84 <Counter Name="Total Requests" HigherIsBetter="true" />
85 <Counter Name="Passed Requests" HigherIsBetter="true" />
86 <Counter Name="Failed Requests" />
87 <Counter Name="Cached Requests" HigherIsBetter="true" />
88 <Counter Name="Requests/Sec" HigherIsBetter="true" />
89 <Counter Name="Passed Requests/Sec" HigherIsBetter="true" />
90 <Counter Name="Failed Requests/Sec" />
91 <Counter Name="Avg. First Byte Time" />
92 <Counter Name="Avg. Response Time" />
93 <Counter Name="Avg. Connection Wait Time">
94 <ThresholdRules>
95 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareCounters, Microsoft.VisualStudio.QualityTools.LoadTest, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
96 <RuleParameters>
97 <RuleParameter Name="DependentCategory" Value="LoadTest:Page" />
98 <RuleParameter Name="DependentCounter" Value="Avg. Page Time" />
99 <RuleParameter Name="DependentInstance" Value="_Total" />
100 <RuleParameter Name="AlertIfOver" Value="True" />
101 <RuleParameter Name="WarningThreshold" Value="0.25" />
102 <RuleParameter Name="CriticalThreshold" Value="0.5" />
103 </RuleParameters>
104 </ThresholdRule>
105 </ThresholdRules>
106 </Counter>
107 <Counter Name="Avg. Content Length" />
108 </Counters>
109 </CounterCategory>
110 <CounterCategory Name="LoadTest:LogEntries">
111 <Counters>
112 <Counter Name="Total Log Entries" />
113 <Counter Name="Log Entries/Sec" />
114 </Counters>
115 </CounterCategory>
116 </CounterCategories>
117 </CounterSet>
118 <CounterSet Name="Controller" CounterSetType="Controller" LocId="CounterSet_Controller">
119 <CounterCategories>
120 <CounterCategory Name="Memory">
121 <Counters>
122 <Counter Name="% Committed Bytes In Use" Range="100" />
123 <Counter Name="Available MBytes" RangeGroup="Memory Bytes" HigherIsBetter="true">
124 <ThresholdRules>
125 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
126 <RuleParameters>
127 <RuleParameter Name="AlertIfOver" Value="False" />
128 <RuleParameter Name="WarningThreshold" Value="100" />
129 <RuleParameter Name="CriticalThreshold" Value="50" />
130 </RuleParameters>
131 </ThresholdRule>
132 </ThresholdRules>
133 </Counter>
134 <Counter Name="Page Faults/sec" />
135 <Counter Name="Pages/sec" />
136 <Counter Name="Pool Paged Bytes" RangeGroup="Memory Bytes" />
137 <Counter Name="Pool Nonpaged bytes" RangeGroup="Memory Bytes" />
138 </Counters>
139 </CounterCategory>
140 <CounterCategory Name="Network Interface">
141 <Counters>
142 <Counter Name="Bytes Received/sec" RangeGroup="Network Bytes" />
143 <Counter Name="Bytes Sent/sec" RangeGroup="Network Bytes" />
144 <Counter Name="Output Queue Length">
145 <ThresholdRules>
146 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
147 <RuleParameters>
148 <RuleParameter Name="AlertIfOver" Value="True" />
149 <RuleParameter Name="WarningThreshold" Value="1.5" />
150 <RuleParameter Name="CriticalThreshold" Value="2" />
151 </RuleParameters>
152 </ThresholdRule>
153 </ThresholdRules>
154 </Counter>
155 <Counter Name="Packets Received/sec" RangeGroup="Network Packets" />
156 <Counter Name="Packets Sent/sec" RangeGroup="Network Packets" />
157 <Counter Name="Current Bandwidth" RangeGroup="Network Bytes" />
158 <Counter Name="Bytes Total/sec" RangeGroup="Network Bytes">
159 <ThresholdRules>
160 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareCounters, Microsoft.VisualStudio.QualityTools.LoadTest, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
161 <RuleParameters>
162 <RuleParameter Name="DependentCategory" Value="Network Interface" />
163 <RuleParameter Name="DependentCounter" Value="Current Bandwidth" />
164 <RuleParameter Name="DependentInstance" Value="" />
165 <RuleParameter Name="AlertIfOver" Value="True" />
166 <RuleParameter Name="WarningThreshold" Value="0.6" />
167 <RuleParameter Name="CriticalThreshold" Value="0.7" />
168 </RuleParameters>
169 </ThresholdRule>
170 </ThresholdRules>
171 </Counter>
172 </Counters>
173 <Instances>
174 <Instance Name="*" />
175 </Instances>
176 </CounterCategory>
177 <CounterCategory Name="PhysicalDisk">
178 <Counters>
179 <Counter Name="% Disk Read Time" Range="100" />
180 <Counter Name="% Disk Time" Range="100" />
181 <Counter Name="% Disk Write Time" Range="100" />
182 <Counter Name="% Idle Time" Range="100" HigherIsBetter="true">
183 <ThresholdRules>
184 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
185 <RuleParameters>
186 <RuleParameter Name="AlertIfOver" Value="False" />
187 <RuleParameter Name="WarningThreshold" Value="40" />
188 <RuleParameter Name="CriticalThreshold" Value="20" />
189 </RuleParameters>
190 </ThresholdRule>
191 </ThresholdRules>
192 </Counter>
193 <Counter Name="Avg. Disk Bytes/Read" RangeGroup="DiskBytesRate" />
194 <Counter Name="Avg. Disk Bytes/Transfer" RangeGroup="DiskBytesRate" />
195 <Counter Name="Avg. Disk Bytes/Write" RangeGroup="DiskBytesRate" />
196 <Counter Name="Avg. Disk Queue Length" RangeGroup="Disk Queue Length" />
197 <Counter Name="Avg. Disk Read Queue Length" RangeGroup="Disk Queue Length" />
198 <Counter Name="Avg. Disk Write Queue Length" RangeGroup="Disk Queue Length" />
199 <Counter Name="Current Disk Queue Length" RangeGroup="Disk Queue Length" />
200 <Counter Name="Avg. Disk sec/Read" RangeGroup="Disk sec" />
201 <Counter Name="Avg. Disk sec/Transfer" RangeGroup="Disk sec" />
202 <Counter Name="Avg. Disk sec/Write" RangeGroup="Disk sec" />
203 <Counter Name="Disk Bytes/sec" RangeGroup="Disk Bytes sec" />
204 <Counter Name="Disk Read Bytes/sec" RangeGroup="Disk Bytes sec" />
205 <Counter Name="Disk Reads/sec" RangeGroup="Disk Transfers sec" />
206 <Counter Name="Disk Transfers/sec" RangeGroup="Disk Transfers sec" />
207 <Counter Name="Disk Write Bytes/sec" RangeGroup="Disk Bytes sec" />
208 <Counter Name="Disk Writes/sec" RangeGroup="Disk Transfers sec" />
209 <Counter Name="Split IO/Sec" RangeGroup="Disk Transfers sec" />
210 </Counters>
211 <Instances>
212 <Instance Name="*" />
213 </Instances>
214 </CounterCategory>
215 <CounterCategory Name="Processor">
216 <Counters>
217 <Counter Name="% Processor Time" Range="100">
218 <ThresholdRules>
219 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
220 <RuleParameters>
221 <RuleParameter Name="AlertIfOver" Value="True" />
222 <RuleParameter Name="WarningThreshold" Value="75" />
223 <RuleParameter Name="CriticalThreshold" Value="90" />
224 </RuleParameters>
225 </ThresholdRule>
226 </ThresholdRules>
227 </Counter>
228 <Counter Name="% Privileged Time" Range="100" />
229 <Counter Name="% User Time" Range="100" />
230 </Counters>
231 <Instances>
232 <Instance Name="_Total" />
233 </Instances>
234 </CounterCategory>
235 <CounterCategory Name="System">
236 <Counters>
237 <Counter Name="Context Switches/sec" />
238 <Counter Name="Processes" />
239 <Counter Name="Processor Queue Length" />
240 <Counter Name="Threads" />
241 </Counters>
242 </CounterCategory>
243 <CounterCategory Name="Process">
244 <Counters>
245 <Counter Name="% Processor Time" RangeGroup="Processor Time" />
246 <Counter Name="% Privileged Time" RangeGroup="Processor Time" />
247 <Counter Name="% User Time" RangeGroup="Processor Time" />
248 <Counter Name="Handle Count" />
249 <Counter Name="Thread Count" />
250 <Counter Name="Private Bytes" RangeGroup="Memory Bytes" />
251 <Counter Name="Virtual Bytes" RangeGroup="Memory Bytes" />
252 <Counter Name="Working Set" RangeGroup="Memory Bytes" />
253 </Counters>
254 <Instances>
255 <Instance Name="QTController" />
256 </Instances>
257 </CounterCategory>
258 </CounterCategories>
259 <DefaultCountersForAutomaticGraphs>
260 <DefaultCounter CategoryName="Processor" CounterName="% Processor Time" InstanceName="_Total" GraphName="" />
261 <DefaultCounter CategoryName="Memory" CounterName="Available MBytes" InstanceName="" GraphName="" />
262 </DefaultCountersForAutomaticGraphs>
263 </CounterSet>
264 <CounterSet Name="Agent" CounterSetType="Agent" LocId="CounterSet_Agent">
265 <CounterCategories>
266 <CounterCategory Name="Memory">
267 <Counters>
268 <Counter Name="% Committed Bytes In Use" Range="100" />
269 <Counter Name="Available MBytes" RangeGroup="Memory Bytes" HigherIsBetter="true">
270 <ThresholdRules>
271 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
272 <RuleParameters>
273 <RuleParameter Name="AlertIfOver" Value="False" />
274 <RuleParameter Name="WarningThreshold" Value="100" />
275 <RuleParameter Name="CriticalThreshold" Value="50" />
276 </RuleParameters>
277 </ThresholdRule>
278 </ThresholdRules>
279 </Counter>
280 <Counter Name="Page Faults/sec" />
281 <Counter Name="Pages/sec" />
282 <Counter Name="Pool Paged Bytes" RangeGroup="Memory Bytes" />
283 <Counter Name="Pool Nonpaged bytes" RangeGroup="Memory Bytes" />
284 </Counters>
285 </CounterCategory>
286 <CounterCategory Name="Network Interface">
287 <Counters>
288 <Counter Name="Bytes Received/sec" RangeGroup="Network Bytes" />
289 <Counter Name="Bytes Sent/sec" RangeGroup="Network Bytes" />
290 <Counter Name="Output Queue Length">
291 <ThresholdRules>
292 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
293 <RuleParameters>
294 <RuleParameter Name="AlertIfOver" Value="True" />
295 <RuleParameter Name="WarningThreshold" Value="1.5" />
296 <RuleParameter Name="CriticalThreshold" Value="2" />
297 </RuleParameters>
298 </ThresholdRule>
299 </ThresholdRules>
300 </Counter>
301 <Counter Name="Packets Received/sec" RangeGroup="Network Packets" />
302 <Counter Name="Packets Sent/sec" RangeGroup="Network Packets" />
303 <Counter Name="Current Bandwidth" RangeGroup="Network Bytes" />
304 <Counter Name="Bytes Total/sec" RangeGroup="Network Bytes">
305 <ThresholdRules>
306 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareCounters, Microsoft.VisualStudio.QualityTools.LoadTest, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
307 <RuleParameters>
308 <RuleParameter Name="DependentCategory" Value="Network Interface" />
309 <RuleParameter Name="DependentCounter" Value="Current Bandwidth" />
310 <RuleParameter Name="DependentInstance" Value="" />
311 <RuleParameter Name="AlertIfOver" Value="True" />
312 <RuleParameter Name="WarningThreshold" Value="0.6" />
313 <RuleParameter Name="CriticalThreshold" Value="0.7" />
314 </RuleParameters>
315 </ThresholdRule>
316 </ThresholdRules>
317 </Counter>
318 </Counters>
319 <Instances>
320 <Instance Name="*" />
321 </Instances>
322 </CounterCategory>
323 <CounterCategory Name="PhysicalDisk">
324 <Counters>
325 <Counter Name="% Disk Read Time" Range="100" />
326 <Counter Name="% Disk Time" Range="100" />
327 <Counter Name="% Disk Write Time" Range="100" />
328 <Counter Name="% Idle Time" Range="100" HigherIsBetter="true">
329 <ThresholdRules>
330 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
331 <RuleParameters>
332 <RuleParameter Name="AlertIfOver" Value="False" />
333 <RuleParameter Name="WarningThreshold" Value="40" />
334 <RuleParameter Name="CriticalThreshold" Value="20" />
335 </RuleParameters>
336 </ThresholdRule>
337 </ThresholdRules>
338 </Counter>
339 <Counter Name="Avg. Disk Bytes/Read" RangeGroup="DiskBytesRate" />
340 <Counter Name="Avg. Disk Bytes/Transfer" RangeGroup="DiskBytesRate" />
341 <Counter Name="Avg. Disk Bytes/Write" RangeGroup="DiskBytesRate" />
342 <Counter Name="Avg. Disk Queue Length" RangeGroup="Disk Queue Length" />
343 <Counter Name="Avg. Disk Read Queue Length" RangeGroup="Disk Queue Length" />
344 <Counter Name="Avg. Disk Write Queue Length" RangeGroup="Disk Queue Length" />
345 <Counter Name="Current Disk Queue Length" RangeGroup="Disk Queue Length" />
346 <Counter Name="Avg. Disk sec/Read" RangeGroup="Disk sec" />
347 <Counter Name="Avg. Disk sec/Transfer" RangeGroup="Disk sec" />
348 <Counter Name="Avg. Disk sec/Write" RangeGroup="Disk sec" />
349 <Counter Name="Disk Bytes/sec" RangeGroup="Disk Bytes sec" />
350 <Counter Name="Disk Read Bytes/sec" RangeGroup="Disk Bytes sec" />
351 <Counter Name="Disk Reads/sec" RangeGroup="Disk Transfers sec" />
352 <Counter Name="Disk Transfers/sec" RangeGroup="Disk Transfers sec" />
353 <Counter Name="Disk Write Bytes/sec" RangeGroup="Disk Bytes sec" />
354 <Counter Name="Disk Writes/sec" RangeGroup="Disk Transfers sec" />
355 <Counter Name="Split IO/Sec" RangeGroup="Disk Transfers sec" />
356 </Counters>
357 <Instances>
358 <Instance Name="*" />
359 </Instances>
360 </CounterCategory>
361 <CounterCategory Name="Processor">
362 <Counters>
363 <Counter Name="% Processor Time" Range="100">
364 <ThresholdRules>
365 <ThresholdRule Classname="Microsoft.VisualStudio.TestTools.WebStress.Rules.ThresholdRuleCompareConstant, Microsoft.VisualStudio.QualityTools.LoadTest">
366 <RuleParameters>
367 <RuleParameter Name="AlertIfOver" Value="True" />
368 <RuleParameter Name="WarningThreshold" Value="75" />
369 <RuleParameter Name="CriticalThreshold" Value="90" />
370 </RuleParameters>
371 </ThresholdRule>
372 </ThresholdRules>
373 </Counter>
374 <Counter Name="% Privileged Time" Range="100" />
375 <Counter Name="% User Time" Range="100" />
376 </Counters>
377 <Instances>
378 <Instance Name="0" />
379 <Instance Name="_Total" />
380 </Instances>
381 </CounterCategory>
382 <CounterCategory Name="System">
383 <Counters>
384 <Counter Name="Context Switches/sec" />
385 <Counter Name="Processes" />
386 <Counter Name="Processor Queue Length" />
387 <Counter Name="Threads" />
388 </Counters>
389 </CounterCategory>
390 <CounterCategory Name="Process">
391 <Counters>
392 <Counter Name="% Processor Time" RangeGroup="Processor Time" />
393 <Counter Name="% Privileged Time" RangeGroup="Processor Time" />
394 <Counter Name="% User Time" RangeGroup="Processor Time" />
395 <Counter Name="Handle Count" />
396 <Counter Name="Thread Count" />
397 <Counter Name="Private Bytes" RangeGroup="Memory Bytes" />
398 <Counter Name="Virtual Bytes" RangeGroup="Memory Bytes" />
399 <Counter Name="Working Set" RangeGroup="Memory Bytes" />
400 </Counters>
401 <Instances>
402 <Instance Name="devenv" />
403 <Instance Name="QTAgentService" />
404 <Instance Name="QTAgent" />
405 <Instance Name="QTAgent32" />
406 <Instance Name="QTDCAgent" />
407 <Instance Name="QTDCAgent32" />
408 </Instances>
409 </CounterCategory>
410 </CounterCategories>
411 <DefaultCountersForAutomaticGraphs>
412 <DefaultCounter CategoryName="Processor" CounterName="% Processor Time" InstanceName="0" GraphName="" RunType="Local" />
413 <DefaultCounter CategoryName="Processor" CounterName="% Processor Time" InstanceName="_Total" GraphName="" RunType="Remote" />
414 <DefaultCounter CategoryName="Memory" CounterName="Available MBytes" InstanceName="" GraphName="" />
415 </DefaultCountersForAutomaticGraphs>
416 </CounterSet>
417 </CounterSets>
418 <RunConfigurations>
419 <RunConfiguration Name="Run Settings1" Description="" ResultsStoreType="Database" TimingDetailsStorage="AllIndividualDetails" SaveTestLogsOnError="true" SaveTestLogsFrequency="1" MaxErrorDetails="200" MaxErrorsPerType="1000" MaxThresholdViolations="1000" MaxRequestUrlsReported="1000" UseTestIterations="true" RunDuration="600" WarmupTime="0" CoolDownTime="0" TestIterations="20" WebTestConnectionModel="ConnectionPerUser" WebTestConnectionPoolSize="50" SampleRate="5" ValidationLevel="High" SqlTracingConnectString="" SqlTracingConnectStringDisplayValue="" SqlTracingDirectory="" SqlTracingEnabled="false" SqlTracingMinimumDuration="500" RunUnitTestsInAppDomain="true">
420 <CounterSetMappings>
421 <CounterSetMapping ComputerName="[CONTROLLER MACHINE]">
422 <CounterSetReferences>
423 <CounterSetReference CounterSetName="LoadTest" />
424 <CounterSetReference CounterSetName="Controller" />
425 </CounterSetReferences>
426 </CounterSetMapping>
427 <CounterSetMapping ComputerName="[AGENT MACHINES]">
428 <CounterSetReferences>
429 <CounterSetReference CounterSetName="Agent" />
430 </CounterSetReferences>
431 </CounterSetMapping>
432 </CounterSetMappings>
433 </RunConfiguration>
434 </RunConfigurations>
435 <LoadTestPlugins>
436 <LoadTestPlugin Classname="LIL_VSTT_Plugins.SetTestParameter, LIL_VSTT_Plugins, Version=1.2.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="Set Test Context Parameters" Description="(C) Copyright 2011 LIGHTS IN LINE AB&#xD;&#xA;Sätter parametrar i testcontextet för tester i mixen hämtat från en CSV fil">
437 <RuleParameters>
438 <RuleParameter Name="Connection_String" Value="C:\Users\gerdes\Userdata.csv" />
439 <RuleParameter Name="Has_col_name" Value="True" />
440 <RuleParameter Name="Autosplit" Value="False" />
441 <RuleParameter Name="Parameter_Name" Value="UserName2" />
442 <RuleParameter Name="LogFilePathString" Value="C:\Users\gerdes\Fungerande2.log" />
443 <RuleParameter Name="LogFileAppendID" Value="True" />
444 <RuleParameter Name="LogFileAppendName" Value="False" />
445 <RuleParameter Name="Use_Random" Value="False" />
446 <RuleParameter Name="Use_Unique" Value="False" />
447 <RuleParameter Name="Use_UniqueIteration" Value="False" />
448 <RuleParameter Name="Use_Loop" Value="True" />
449 <RuleParameter Name="Log_To_File" Value="True" />
450 <RuleParameter Name="Test_Names" Value="" />
451 <RuleParameter Name="Scenario_Names" Value="" />
452 <RuleParameter Name="Agent_Names" Value="" />
453 </RuleParameters>
454 </LoadTestPlugin>
455 <LoadTestPlugin Classname="LIL_VSTT_Plugins.SetTestParameter, LIL_VSTT_Plugins, Version=1.2.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="Set Test Context Parameters" Description="(C) Copyright 2011 LIGHTS IN LINE AB&#xD;&#xA;Sätter parametrar i testcontextet för tester i mixen hämtat från en CSV fil">
456 <RuleParameters>
457 <RuleParameter Name="Connection_String" Value="C:\Users\gerdes\Userdata.csv" />
458 <RuleParameter Name="Has_col_name" Value="True" />
459 <RuleParameter Name="Autosplit" Value="False" />
460 <RuleParameter Name="Parameter_Name" Value="UserName" />
461 <RuleParameter Name="LogFilePathString" Value="C:\Users\gerdes\Fungerande.log" />
462 <RuleParameter Name="LogFileAppendID" Value="True" />
463 <RuleParameter Name="LogFileAppendName" Value="False" />
464 <RuleParameter Name="Use_Random" Value="False" />
465 <RuleParameter Name="Use_Unique" Value="False" />
466 <RuleParameter Name="Use_UniqueIteration" Value="False" />
467 <RuleParameter Name="Use_Loop" Value="True" />
468 <RuleParameter Name="Log_To_File" Value="True" />
469 <RuleParameter Name="Test_Names" Value="" />
470 <RuleParameter Name="Scenario_Names" Value="" />
471 <RuleParameter Name="Agent_Names" Value="" />
472 </RuleParameters>
473 </LoadTestPlugin>
474 </LoadTestPlugins>
475 </LoadTest>
...\ No newline at end of file ...\ No newline at end of file
1 using System.Reflection;
2 using System.Runtime.CompilerServices;
3 using System.Runtime.InteropServices;
4
5 // General Information about an assembly is controlled through the following
6 // set of attributes. Change these attribute values to modify the information
7 // associated with an assembly.
8 [assembly: AssemblyTitle("TestProject1")]
9 [assembly: AssemblyDescription("")]
10 [assembly: AssemblyConfiguration("")]
11 [assembly: AssemblyCompany("Microsoft")]
12 [assembly: AssemblyProduct("TestProject1")]
13 [assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
14 [assembly: AssemblyTrademark("")]
15 [assembly: AssemblyCulture("")]
16
17 // Setting ComVisible to false makes the types in this assembly not visible
18 // to COM components. If you need to access a type in this assembly from
19 // COM, set the ComVisible attribute to true on that type.
20 [assembly: ComVisible(false)]
21
22 // The following GUID is for the ID of the typelib if this project is exposed to COM
23 [assembly: Guid("c10cf0ce-1b37-49b2-8ef1-2b588d2fde1d")]
24
25 // Version information for an assembly consists of the following four values:
26 //
27 // Major Version
28 // Minor Version
29 // Build Number
30 // Revision
31 //
32 // You can specify all the values or you can default the Build and Revision Numbers
33 // by using the '*' as shown below:
34 [assembly: AssemblyVersion("1.0.0.0")]
35 [assembly: AssemblyFileVersion("1.0.0.0")]
1 <?xml version="1.0" encoding="utf-8"?>
2 <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 <PropertyGroup>
4 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
5 <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
6 <ProductVersion>
7 </ProductVersion>
8 <SchemaVersion>2.0</SchemaVersion>
9 <ProjectGuid>{01CF59F6-F912-447A-91BC-0301FDA09C02}</ProjectGuid>
10 <OutputType>Library</OutputType>
11 <AppDesignerFolder>Properties</AppDesignerFolder>
12 <RootNamespace>TestProject1</RootNamespace>
13 <AssemblyName>TestProject1</AssemblyName>
14 <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
15 <FileAlignment>512</FileAlignment>
16 <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
17 <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
18 <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
19 <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
20 <IsCodedUITest>False</IsCodedUITest>
21 <TestProjectType>WebTest</TestProjectType>
22 <FileUpgradeFlags>
23 </FileUpgradeFlags>
24 <UpgradeBackupLocation>
25 </UpgradeBackupLocation>
26 <OldToolsVersion>4.0</OldToolsVersion>
27 </PropertyGroup>
28 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
29 <DebugSymbols>true</DebugSymbols>
30 <DebugType>full</DebugType>
31 <Optimize>false</Optimize>
32 <OutputPath>bin\Debug\</OutputPath>
33 <DefineConstants>DEBUG;TRACE</DefineConstants>
34 <ErrorReport>prompt</ErrorReport>
35 <WarningLevel>4</WarningLevel>
36 </PropertyGroup>
37 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
38 <DebugType>pdbonly</DebugType>
39 <Optimize>true</Optimize>
40 <OutputPath>bin\Release\</OutputPath>
41 <DefineConstants>TRACE</DefineConstants>
42 <ErrorReport>prompt</ErrorReport>
43 <WarningLevel>4</WarningLevel>
44 </PropertyGroup>
45 <ItemGroup>
46 <Reference Include="Microsoft.VisualStudio.QualityTools.LoadTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
47 <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
48 <Reference Include="Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
49 <Reference Include="System" />
50 <Reference Include="System.Core">
51 <RequiredTargetFramework>3.5</RequiredTargetFramework>
52 </Reference>
53 </ItemGroup>
54 <ItemGroup>
55 <CodeAnalysisDependentAssemblyPaths Condition=" '$(VS100COMNTOOLS)' != '' " Include="$(VS100COMNTOOLS)..\IDE\PrivateAssemblies">
56 <Visible>False</Visible>
57 </CodeAnalysisDependentAssemblyPaths>
58 </ItemGroup>
59 <ItemGroup>
60 <Compile Include="Properties\AssemblyInfo.cs" />
61 <Compile Include="UnitTest1.cs" />
62 <Compile Include="WebTest1Coded.cs" />
63 </ItemGroup>
64 <ItemGroup>
65 <None Include="LoadTest2.loadtest">
66 <CopyToOutputDirectory>Always</CopyToOutputDirectory>
67 </None>
68 <None Include="LoadTest1.loadtest">
69 <CopyToOutputDirectory>Always</CopyToOutputDirectory>
70 </None>
71 <None Include="WebTest2.webtest">
72 <CopyToOutputDirectory>Always</CopyToOutputDirectory>
73 </None>
74 <Shadow Include="Test References\LIL_VSTT_Plugins.accessor" />
75 <None Include="Userdata.csv">
76 <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
77 </None>
78 <None Include="WebTest1.webtest">
79 <CopyToOutputDirectory>Always</CopyToOutputDirectory>
80 </None>
81 </ItemGroup>
82 <ItemGroup>
83 <ProjectReference Include="..\LIL_VSTT_Plugins\LIL_VSTT_Plugins.csproj">
84 <Project>{06A22593-601E-4386-917A-9835DE30E14E}</Project>
85 <Name>LIL_VSTT_Plugins</Name>
86 </ProjectReference>
87 </ItemGroup>
88 <Choose>
89 <When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
90 <ItemGroup>
91 <Reference Include="Microsoft.VisualStudio.QualityTools.CodedUITestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
92 <Private>False</Private>
93 </Reference>
94 <Reference Include="Microsoft.VisualStudio.TestTools.UITest.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
95 <Private>False</Private>
96 </Reference>
97 <Reference Include="Microsoft.VisualStudio.TestTools.UITest.Extension, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
98 <Private>False</Private>
99 </Reference>
100 <Reference Include="Microsoft.VisualStudio.TestTools.UITesting, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
101 <Private>False</Private>
102 </Reference>
103 </ItemGroup>
104 </When>
105 </Choose>
106 <Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
107 <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
108 <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
109 Other similar extension points exist, see Microsoft.Common.targets.
110 <Target Name="BeforeBuild">
111 </Target>
112 <Target Name="AfterBuild">
113 </Target>
114 -->
115 </Project>
...\ No newline at end of file ...\ No newline at end of file
1 using System;
2 using System.Text;
3 using System.Collections.Generic;
4 using System.Linq;
5 using Microsoft.VisualStudio.TestTools.UnitTesting;
6
7 namespace TestProject1
8 {
9 /// <summary>
10 /// Summary description for UnitTest1
11 /// </summary>
12 [TestClass]
13 public class UnitTest1
14 {
15 public UnitTest1()
16 {
17 //
18 // TODO: Add constructor logic here
19 //
20 }
21
22 private TestContext testContextInstance;
23
24 /// <summary>
25 ///Gets or sets the test context which provides
26 ///information about and functionality for the current test run.
27 ///</summary>
28 public TestContext TestContext
29 {
30 get
31 {
32 return testContextInstance;
33 }
34 set
35 {
36 testContextInstance = value;
37 }
38 }
39
40 #region Additional test attributes
41 //
42 // You can use the following additional attributes as you write your tests:
43 //
44 // Use ClassInitialize to run code before running the first test in the class
45 // [ClassInitialize()]
46 // public static void MyClassInitialize(TestContext testContext) { }
47 //
48 // Use ClassCleanup to run code after all tests in a class have run
49 // [ClassCleanup()]
50 // public static void MyClassCleanup() { }
51 //
52 // Use TestInitialize to run code before running each test
53 // [TestInitialize()]
54 // public void MyTestInitialize() { }
55 //
56 // Use TestCleanup to run code after each test has run
57 // [TestCleanup()]
58 // public void MyTestCleanup() { }
59 //
60 #endregion
61
62 [TestMethod]
63 public void TestMethod1()
64 {
65 TestContext.WriteLine("Current Test Context parameters:");
66 IDictionary<string, object> dic = (IDictionary<string, object>)TestContext.Properties;
67 foreach (KeyValuePair<string, object> pair in dic)
68 TestContext.WriteLine(pair.Key + ": " + pair.Value.ToString());
69 TestContext.WriteLine("End of Current Test Context parameters.");
70 }
71 }
72 }
1 UserName
2 anjo
3 anma
4 anro
5 arbt1
6 arbt10
7 arbt2
8 arbt3
9 arbt4
10 arbt5
11 arbt6
12 arbt7
13 arbt8
14 arbt9
15 bm1
16 boba
17 caca
18 caca10
19 caca3
20 cami
21 dath
22 diet1
23 diet2
24 diet3
25 diet4
26 diet5
27 ebin
28 edi
29 edi_user
30 eman
31 emla
32 emla2
33 empe
34 emsu
35 emsv
36 kaur
37 kewa
38 kura1
39 kura2
40 kura3
41 kura4
42 kura5
43 lak0000001
44 lak0000002
45 lak0000003
46 lak0000004
47 lak0000005
48 lak0000006
49 lak1
50 lak10
51 lak11
52 lak12
53 lak13
54 lak14
55 lak15
56 lak16
57 lak17
58 lak18
59 lak19
60 lak2
61 lak20
62 lak3
63 lak4
64 lak5
65 lak6
66 lak7
67 lak8
68 lak9
69 lakA
70 lakB
71 lakC
72 lakD
73 lego
74 lgry1
75 lilu
76 logo1
77 logo2
78 logo3
79 logo4
80 logo5
81 maan
82 maul
83 melior
84 nigr
85 olle
86 peka
87 pepe
88 pewi
89 pipe
90 psyk1
91 psyk2
92 psyk3
93 psyk4
94 psyk5
95 saan
96 safe
97 saha
98 sajo
99 saka
100 sekr000001
101 sekr000002
102 sekr000003
103 sekr000004
104 sekr000005
105 sekr000006
106 sekr1
107 sekr10
108 sekr11
109 sekr12
110 sekr13
111 sekr14
112 sekr15
113 sekr16
114 sekr17
115 sekr18
116 sekr19
117 sekr2
118 sekr20
119 sekr3
120 sekr4
121 sekr5
122 sekr6
123 sekr7
124 sekr8
125 sekr9
126 sekrA
127 sekrB
128 sekrC
129 sekrD
130 sjgy1
131 sjgy10
132 sjgy2
133 sjgy3
134 sjgy4
135 sjgy5
136 sjgy6
137 sjgy7
138 sjgy8
139 sjgy9
140 sola
141 ssk0000001
142 ssk0000002
143 ssk0000003
144 ssk0000004
145 ssk0000005
146 ssk0000006
147 ssk1
148 ssk10
149 ssk11
150 ssk12
151 ssk13
152 ssk14
153 ssk15
154 ssk16
155 ssk17
156 ssk18
157 ssk19
158 ssk2
159 ssk20
160 ssk3
161 ssk4
162 ssk5
163 ssk6
164 ssk7
165 ssk8
166 ssk9
167 sskA
168 sskB
169 sskC
170 sskD
171 stji
172 sys
173 syslab
174 tst1
175 ulkl
176 utb1
177 utb2
178 voklej
179 ydde1
180 yddelak
181 yddessk
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="utf-8"?>
2 <WebTest Name="WebTest1" Id="c649760b-6dd8-4210-8a6d-3c6596d08668" Owner="" Priority="2147483647" Enabled="True" CssProjectStructure="" CssIteration="" Timeout="0" WorkItemIds="" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010" Description="" CredentialUserName="" CredentialPassword="" PreAuthenticate="True" Proxy="" StopOnError="False" RecordedResultFile="WebTest1.a5a27e2d-474c-43bb-be4d-1b12e85851a0.rec.webtestresult">
3 <Items>
4 <Request Method="POST" Version="1.1" Url="http://www.lil.nu/" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="">
5 <Headers>
6 <Header Name="Username" Value="{{DataSource1.Userdata#csv.UserName}}" />
7 </Headers>
8 <ExtractionRules>
9 <ExtractionRule Classname="LIL_VSTT_Plugins.NestedExtractionRule, LIL_VSTT_Plugins, Version=1.0.0.1, Culture=neutral, PublicKeyToken=null" VariableName="TableRowTest" DisplayName="Nested Extraction" Description="(C) Copyright 2011 LIGHTS IN LINE AB&#xD;&#xA;Kombination av två extractions där den andra söker i resultatet av den första.">
10 <RuleParameters>
11 <RuleParameter Name="Start1" Value="&lt;table width=&quot;100%&quot;" />
12 <RuleParameter Name="End1" Value="&lt;/tr&gt;&lt;/table&gt;" />
13 <RuleParameter Name="Start2" Value="&lt;td id=&quot;start&quot; class=&quot;" />
14 <RuleParameter Name="End2" Value="&quot; onMouseOver" />
15 </RuleParameters>
16 </ExtractionRule>
17 </ExtractionRules>
18 <FormPostHttpBody>
19 <FormPostParameter Name="TestParam" Value="LORRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR" RecordedValue="" CorrelationBinding="" UrlEncode="True" />
20 </FormPostHttpBody>
21 </Request>
22 </Items>
23 <DataSources>
24 <DataSource Name="DataSource1" Provider="Microsoft.VisualStudio.TestTools.DataSource.CSV" Connection="|DataDirectory|\Userdata.csv">
25 <Tables>
26 <DataSourceTable Name="Userdata#csv" SelectColumns="SelectOnlyBoundColumns" AccessMethod="DoNotMoveCursor" />
27 </Tables>
28 </DataSource>
29 </DataSources>
30 <WebTestPlugins>
31 <WebTestPlugin Classname="LIL_VSTT_Plugins.UniqueOnce, LIL_VSTT_Plugins, Version=1.0.0.1, Culture=neutral, PublicKeyToken=null" DisplayName="Datasource Unique Once" Description="(C) Copyright 2011 LIGHTS IN LINE AB&#xD;&#xA;OBS! Läs hela! Styr datasource selection till att endast göras en gång per iteration. Du måste ändra i din datasource Access Metod till Do Not Move Automatically! WebTestUserId används för att välja rad. Använder de datasources som finns definerade i webtestet. Använd test mix based on users starting tests samt 0 percent new users.">
32 <RuleParameters>
33 <RuleParameter Name="DataSourceName" Value="DataSource1" />
34 <RuleParameter Name="DataSourceTableName" Value="Userdata#csv" />
35 <RuleParameter Name="Offset" Value="0" />
36 </RuleParameters>
37 </WebTestPlugin>
38 <WebTestPlugin Classname="LIL_VSTT_Plugins.myPlugin, LIL_VSTT_Plugins, Version=1.0.0.1, Culture=neutral, PublicKeyToken=null" DisplayName="Expect 100 Off" Description="(C) Copyright 2011 LIGHTS IN LINE AB&#xD;&#xA;Stänger av .NET expected-100 headern i posts." />
39 </WebTestPlugins>
40 </WebTest>
...\ No newline at end of file ...\ No newline at end of file
1 //------------------------------------------------------------------------------
2 // <auto-generated>
3 // This code was generated by a tool.
4 // Runtime Version:4.0.30128.1
5 //
6 // Changes to this file may cause incorrect behavior and will be lost if
7 // the code is regenerated.
8 // </auto-generated>
9 //------------------------------------------------------------------------------
10
11 namespace TestProject1
12 {
13 using System;
14 using System.Collections.Generic;
15 using System.Text;
16 using Microsoft.VisualStudio.TestTools.WebTesting;
17
18
19 public class WebTest1Coded : WebTest
20 {
21
22 public WebTest1Coded()
23 {
24 this.PreAuthenticate = true;
25 }
26
27 public override IEnumerator<WebTestRequest> GetRequestEnumerator()
28 {
29 WebTestRequest request1 = new WebTestRequest("http://www.lil.nu/");
30 request1.ParseDependentRequests = false;
31 request1.Encoding = System.Text.Encoding.GetEncoding("utf-8");
32 request1.Headers.Add(new WebTestRequestHeader("Cookie", "TestCookie=\"test,test\""));
33 yield return request1;
34 request1 = null;
35 }
36 }
37 }
1 <?xml version="1.0" encoding="utf-8"?>
2 <WebTest Name="WebTest2" Id="9af8354e-b982-4f5a-80f9-777eaed55003" Owner="" Priority="2147483647" Enabled="True" CssProjectStructure="" CssIteration="" Timeout="0" WorkItemIds="" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010" Description="" CredentialUserName="" CredentialPassword="" PreAuthenticate="True" Proxy="" StopOnError="False" RecordedResultFile="WebTest2.0af40a55-b204-4b39-8847-71e26a47524d.rec.webtestresult">
3 <Items>
4 <Request Method="GET" Guid="e02258d2-a380-44f4-891d-a8c829b5428c" Version="1.1" Url="http://www.lightsinline.se/" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="" />
5 <TransactionTimer Name="Transaction2">
6 <Items>
7 <Request Method="GET" Guid="e02258d2-a380-44f4-891d-a8c829b5428c" Version="1.1" Url="http://www.lightsinline.se/" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="" />
8 <Request Method="GET" Guid="e02258d2-a380-44f4-891d-a8c829b5428c" Version="1.1" Url="http://www.lightsinline.se/" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="" ReportingName="" />
9 </Items>
10 </TransactionTimer>
11 </Items>
12 <WebTestPlugins>
13 <WebTestPlugin Classname="LIL_VSTT_Plugins.dataGenTimestamp, LIL_VSTT_Plugins, Version=1.2.0.0, Culture=neutral, PublicKeyToken=null" DisplayName="Data Generator Timestamp" Description="(C) Copyright 2011 LIGHTS IN LINE AB&#xD;&#xA;Genererar en timestamp som context parameter">
14 <RuleParameters>
15 <RuleParameter Name="ParamNameVal" Value="TimeStampParameter1" />
16 <RuleParameter Name="MillisecondsVal" Value="True" />
17 <RuleParameter Name="PrePageVal" Value="False" />
18 <RuleParameter Name="PreTransactionVal" Value="False" />
19 <RuleParameter Name="PreRequestVal" Value="True" />
20 </RuleParameters>
21 </WebTestPlugin>
22 </WebTestPlugins>
23 </WebTest>
...\ No newline at end of file ...\ No newline at end of file
1 <?xml version="1.0" encoding="UTF-8"?>
2 <TestSettings name="Trace and Test Impact" id="b4128d8d-ffff-46f4-afae-98bb333d8b32" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
3 <Description>These are test settings for Trace and Test Impact.</Description>
4 <Execution>
5 <TestTypeSpecific />
6 <AgentRule name="Execution Agents">
7 <DataCollectors>
8 <DataCollector uri="datacollector://microsoft/SystemInfo/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.DataCollection.SystemInfo.SystemInfoDataCollector, Microsoft.VisualStudio.TestTools.DataCollection.SystemInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="System Information">
9 </DataCollector>
10 <DataCollector uri="datacollector://microsoft/ActionLog/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TestTools.ManualTest.ActionLog.ActionLogPlugin, Microsoft.VisualStudio.TestTools.ManualTest.ActionLog, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Actions">
11 </DataCollector>
12 <DataCollector uri="datacollector://microsoft/HttpProxy/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TraceCollector.HttpProxyCollector, Microsoft.VisualStudio.TraceCollector, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="ASP.NET Client Proxy for IntelliTrace and Test Impact">
13 </DataCollector>
14 <DataCollector uri="datacollector://microsoft/TestImpact/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TraceCollector.TestImpactDataCollector, Microsoft.VisualStudio.TraceCollector, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="Test Impact">
15 </DataCollector>
16 <DataCollector uri="datacollector://microsoft/TraceDebugger/1.0" assemblyQualifiedName="Microsoft.VisualStudio.TraceCollector.TraceDebuggerDataCollector, Microsoft.VisualStudio.TraceCollector, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" friendlyName="IntelliTrace">
17 </DataCollector>
18 </DataCollectors>
19 </AgentRule>
20 </Execution>
21 </TestSettings>
...\ No newline at end of file ...\ No newline at end of file