static void Main(string[] args) { Thread.Sleep(TimeSpan.FromSeconds(10)); var c = new PlexClient("nopDelay", new Connection("127.0.0.1", 1909)); const int cont = 4; var keys = Enumerable.Range(0, cont).Select(p => p.ToString(CultureInfo.InvariantCulture)).ToArray(); File.Copy("Test.NopDelay.exe", "Test.NopDelay.Clone.exe", true); c.InitTaskLocal(Directory.GetCurrentDirectory(), new[]{"Test.NopDelay.Clone.exe"}); c.EnqueueToTask(keys.Take(cont/2).ToArray()); c.EnqueueToTask(keys.Skip(cont / 2).ToArray()); var rets = new List<SubTaskResult>(); while(rets.Count < keys.Length) { //Trace.TraceInformation("Test: Пытаемся получить результат"); var pack = c.GetTaskResults(); if (pack.Length > 0) { rets.AddRange(pack); Trace.TraceInformation("Test: Получили пачку из " + pack.Length + " ответов. " + rets.Count + "/" + keys.Length); } Thread.Sleep(1000); } Console.WriteLine("finished. Result=" + string.Join(";", rets.Select(p => p.Result.Deserialize<NopDelayResult>().Key))); c.DropTask(); Console.ReadKey(); }
static void Main(string[] args) { Thread.Sleep(TimeSpan.FromSeconds(10)); var c = new PlexClient("testFiles", new Connection("127.0.0.1", 1909)); const int count = 125500; var rnd = new byte[count]; (new Random()).NextBytes(rnd); File.Delete(TestFilesExec.FileName); File.WriteAllBytes(TestFilesExec.FileName, rnd); var keys = Enumerable.Range(0, count).Select(p => p.ToString(CultureInfo.InvariantCulture)).ToArray(); File.Copy("Test.Files.exe", "Test.Files.Clone.exe", true); try { c.InitTaskLocal(Directory.GetCurrentDirectory(), new[] { "Test.Files.Clone.exe" }, new [] { TestFilesExec.FileName }); c.EnqueueToTask(keys); //c.EnqueueToTask(keys.Take(count / 2).ToArray()); //c.EnqueueToTask(keys.Skip(count / 2).ToArray()); var rets = new List<SubTaskResult>(); while (rets.Count < keys.Length) { //Trace.TraceInformation("Test: Пытаемся получить результат"); var pack = c.GetTaskResults(); if (pack.Length > 0) { var ex1 = pack.Where(p => p == null || p.Type != SubTaskResult.ResultType.Success).ToArray(); if (ex1.Length != 0) throw new Exception(); rets.AddRange(pack); Trace.TraceInformation("Test: Получили пачку из " + pack.Length + " ответов. " + rets.Count + "/" + keys.Length); } } var ex = rets.Where(p => p == null || p.Type != SubTaskResult.ResultType.Success).ToArray(); if(ex.Length != 0) throw new Exception(); var nl = rets.Where(p => p.Result == null || p.Result.Length == 0).ToArray(); if (nl.Length != 0) throw new Exception(); var data = rets.OrderBy(p => int.Parse(p.Key)).SelectMany(p => p.Result).ToArray(); if (data.Length != rnd.Length) throw new Exception("test error len"); for (int i = 0; i < data.Length; i++) { if (data[i] != rnd[i]) throw new Exception("test error data"); } Console.WriteLine("finished."); } finally { c.DropTask(); } Console.ReadKey(); }