Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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();
        }