/// <summary> /// Report the current statistics of sampling rules and /// get back the new assigned quota/TTL/Interval from the X-Ray service. /// The call is proxied and signed via X-Ray Daemon. /// </summary> /// <param name="rules">List of <see cref="SamplingRule"/>.</param> /// <returns>Instance of <see cref="GetSamplingRulesResponse"/>.</returns> public async Task <GetSamplingTargetsResponse> GetSamplingTargets(List <SamplingRule> rules) { DateTime currentTime = TimeStamp.CurrentDateTime(); List <SamplingStatisticsDocumentModel> samplingStatisticsDocumentModels = GetSamplingStatisticsDocuments(rules, currentTime); var samplingStatisticsModel = new SamplingStatisticsModel(); samplingStatisticsModel.SamplingStatisticsDocuments = samplingStatisticsDocumentModels; string requestContent = JsonMapper.ToJson(samplingStatisticsModel); // Marshall SamplingStatisticsDocument to json Task <string> responseTask; lock (_xrayClientLock) { RefreshEndPoint(); responseTask = GetSamplingInfoAsync(_xrayConfig.ServiceURL + "/SamplingTargets", requestContent); } var responseContent = await responseTask; var samplingTargetResponse = UnmarshallSamplingTargetResponse(responseContent); var targetList = ConvertTargetList(samplingTargetResponse.SamplingTargetDocuments); GetSamplingTargetsResponse result = new GetSamplingTargetsResponse(targetList); result.RuleFreshness = new TimeStamp(ConvertDoubleToDateTime(samplingTargetResponse.LastRuleModification)); return(result); }
public void TestMarshallSamplingStatisticsDocumentsWithEmptyItems() { var samplingStatisticsModel = new SamplingStatisticsModel(); var expected = "{\"SamplingStatisticsDocuments\":[]}"; var actual = JsonMapper.ToJson(samplingStatisticsModel); Assert.AreEqual(expected, actual); }
public void TestMarshallSamplingStatisticsDocumentsWithEmptyValues() { var samplingStatisticsModel = new SamplingStatisticsModel(); var samplingStatisticsDocumentModel = new SamplingStatisticsDocumentModel(); samplingStatisticsModel.SamplingStatisticsDocuments.Add(samplingStatisticsDocumentModel); var expected = "{\"SamplingStatisticsDocuments\":[{\"ClientID\":null,\"RuleName\":null,\"RequestCount\":null,\"SampledCount\":null,\"BorrowCount\":null,\"Timestamp\":null}]}"; var actual = JsonMapper.ToJson(samplingStatisticsModel); Assert.AreEqual(expected, actual); }
public void TestMarshallSamplingStatisticsDocuments() { var samplingStatisticsModel = new SamplingStatisticsModel(); var samplingStatisticsDocumentModel = new SamplingStatisticsDocumentModel { ClientID = "07492221d7fd13a86e750de2", RuleName = "Test", RequestCount = 108, SampledCount = 4, BorrowCount = 6, Timestamp = 1604297926.362 }; samplingStatisticsModel.SamplingStatisticsDocuments.Add(samplingStatisticsDocumentModel); var expected = "{\"SamplingStatisticsDocuments\":[{\"ClientID\":\"07492221d7fd13a86e750de2\",\"RuleName\":\"Test\",\"RequestCount\":108,\"SampledCount\":4,\"BorrowCount\":6,\"Timestamp\":1604297926.362}]}"; var actual = JsonMapper.ToJson(samplingStatisticsModel); Assert.AreEqual(expected, actual); }