Commit 60f30298 60f3029879f5e8cb6d697300a0ab537a4fb998d5 by Mick Smith

Senaste version från LIL-GIT 2017-09-12. MICK

git-tfs-id: [https://tfs.rsv.se/tfs/LoadTestCollection]$/VSTT-Plugins;C1190
1 parent 61003c77
...@@ -18,10 +18,46 @@ using System.ComponentModel; ...@@ -18,10 +18,46 @@ using System.ComponentModel;
18 using Microsoft.VisualStudio.TestTools.WebTesting.Rules; 18 using Microsoft.VisualStudio.TestTools.WebTesting.Rules;
19 using System.Text.RegularExpressions; 19 using System.Text.RegularExpressions;
20 using System.IO; 20 using System.IO;
21 using System.IO.Compression;
21 using Microsoft.VisualStudio.TestTools.LoadTesting; 22 using Microsoft.VisualStudio.TestTools.LoadTesting;
22 23
23 namespace LIL_VSTT_Plugins 24 namespace LIL_VSTT_Plugins
24 { 25 {
26 [DisplayName("Zip File Upload"), Description("Creates an ZIP archive of each of the files to be uploaded using the files name and adding .zip. Warning, uses %TEMP% for temp storage.")]
27 public class ZipFileUploadBeforePost : WebTestRequestPlugin
28 {
29 Queue<String> deleteDirs = new Queue<string>();
30 public override void PreRequest(object sender, PreRequestEventArgs e)
31 {
32 if (e.Request.Body.GetType() == typeof(FormPostHttpBody)) {
33 FormPostHttpBody body = (FormPostHttpBody)e.Request.Body;
34 foreach (FormPostParameter param in body.FormPostParameters) {
35 if(param.GetType() == typeof(FileUploadParameter))
36 {
37 FileUploadParameter fparam = (FileUploadParameter)param;
38 String tempDir = Path.GetTempPath() + "\\" + Guid.NewGuid().ToString();
39 Directory.CreateDirectory(tempDir);
40 deleteDirs.Enqueue(tempDir);
41 Directory.CreateDirectory(tempDir + @"\ZipDir");
42 File.Copy(fparam.FileName, tempDir + @"\ZipDir\" + Path.GetFileName(fparam.FileName));
43 ZipFile.CreateFromDirectory(tempDir + @"\ZipDir", tempDir + "\\" + Path.GetFileName(fparam.FileName) + ".zip");
44
45 fparam.FileName = tempDir + "\\" + Path.GetFileName(fparam.FileName) + ".zip";
46 fparam.FileUploadName = fparam.FileUploadName + ".zip";
47 }
48 }
49 }
50 base.PreRequest(sender, e);
51 }
52
53 public override void PostRequest(object sender, PostRequestEventArgs e)
54 {
55 foreach (String dir in deleteDirs) Directory.Delete(dir, true);
56 deleteDirs.Clear();
57 base.PostRequest(sender, e);
58 }
59 }
60
25 [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")] 61 [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")]
26 public class SetRequestThinkTime : WebTestPlugin 62 public class SetRequestThinkTime : WebTestPlugin
27 { 63 {
...@@ -208,6 +244,9 @@ namespace LIL_VSTT_Plugins ...@@ -208,6 +244,9 @@ namespace LIL_VSTT_Plugins
208 [DisplayName("File Name"), Description("The file name to use for logging")] 244 [DisplayName("File Name"), Description("The file name to use for logging")]
209 public String Filename { get; set; } 245 public String Filename { get; set; }
210 246
247 [DisplayName("Autogenerate File Name"), Description("Automatically generate a filename using the test name and user id from the load test")]
248 public bool autoFilename { get; set; }
249
211 [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)")] 250 [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)")]
212 public bool useHeader { get; set; } 251 public bool useHeader { get; set; }
213 252
...@@ -221,6 +260,11 @@ namespace LIL_VSTT_Plugins ...@@ -221,6 +260,11 @@ namespace LIL_VSTT_Plugins
221 260
222 public override void PostWebTest(object sender, PostWebTestEventArgs e) 261 public override void PostWebTest(object sender, PostWebTestEventArgs e)
223 { 262 {
263 String completeFileName = Filename + e.WebTest.Context.WebTestUserId + ".log";
264 if (autoFilename)
265 {
266 completeFileName = e.WebTest.Name + e.WebTest.Context.WebTestUserId + ".log";
267 }
224 if ((e.WebTest.Outcome == Outcome.Pass && logPassed) || (e.WebTest.Outcome == Outcome.Fail && logFailed)) { 268 if ((e.WebTest.Outcome == Outcome.Pass && logPassed) || (e.WebTest.Outcome == Outcome.Fail && logFailed)) {
225 string row = ""; 269 string row = "";
226 string hrow = ""; 270 string hrow = "";
...@@ -240,10 +284,10 @@ namespace LIL_VSTT_Plugins ...@@ -240,10 +284,10 @@ namespace LIL_VSTT_Plugins
240 } 284 }
241 if (header && useHeader) 285 if (header && useHeader)
242 { 286 {
243 File.AppendAllText(Filename + e.WebTest.Context.WebTestUserId + ".log", hrow + "\r\n"); 287 File.AppendAllText(completeFileName, hrow + "\r\n");
244 header = false; 288 header = false;
245 } 289 }
246 File.AppendAllText(Filename + e.WebTest.Context.WebTestUserId + ".log", row + "\r\n"); 290 File.AppendAllText(completeFileName, row + "\r\n");
247 base.PostWebTest(sender, e); 291 base.PostWebTest(sender, e);
248 } 292 }
249 } 293 }
......
...@@ -13,6 +13,10 @@ ...@@ -13,6 +13,10 @@
13 <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> 13 <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
14 <FileAlignment>512</FileAlignment> 14 <FileAlignment>512</FileAlignment>
15 <TargetFrameworkProfile /> 15 <TargetFrameworkProfile />
16 <SccProjectName>SAK</SccProjectName>
17 <SccLocalPath>SAK</SccLocalPath>
18 <SccAuxPath>SAK</SccAuxPath>
19 <SccProvider>SAK</SccProvider>
16 </PropertyGroup> 20 </PropertyGroup>
17 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 21 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
18 <DebugSymbols>true</DebugSymbols> 22 <DebugSymbols>true</DebugSymbols>
...@@ -41,6 +45,8 @@ ...@@ -41,6 +45,8 @@
41 <Reference Include="Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" /> 45 <Reference Include="Microsoft.VisualStudio.QualityTools.WebTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
42 <Reference Include="System" /> 46 <Reference Include="System" />
43 <Reference Include="System.Core" /> 47 <Reference Include="System.Core" />
48 <Reference Include="System.IO.Compression" />
49 <Reference Include="System.IO.Compression.FileSystem" />
44 <Reference Include="System.Xml.Linq" /> 50 <Reference Include="System.Xml.Linq" />
45 <Reference Include="System.Data.DataSetExtensions" /> 51 <Reference Include="System.Data.DataSetExtensions" />
46 <Reference Include="Microsoft.CSharp" /> 52 <Reference Include="Microsoft.CSharp" />
......
1 ""
2 {
3 "FILE_VERSION" = "9237"
4 "ENLISTMENT_CHOICE" = "NEVER"
5 "PROJECT_FILE_RELATIVE_PATH" = ""
6 "NUMBER_OF_EXCLUDED_FILES" = "0"
7 "ORIGINAL_PROJECT_FILE_PATH" = ""
8 "NUMBER_OF_NESTED_PROJECTS" = "0"
9 "SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
10 }
...@@ -51,6 +51,31 @@ namespace LIL_VSTT_Plugins ...@@ -51,6 +51,31 @@ namespace LIL_VSTT_Plugins
51 } 51 }
52 } 52 }
53 53
54 /// <summary>
55 /// LoadTest Context Copy
56 /// </summary>
57 [DisplayName("Personnummer Generator")]
58 [Description("(C) Copyright 2017 LIGHTS IN LINE AB\r\nGenererar personnummer och sätter dem som parameter till testernas context.")]
59 public class LoadTestPnumGen : ILoadTestPlugin
60 {
61 //store the load test object.
62 LoadTest mLoadTest;
63
64 public void Initialize(LoadTest loadTest)
65 {
66 mLoadTest = loadTest;
67
68 //connect to the TestStarting event.
69 mLoadTest.TestStarting += new EventHandler<TestStartingEventArgs>(mLoadTest_TestStarting);
70 }
71
72
73 void mLoadTest_TestStarting(object sender, TestStartingEventArgs e)
74 {
75 //TODO
76 }
77 }
78
54 /// <summary> 79 /// <summary>
55 /// Service Manager Plugin 80 /// Service Manager Plugin
56 /// </summary> 81 /// </summary>
...@@ -457,6 +482,7 @@ namespace LIL_VSTT_Plugins ...@@ -457,6 +482,7 @@ namespace LIL_VSTT_Plugins
457 string input = null; 482 string input = null;
458 int lineNum = 0; 483 int lineNum = 0;
459 int dataNum = 0; 484 int dataNum = 0;
485 char[] trim = { ' ', '\x00', '\t', '\x20' };
460 while ((input = re.ReadLine()) != null) 486 while ((input = re.ReadLine()) != null)
461 { 487 {
462 // Ignore blank lines and empty lines (just whitespace) or lines with only blank/empty/whitespace columns 488 // Ignore blank lines and empty lines (just whitespace) or lines with only blank/empty/whitespace columns
...@@ -466,7 +492,7 @@ namespace LIL_VSTT_Plugins ...@@ -466,7 +492,7 @@ namespace LIL_VSTT_Plugins
466 if (lineNum == 1 && myHasColName == true) 492 if (lineNum == 1 && myHasColName == true)
467 { 493 {
468 // First line is column names 494 // First line is column names
469 myColNames = input.TrimEnd(); 495 myColNames = input.TrimEnd(trim);
470 } 496 }
471 else 497 else
472 { 498 {
...@@ -477,13 +503,13 @@ namespace LIL_VSTT_Plugins ...@@ -477,13 +503,13 @@ namespace LIL_VSTT_Plugins
477 else ifAgentId = dataNum + 1; 503 else ifAgentId = dataNum + 1;
478 if (ifAgentId == agentId) 504 if (ifAgentId == agentId)
479 { 505 {
480 myParams.Add(input.TrimEnd()); 506 myParams.Add(input.TrimEnd(trim));
481 } 507 }
482 dataNum++; 508 dataNum++;
483 } 509 }
484 else 510 else
485 { 511 {
486 myParams.Add(input.TrimEnd()); 512 myParams.Add(input.TrimEnd(trim));
487 } 513 }
488 } 514 }
489 } 515 }
......