示例#1
0
        /// <summary>
        /// Construct a telemetry client for ingesting logs into Kusto
        /// </summary>
        /// <param name="ctx">CDM corpus context</param>
        /// <param name="config">The configuration for the client</param>
        public TelemetryKustoClient(CdmCorpusContext ctx, TelemetryConfig config)
        {
            this.ctx    = ctx;
            this.config = config;

            this.httpClient   = new CdmHttpClient();
            this.requestQueue = new ConcurrentQueue <Tuple <CdmStatusLevel, string> >();
        }
示例#2
0
        public void TestResultHttpExceptionZeroRetry()
        {
            using (var cdmHttpClient = new CdmHttpClient("https://www.example1.com", new CdmHttpMessageHandlerStub(method1)))
            {
                var cdmHttpRequest = new CdmHttpRequest("/folder1")
                {
                    Timeout        = TimeSpan.FromSeconds(5),
                    MaximumTimeout = TimeSpan.FromSeconds(9)
                };

                Func <Task> func = async() => await cdmHttpClient.SendAsync(cdmHttpRequest, null);

                func.Should().Throw <HttpRequestException>();
            }
        }
示例#3
0
        public void TestMaximumTimeout()
        {
            using (var cdmHttpClient = new CdmHttpClient("https://www.example.com", new CdmHttpMessageHandlerStub(method2)))
            {
                var cdmHttpRequest = new CdmHttpRequest("/folder2")
                {
                    Timeout         = TimeSpan.FromSeconds(1),
                    MaximumTimeout  = TimeSpan.FromSeconds(6),
                    NumberOfRetries = 3
                };

                Func <Task> func = async() => await cdmHttpClient.SendAsync(cdmHttpRequest, DefaultGetWaitTime);

                func.Should().Throw <CdmTimedOutException>();
            }
        }
示例#4
0
        public async Task TestResultReturnedFirstTime()
        {
            using (var cdmHttpClient = new CdmHttpClient("https://www.example.com", new CdmHttpMessageHandlerStub(method1)))
            {
                var cdmHttpRequest = new CdmHttpRequest("/folder1")
                {
                    Timeout        = TimeSpan.FromSeconds(5),
                    MaximumTimeout = TimeSpan.FromSeconds(9)
                };

                var result = await cdmHttpClient.SendAsync(cdmHttpRequest, null);

                var content = await result.Content.ReadAsStringAsync();

                Assert.AreEqual("REPLY1", content);
            }
        }
示例#5
0
        public async Task TestTimeoutThenSuccessMultipleRetries()
        {
            using (var cdmHttpClient = new CdmHttpClient("https://www.example.com", new CdmHttpMessageHandlerStub(method2)))
            {
                var cdmHttpRequest = new CdmHttpRequest("/folder2")
                {
                    Timeout         = TimeSpan.FromSeconds(3),
                    MaximumTimeout  = TimeSpan.FromSeconds(150),
                    NumberOfRetries = 3
                };

                var result = await cdmHttpClient.SendAsync(cdmHttpRequest, this.DefaultGetWaitTime);

                var content = await result.Content.ReadAsStringAsync();

                Assert.AreEqual("REPLY2", content);
            }
        }