Пример #1
0
        public async Task ConfigureClient_is_thread_safe()
        {
            var fac      = new DefaultFlurlClientFactory();
            var sequence = new List <int>();

            var task1 = Task.Run(() => fac.ConfigureClient("http://api.com", c => {
                sequence.Add(1);
                Thread.Sleep(5000);
                sequence.Add(3);
            }));

            await Task.Delay(200);

            // modifies same client as task1, should get blocked until task1 is done
            var task2 = Task.Run(() => fac.ConfigureClient("http://api.com", c => {
                sequence.Add(4);
            }));

            await Task.Delay(200);

            // modifies different client, should run immediately
            var task3 = Task.Run(() => fac.ConfigureClient("http://api2.com", c => {
                sequence.Add(2);
            }));

            await Task.WhenAll(task1, task2, task3);

            Assert.AreEqual("1,2,3,4", string.Join(",", sequence));
        }
Пример #2
0
        public void can_configure_client_from_factory()
        {
            var fac = new DefaultFlurlClientFactory()
                      .ConfigureClient("http://api.com/foo", c => c.Settings.Timeout = TimeSpan.FromSeconds(123));

            Assert.AreEqual(TimeSpan.FromSeconds(123), fac.Get("http://api.com/bar").Settings.Timeout);
            Assert.AreNotEqual(TimeSpan.FromSeconds(123), fac.Get("http://api2.com/foo").Settings.Timeout);
        }
Пример #3
0
        public void default_factory_provides_same_client_per_host_scheme_port()
        {
            var fac  = new DefaultFlurlClientFactory();
            var cli1 = fac.Get("http://api.com/foo");
            var cli2 = fac.Get("http://api.com/bar");
            var cli3 = fac.Get("https://api.com/foo");
            var cli4 = fac.Get("https://api.com/bar");
            var cli5 = fac.Get("https://api.com:1234/foo");
            var cli6 = fac.Get("https://api.com:1234/bar");

            Assert.AreSame(cli1, cli2);
            Assert.AreSame(cli3, cli4);
            Assert.AreSame(cli5, cli6);

            Assert.AreNotSame(cli1, cli3);
            Assert.AreNotSame(cli3, cli5);
        }