예제 #1
0
        public async Task GrpcService_B_Test()
        {
            var locator = new GrpcLocator();

            Console.WriteLine("Testing in {0}", locator.ServiceDomain);

            GrpcService svc = await locator.Locate("alpha-users", ChannelCredentials.Insecure);

            Assert.IsNotNull(svc);
            Assert.AreEqual(1, svc.Endpoints.Count);

            foreach (GrpcEndpoint ep in svc.Endpoints)
            {
                Console.WriteLine(ep);
            }

            Assert.AreEqual("vrdswarm11.rnd.ipzo.net:7014", svc.Endpoints[0].ToString());
            Assert.IsTrue(svc.Expires < DateTime.UtcNow.AddMinutes(1));
        }
예제 #2
0
        public async Task GrpcService_Exec_Test()
        {
            var locator = new GrpcLocator();

            Console.WriteLine("Testing in {0}", locator.ServiceDomain);

            GrpcService svc = await locator.Locate("alpha-users", ChannelCredentials.Insecure);

            Assert.IsNotNull(svc);

            HealthCheckResponse reply = await svc.Execute(async channel =>
            {
                var client = new Health.HealthClient(channel);
                return(await client.CheckAsync(new HealthCheckRequest {
                    Service = "users"
                }));
            }, TimeSpan.FromSeconds(2));


            Assert.AreEqual(HealthCheckResponse.Types.ServingStatus.Serving, reply.Status);
        }
예제 #3
0
        public void Extreme_Grpc_Test()
        {
            const int TIME = 4, COUNT = TIME * 2000;

            var locator = new GrpcLocator();
            var stopAt  = DateTime.Now.AddMinutes(TIME);

            while (DateTime.Now < stopAt)
            {
                var tasks      = new List <Task>();
                var exceptions = new List <Exception>();

                for (var i = 0; i < COUNT; i++)
                {
                    var task = locator.Locate("onumbers");
                    tasks.Add(task.ContinueWith(t =>
                    {
                        try
                        {
                            var res = t.Result;
                        }
                        catch (Exception ex)
                        {
                            exceptions.Add(ex);
                        }
                    }));
                }

                Task.WaitAll(tasks.ToArray());
                if (exceptions.Count > 0)
                {
                    throw new AggregateException(exceptions);
                }

                Console.WriteLine("{0} Located at {1:G}", COUNT, DateTime.Now);

                Task.Delay(TimeSpan.FromSeconds(TIME)).Wait();
            }
        }
예제 #4
0
        public async Task GrpcService_A_Test()
        {
            var locator = new GrpcLocator {
                NoCache = true, Randomize = true
            };

            Console.WriteLine("Testing in {0}", locator.ServiceDomain);

            GrpcService svc = await locator.Locate("onumbers", ChannelCredentials.Insecure);

            Assert.IsNotNull(svc);
            Assert.IsTrue(svc.Endpoints.Count > 0);

            // for testing - remove servers 4/5
            //svc.Endpoints.Remove(svc.Endpoints.First(ep => ep.Host == "vsrcoredock04.ipzhost.net"));
            //svc.Endpoints.Remove(svc.Endpoints.First(ep => ep.Host == "vsrcoredock05.ipzhost.net"));

            foreach (GrpcEndpoint ep in svc.Endpoints)
            {
                Console.WriteLine(ep);
            }

            Assert.IsTrue(svc.Expires < DateTime.UtcNow.AddMinutes(15));
            Console.WriteLine();

            int ts = Environment.TickCount;

            //TimeSpan tryNextAfter = Timeout.InfiniteTimeSpan;
            TimeSpan tryNextAfter = TimeSpan.FromMilliseconds(150);

            var channel = svc.Connect(TimeSpan.FromSeconds(3), tryNextAfter).Result;

            Assert.IsTrue(channel.State == ChannelState.Ready);

            Console.WriteLine("Connected To: '{0}' in {1}ms", channel.Target, Environment.TickCount - ts);
        }