Commit d40d05dc d40d05dce40734cee1995a43bd88fce6db6caff9 by Christian Gerdes

Makeover of SetTestParameter

- New feature that uses a Queue
- Using Categories in Properties
- New names and descriptions
1 parent d16f64d4
...@@ -158,7 +158,7 @@ namespace LIL_VSTT_Plugins ...@@ -158,7 +158,7 @@ namespace LIL_VSTT_Plugins
158 } 158 }
159 159
160 [DisplayName("Set Test Context Parameters")] 160 [DisplayName("Set Test Context Parameters")]
161 [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")] 161 [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.")]
162 public class SetTestParameter : ILoadTestPlugin 162 public class SetTestParameter : ILoadTestPlugin
163 { 163 {
164 // Summary: 164 // Summary:
...@@ -192,16 +192,27 @@ namespace LIL_VSTT_Plugins ...@@ -192,16 +192,27 @@ namespace LIL_VSTT_Plugins
192 192
193 private bool stop = false; 193 private bool stop = false;
194 private int timeWait = 0; 194 private int timeWait = 0;
195 private int nextAvailableRow = 0;
196 195
197 private StringCollection myParams = new StringCollection(); 196 private StringCollection myParams = new StringCollection();
197 private Queue<String> myUsedQueue = new Queue<string>();
198 private Queue<String> myUnUsedQueue = new Queue<string>();
198 private Random random = new Random(); 199 private Random random = new Random();
199 private Dictionary<string, int> testIterations = new Dictionary<string, int>(); 200 private Dictionary<string, int> testIterations = new Dictionary<string, int>();
200 private Dictionary<int, int> userRow = new Dictionary<int, int>();
201 private LoadTest m_loadTest; 201 private LoadTest m_loadTest;
202 202
203 #region guiparams 203 #region guiparams
204 204
205 [Category("Context")]
206 [DisplayName("Parameter Namn")]
207 [Description("Ange namnet på parametern som vi ska lägga till i TestContext, om det är flera använd CSV format med kommatecken som separator.")]
208 [DefaultValue("UserName")]
209 public string Parameter_Name
210 {
211 get { return myParameterName; }
212 set { myParameterName = value; }
213 }
214
215 [Category("XDebug")]
205 [DisplayName("Debug Mode")] 216 [DisplayName("Debug Mode")]
206 [Description("Set True in order to enable Debug Mode. Each agent will log debug messages to the given Debug Log File.")] 217 [Description("Set True in order to enable Debug Mode. Each agent will log debug messages to the given Debug Log File.")]
207 [DefaultValue(false)] 218 [DefaultValue(false)]
...@@ -211,6 +222,7 @@ namespace LIL_VSTT_Plugins ...@@ -211,6 +222,7 @@ namespace LIL_VSTT_Plugins
211 set { myDebug = value; } 222 set { myDebug = value; }
212 } 223 }
213 224
225 [Category("XDebug")]
214 [DisplayName("Debug Log File")] 226 [DisplayName("Debug Log File")]
215 [Description("Log file path to be used for debug logging, if enabled (True)")] 227 [Description("Log file path to be used for debug logging, if enabled (True)")]
216 [DefaultValue("C:\\Temp\\SetTestParameterDebug.log")] 228 [DefaultValue("C:\\Temp\\SetTestParameterDebug.log")]
...@@ -220,8 +232,9 @@ namespace LIL_VSTT_Plugins ...@@ -220,8 +232,9 @@ namespace LIL_VSTT_Plugins
220 set { myDebugLogFile = value; } 232 set { myDebugLogFile = value; }
221 } 233 }
222 234
223 [DisplayName("CSV filens sökväg")] 235 [Category("CSV Testdata")]
224 [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.")] 236 [DisplayName("Filens sökväg")]
237 [Description("Ange filens namn om den finns som Deployment Item i dina testsettings, eller fullständig sökväg om den inte deployas. Du kan ange en nätverksmappad disk eller UNC sökväg. Vid lokal sökväg behöver filen finnas på den agent där pluginet körs, vilket är alla agenter om du inte anger undantag.")]
225 [DefaultValue("C:\\Userdata.csv")] 238 [DefaultValue("C:\\Userdata.csv")]
226 public string Connection_String 239 public string Connection_String
227 { 240 {
...@@ -229,8 +242,9 @@ namespace LIL_VSTT_Plugins ...@@ -229,8 +242,9 @@ namespace LIL_VSTT_Plugins
229 set { myConnectionString = value; } 242 set { myConnectionString = value; }
230 } 243 }
231 244
232 [DisplayName("CSV filen har kolumnamn")] 245 [Category("CSV Testdata")]
233 [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.")] 246 [DisplayName("Filen har kolumner med namn")]
247 [Description("Ange om csv filen har rubriker i form av kolumnnamn på första raden. Om du sätter True kommer även kolumnens namn att användas som parameternamn istället.")]
234 [DefaultValue(false)] 248 [DefaultValue(false)]
235 public bool Has_col_name 249 public bool Has_col_name
236 { 250 {
...@@ -238,8 +252,9 @@ namespace LIL_VSTT_Plugins ...@@ -238,8 +252,9 @@ namespace LIL_VSTT_Plugins
238 set { myHasColName = value; } 252 set { myHasColName = value; }
239 } 253 }
240 254
241 [DisplayName("CSV Autosplit per agent")] 255 [Category("CSV Testdata")]
242 [Description("Ange True om du vill att filen automatiskt ska splittas mellan alla aktiva agenter.")] 256 [DisplayName("Autosplit per agent")]
257 [Description("Ange True om du vill att filen automatiskt ska splittas mellan alla aktiva agenter i testet. Obligatoriskt för att kunna ha unikt testdata över hela ditt loadtest då agenterna inte pratar med varandra under körningen.")]
243 [DefaultValue(false)] 258 [DefaultValue(false)]
244 public bool Autosplit 259 public bool Autosplit
245 { 260 {
...@@ -247,7 +262,8 @@ namespace LIL_VSTT_Plugins ...@@ -247,7 +262,8 @@ namespace LIL_VSTT_Plugins
247 set { myUseAutoSplit = value; } 262 set { myUseAutoSplit = value; }
248 } 263 }
249 264
250 [DisplayName("CSV Ignorera blankskott")] 265 [Category("CSV Testdata")]
266 [DisplayName("Ignorera blankskott")]
251 [Description("Ange False om du inte vill att rader med blankskott ignoreras (tomma/blanka rader eller samtliga kolumner tomma/blanka).")] 267 [Description("Ange False om du inte vill att rader med blankskott ignoreras (tomma/blanka rader eller samtliga kolumner tomma/blanka).")]
252 [DefaultValue(true)] 268 [DefaultValue(true)]
253 public bool IgnoreBlanks 269 public bool IgnoreBlanks
...@@ -256,15 +272,7 @@ namespace LIL_VSTT_Plugins ...@@ -256,15 +272,7 @@ namespace LIL_VSTT_Plugins
256 set { myIgnoreBlanks = value; } 272 set { myIgnoreBlanks = value; }
257 } 273 }
258 274
259 [DisplayName("Context Parameter Namn")] 275 [Category("Loggning")]
260 [Description("Ange namnet på parametern som vi ska lägga till i TestContext, om det är flera använd CSV format.")]
261 [DefaultValue("UserName")]
262 public string Parameter_Name
263 {
264 get { return myParameterName; }
265 set { myParameterName = value; }
266 }
267
268 [DisplayName("Loggfilens namn")] 276 [DisplayName("Loggfilens namn")]
269 [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.")] 277 [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.")]
270 [DefaultValue("C:\\Temp\\Fungerande.log")] 278 [DefaultValue("C:\\Temp\\Fungerande.log")]
...@@ -274,7 +282,8 @@ namespace LIL_VSTT_Plugins ...@@ -274,7 +282,8 @@ namespace LIL_VSTT_Plugins
274 set { myLogFileString = value; } 282 set { myLogFileString = value; }
275 } 283 }
276 284
277 [DisplayName("Loggfilens namn: Lägg till ID")] 285 [Category("Loggning")]
286 [DisplayName("Lägg till ID")]
278 [Description("Ange True om du vill att Agent ID samt VU ID läggs till automatiskt i slutet på filnamnet.")] 287 [Description("Ange True om du vill att Agent ID samt VU ID läggs till automatiskt i slutet på filnamnet.")]
279 [DefaultValue(false)] 288 [DefaultValue(false)]
280 public bool LogFileAppendID 289 public bool LogFileAppendID
...@@ -283,7 +292,8 @@ namespace LIL_VSTT_Plugins ...@@ -283,7 +292,8 @@ namespace LIL_VSTT_Plugins
283 set { myLogAppendID = value; } 292 set { myLogAppendID = value; }
284 } 293 }
285 294
286 [DisplayName("Loggfilens namn: Lägg till Namn")] 295 [Category("Loggning")]
296 [DisplayName("Lägg till Namn")]
287 [Description("Ange True om du vill att Scenario Name samt Test Name läggs till automatiskt i slutet på filnamnet.")] 297 [Description("Ange True om du vill att Scenario Name samt Test Name läggs till automatiskt i slutet på filnamnet.")]
288 [DefaultValue(false)] 298 [DefaultValue(false)]
289 public bool LogFileAppendName 299 public bool LogFileAppendName
...@@ -292,26 +302,29 @@ namespace LIL_VSTT_Plugins ...@@ -292,26 +302,29 @@ namespace LIL_VSTT_Plugins
292 set { myLogAppendName = value; } 302 set { myLogAppendName = value; }
293 } 303 }
294 304
295 [DisplayName("Välj slumpmässigt?")] 305 [Category("Radmappning")]
296 [Description("Ange True om du vill välja en slumpmässig användare. False går igenom listan sekventiellt.")] 306 [DisplayName("1: Test Iteration Number")]
297 [DefaultValue(true)] 307 [Description("Varje iteration av ett och samma test på samma Agent, får en ny rad från din fil. Testets iterationsnummer mappas till raderna i din testdatafil. Börjar på 1 på varje Agent. Autosplit fördelar rader mellan agenter.")]
298 public bool Use_Random 308 [DefaultValue(false)]
309 public bool Use_UniqueTestIteration
299 { 310 {
300 get { return myUseRandom; } 311 get { return myUseUniqueTestIteration; }
301 set { myUseRandom = value; } 312 set { myUseUniqueTestIteration = value; }
302 } 313 }
303 314
304 [DisplayName("Välj unikt per VU?")] 315 [Category("Radmappning")]
305 [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.")] 316 [DisplayName("2: Total Iteration Number")]
317 [Description("Varje iteration av ett test på samma Agent, oavsett test, får en ny rad från din fil. Agentens Globala iterationsnummer mappas till raderna i din testdatafil. Börjar på 1 på varje Agent. Autosplit fördelar rader mellan agenter.")]
306 [DefaultValue(false)] 318 [DefaultValue(false)]
307 public bool Use_Unique 319 public bool Use_UniqueIteration
308 { 320 {
309 get { return myUseUnique; } 321 get { return myUseUniqueIteration; }
310 set { myUseUnique = value; } 322 set { myUseUniqueIteration = value; }
311 } 323 }
312 324
313 [DisplayName("Välj unikt per VU per Testdatafil?")] 325 [Category("Radmappning")]
314 [Description("Ange True om du vill att varje testdatafil (CSV) hanteras separat för varje unik VU. Pluginet kommer då komma ihåg vilka rader som delats ut separat för varje fil.")] 326 [DisplayName("3: FIFO Kö med Pop/Enqueue")]
327 [Description("Varje rad läses in i en kö på agenten. När en VU vill köra ett test får den raden överst i kön. När en VU är klar med iterationen av ett test läggs raden tillbaka sist i kön. Detta säkerställer att du inte behöver fler rader i testdata filen än antalet samtidiga/parallella VU som kör dina tester, även om du har olika testdatafiler för olika tester. Varje agent börjar på rad 1 i filen om du inte använder Autosplit.")]
315 [DefaultValue(false)] 328 [DefaultValue(false)]
316 public bool Use_UniqueFiles 329 public bool Use_UniqueFiles
317 { 330 {
...@@ -319,26 +332,38 @@ namespace LIL_VSTT_Plugins ...@@ -319,26 +332,38 @@ namespace LIL_VSTT_Plugins
319 set { myUseUniqueFiles = value; } 332 set { myUseUniqueFiles = value; }
320 } 333 }
321 334
322 [DisplayName("Välj unikt per Iteration?")] 335 [Category("Radmappning")]
323 [Description("Ange True om du vill att varje LoadTest VU ska ha sitt eget unika värde för varje iteration av alla tester, dvs aldrig återanvändas av någon VU i något test. Gäller före unikt per test iteration.")] 336 [DisplayName("4: Virtual User ID Number")]
337 [Description("Varje ny VU får en egen rad från din fil, och återanvänder denna rad om den kör fler tester/iterationer. Agentens Virtual User ID Number mappas till raderna i din testdatafil. En VU varierar vilka tester den kör i din mix. En ny VU (enligt procent nya VU i run settings) får ett nytt nummer och därmed en ny rad i din fil. Första VU får nummer 1 på varje Agent. Autosplit fördelar rader mellan agenter.")]
324 [DefaultValue(false)] 338 [DefaultValue(false)]
325 public bool Use_UniqueIteration 339 public bool Use_Unique
326 { 340 {
327 get { return myUseUniqueIteration; } 341 get { return myUseUnique; }
328 set { myUseUniqueIteration = value; } 342 set { myUseUnique = value; }
329 } 343 }
330 344
331 [DisplayName("Välj unikt per Test Iteration?")] 345 [Category("Radmappning")]
332 [Description("Ange True om du vill att varje LoadTest VU ska ha sitt eget unika värde för varje iteration av respektive test, dvs aldrig återanvändas av någon VU som kör samma test.")] 346 [DisplayName("5: Slumpmässigt")]
347 [Description("Slumpmässigt val av rader i filen. Ingen kontroll eller viss ordning och flera VU kan slumpa fram samma rad.")]
333 [DefaultValue(false)] 348 [DefaultValue(false)]
334 public bool Use_UniqueTestIteration 349 public bool Use_Random
335 { 350 {
336 get { return myUseUniqueTestIteration; } 351 get { return myUseRandom; }
337 set { myUseUniqueTestIteration = value; } 352 set { myUseRandom = value; }
353 }
354
355 [Category("Radmappning")]
356 [DisplayName("6: Virtual User Iteration Number")]
357 [Description("Varje VU väljer rad baserat på antalet tidigare tester/iterationer den gjort. Varje ny VU börjar på rad 1. Om procent nya VU är 100 används endast rad 1 i alla tester. Observera att en VU som inte är ny kommer att byta mellan olika tester under din körning, om du har flera tester/skript i din mix. Om du använder undantag och flera instanser av detta plugin, kommer vissa rader att hoppas över.")]
358 [DefaultValue(true)]
359 public bool Use_Seq
360 {
361 get; set; // Fake. Actually enabled by setting all other options above to false.
338 } 362 }
339 363
340 [DisplayName("Välj sekventiell loop?")] 364 [Category("CSV Testdata")]
341 [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. Om data tar slut kommer sista värdet ges till alla om sekventiell loop inte tillåts")] 365 [DisplayName("Loopa testdata")]
366 [Description("Ange true om du vill börja om från början av testdatafilen när alla används en gång. Gäller alla unik typer utom Push/Pull. Med False på detta val kommer sista raden ges till alla om datat tar slut, eller OutOfTestDataException slängas och loadtestet stoppas om det är aktiverat.")]
342 [DefaultValue(false)] 367 [DefaultValue(false)]
343 public bool Use_Loop 368 public bool Use_Loop
344 { 369 {
...@@ -346,7 +371,8 @@ namespace LIL_VSTT_Plugins ...@@ -346,7 +371,8 @@ namespace LIL_VSTT_Plugins
346 set { mySeqLoop = value; } 371 set { mySeqLoop = value; }
347 } 372 }
348 373
349 [DisplayName("OutOfTestDataException?")] 374 [Category("CSV Testdata")]
375 [DisplayName("Avbryt med OutOfTestDataException")]
350 [Description("Ange true om du vill att ditt loadtest ska stoppas om testdata tar slut (och Sekventiell Loop är satt till false).")] 376 [Description("Ange true om du vill att ditt loadtest ska stoppas om testdata tar slut (och Sekventiell Loop är satt till false).")]
351 [DefaultValue(false)] 377 [DefaultValue(false)]
352 public bool ThrowException 378 public bool ThrowException
...@@ -354,6 +380,7 @@ namespace LIL_VSTT_Plugins ...@@ -354,6 +380,7 @@ namespace LIL_VSTT_Plugins
354 get; set; 380 get; set;
355 } 381 }
356 382
383 [Category("Loggning")]
357 [DisplayName("Logga fungerande till fil?")] 384 [DisplayName("Logga fungerande till fil?")]
358 [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.")] 385 [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.")]
359 [DefaultValue(false)] 386 [DefaultValue(false)]
...@@ -363,8 +390,9 @@ namespace LIL_VSTT_Plugins ...@@ -363,8 +390,9 @@ namespace LIL_VSTT_Plugins
363 set { myLogToFile = value; } 390 set { myLogToFile = value; }
364 } 391 }
365 392
393 [Category("Undantag")]
366 [DisplayName("Endast dessa Tester")] 394 [DisplayName("Endast dessa Tester")]
367 [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.")] 395 [Description("Denna instans av pluginet körs 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 köra i alla tester.")]
368 [DefaultValue("")] 396 [DefaultValue("")]
369 public string Test_Names 397 public string Test_Names
370 { 398 {
...@@ -372,17 +400,19 @@ namespace LIL_VSTT_Plugins ...@@ -372,17 +400,19 @@ namespace LIL_VSTT_Plugins
372 set { myTestNames = value; } 400 set { myTestNames = value; }
373 } 401 }
374 402
403 [Category("Undantag")]
375 [DisplayName("Endast dessa Scenarios")] 404 [DisplayName("Endast dessa Scenarios")]
376 [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.")] 405 [Description("Denna instans av pluginet körs endast på Scenarion där namnet eller del av namnet för scenariot finns i denna lista. Lämna blankt för att köra i alla scenarion.")]
377 [DefaultValue("")] 406 [DefaultValue("")]
378 public string Scenario_Names 407 public string Scenario_Names
379 { 408 {
380 get { return myScenarioNames; } 409 get { return myScenarioNames; }
381 set { myScenarioNames = value; } 410 set { myScenarioNames = value; }
382 } 411 }
383 412
413 [Category("Undantag")]
384 [DisplayName("Endast dessa Agenter")] 414 [DisplayName("Endast dessa Agenter")]
385 [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.")] 415 [Description("Denna instans av pluginet körs endast på Agenter där namnet eller del av namnet för agenten finns i denna lista. Lämna blankt för att köra på alla agenter.")]
386 [DefaultValue("")] 416 [DefaultValue("")]
387 public string Agent_Names 417 public string Agent_Names
388 { 418 {
...@@ -475,23 +505,23 @@ namespace LIL_VSTT_Plugins ...@@ -475,23 +505,23 @@ namespace LIL_VSTT_Plugins
475 { 505 {
476 if (shouldRun(e)) 506 if (shouldRun(e))
477 { 507 {
478 int row = 0; 508 string strParams = "OutOfData";
479 // Go single threaded 509 // Go single threaded
480 lock (userRow) 510 lock (myUnUsedQueue)
481 { 511 {
482 // Check if the user already has a row in our file, otherwise get the next one 512 if(myUnUsedQueue.Count > 0)
483 if (userRow.ContainsKey(e.UserContext.UserId)) row = userRow[e.UserContext.UserId]; 513 {
484 else 514 strParams = myUnUsedQueue.Dequeue();
515 e.UserContext["QueueVal"] = strParams;
516 } else
485 { 517 {
486 // New user, get the next row and increase the counter 518 // Out of testdata
487 row = nextAvailableRow++; 519 e.UserContext["QueueVal"] = null;
488 // Save the row for this user 520 stopAndThrow();
489 userRow[e.UserContext.UserId] = row;
490 } 521 }
491 } 522 }
492 string strParams = this.getSeqUser(row);
493 setParameters(strParams, e); 523 setParameters(strParams, e);
494 if (myDebug) lock (myDebugLogFile) { File.AppendAllText(myDebugLogFile, DateTime.Now.ToLocalTime() + " File: " + myConnectionString + " Test: " + e.TestName + " VU: " + e.UserContext.UserId + " Row: " + row + " Value: \"" + strParams + "\"\r\n"); } 524 if (myDebug) lock (myDebugLogFile) { File.AppendAllText(myDebugLogFile, DateTime.Now.ToLocalTime() + " File: " + myConnectionString + " Test: " + e.TestName + " VU: " + e.UserContext.UserId + " Value: \"" + strParams + "\" PULL\r\n"); }
495 } 525 }
496 } 526 }
497 527
...@@ -499,7 +529,13 @@ namespace LIL_VSTT_Plugins ...@@ -499,7 +529,13 @@ namespace LIL_VSTT_Plugins
499 { 529 {
500 if (shouldRun(e)) 530 if (shouldRun(e))
501 { 531 {
502 532 String queueVal = (String)e.UserContext["QueueVal"];
533 if (queueVal != null)
534 lock (myUnUsedQueue)
535 {
536 myUnUsedQueue.Enqueue(queueVal);
537 }
538 if (myDebug) lock (myDebugLogFile) { File.AppendAllText(myDebugLogFile, DateTime.Now.ToLocalTime() + " File: " + myConnectionString + " Test: " + e.TestName + " VU: " + e.UserContext.UserId + " Value: \"" + queueVal + "\" PUSH\r\n"); }
503 } 539 }
504 } 540 }
505 541
...@@ -604,11 +640,7 @@ namespace LIL_VSTT_Plugins ...@@ -604,11 +640,7 @@ namespace LIL_VSTT_Plugins
604 // Handle out of testdata here 640 // Handle out of testdata here
605 if (ThrowException) 641 if (ThrowException)
606 { 642 {
607 foreach (LoadTestScenario s in m_loadTest.Scenarios) 643 stopAndThrow();
608 {
609 s.CurrentLoad = 0;
610 }
611 this.stop = true;
612 return "OutOfData"; 644 return "OutOfData";
613 } 645 }
614 else return myParams[myParams.Count - 1]; 646 else return myParams[myParams.Count - 1];
...@@ -616,11 +648,20 @@ namespace LIL_VSTT_Plugins ...@@ -616,11 +648,20 @@ namespace LIL_VSTT_Plugins
616 } 648 }
617 } 649 }
618 650
651 void stopAndThrow()
652 {
653 if(m_loadTest != null)
654 foreach (LoadTestScenario s in m_loadTest.Scenarios)
655 {
656 s.CurrentLoad = 0;
657 }
658 this.stop = true;
659 }
660
619 bool initUserArray(string path, int agentCount, int agentId) 661 bool initUserArray(string path, int agentCount, int agentId)
620 { 662 {
621 if (path.Length > 0) 663 if (path.Length > 0)
622 { 664 {
623 //StreamReader re = File.OpenText(path);
624 StreamReader re = new StreamReader(path, System.Text.Encoding.Default); 665 StreamReader re = new StreamReader(path, System.Text.Encoding.Default);
625 string input = null; 666 string input = null;
626 int lineNum = 0; 667 int lineNum = 0;
...@@ -646,13 +687,15 @@ namespace LIL_VSTT_Plugins ...@@ -646,13 +687,15 @@ namespace LIL_VSTT_Plugins
646 else ifAgentId = dataNum + 1; 687 else ifAgentId = dataNum + 1;
647 if (ifAgentId == agentId) 688 if (ifAgentId == agentId)
648 { 689 {
649 myParams.Add(input.TrimEnd(trim)); 690 if (myUseUniqueFiles) myUnUsedQueue.Enqueue(input.TrimEnd(trim));
691 else myParams.Add(input.TrimEnd(trim));
650 } 692 }
651 dataNum++; 693 dataNum++;
652 } 694 }
653 else 695 else
654 { 696 {
655 myParams.Add(input.TrimEnd(trim)); 697 if (myUseUniqueFiles) myUnUsedQueue.Enqueue(input.TrimEnd(trim));
698 else myParams.Add(input.TrimEnd(trim));
656 } 699 }
657 } 700 }
658 } 701 }
......