public static DebugInformation CreateFromSearchOrNull <T>( SearchRequest request, string indexName, SearchParameters parameters, string text, DocumentSearchResult <T> result, TimeSpan duration, AuxiliaryFilesMetadata auxiliaryFilesMetadata) where T : class { if (!request.ShowDebug) { return(null); } return(new DebugInformation { SearchRequest = request, IndexName = indexName, IndexOperationType = IndexOperationType.Search, SearchParameters = parameters, SearchText = text, DocumentSearchResult = result, QueryDuration = duration, AuxiliaryFilesMetadata = auxiliaryFilesMetadata, }); }
public AuxiliaryData( DateTimeOffset loaded, AuxiliaryFileResult <DownloadData> downloads, AuxiliaryFileResult <HashSet <string> > verifiedPackages) { Downloads = downloads ?? throw new ArgumentNullException(nameof(downloads)); VerifiedPackages = verifiedPackages ?? throw new ArgumentNullException(nameof(verifiedPackages)); Metadata = new AuxiliaryFilesMetadata( loaded, Downloads.Metadata, VerifiedPackages.Metadata); }
public static DebugInformation CreateFromGetOrNull( SearchRequest request, string indexName, string documentKey, TimeSpan duration, AuxiliaryFilesMetadata auxiliaryFilesMetadata) { if (!request.ShowDebug) { return(null); } return(new DebugInformation { SearchRequest = request, IndexName = indexName, IndexOperationType = IndexOperationType.Get, DocumentKey = documentKey, QueryDuration = duration, AuxiliaryFilesMetadata = auxiliaryFilesMetadata, }); }
public BaseFacts(ITestOutputHelper output) { _searchIndex = new Mock <ISearchIndexClientWrapper>(); _searchDocuments = new Mock <IDocumentsOperationsWrapper>(); _hijackIndex = new Mock <ISearchIndexClientWrapper>(); _hijackDocuments = new Mock <IDocumentsOperationsWrapper>(); _parametersBuilder = new Mock <ISearchParametersBuilder>(); _auxiliaryDataCache = new Mock <IAuxiliaryDataCache>(); _auxiliaryData = new Mock <IAuxiliaryData>(); _secretRefresher = new Mock <ISecretRefresher>(); _options = new Mock <IOptionsSnapshot <SearchServiceConfiguration> >(); _telemetryService = new Mock <IAzureSearchTelemetryService>(); _logger = output.GetLogger <SearchStatusService>(); _auxiliaryFilesMetadata = new AuxiliaryFilesMetadata( DateTimeOffset.MinValue, new AuxiliaryFileMetadata( DateTimeOffset.MinValue, TimeSpan.Zero, 0, string.Empty), new AuxiliaryFileMetadata( DateTimeOffset.MinValue, TimeSpan.Zero, 0, string.Empty)); _assembly = typeof(BaseFacts).Assembly; _config = new SearchServiceConfiguration(); _config.DeploymentLabel = "Fake deployment label."; _lastCommitTimestampParameters = new SearchParameters(); _searchLastCommitTimestamp = new DateTimeOffset(2019, 7, 1, 0, 0, 0, TimeSpan.Zero); _hijackLastCommitTimestamp = new DateTimeOffset(2019, 7, 2, 0, 0, 0, TimeSpan.Zero); _lastSecretRefresh = new DateTimeOffset(2019, 7, 3, 0, 0, 0, TimeSpan.Zero); Environment.SetEnvironmentVariable("WEBSITE_INSTANCE_ID", "Fake website instance ID."); _secretRefresher.Setup(x => x.LastRefresh).Returns(() => _lastSecretRefresh); _searchIndex.Setup(x => x.IndexName).Returns("search-index"); _hijackIndex.Setup(x => x.IndexName).Returns("hijack-index"); _searchIndex.Setup(x => x.Documents).Returns(() => _searchDocuments.Object); _hijackIndex.Setup(x => x.Documents).Returns(() => _hijackDocuments.Object); _searchDocuments.Setup(x => x.CountAsync()).ReturnsAsync(23); _hijackDocuments.Setup(x => x.CountAsync()).ReturnsAsync(42); _parametersBuilder.Setup(x => x.LastCommitTimestamp()).Returns(() => _lastCommitTimestampParameters); _searchDocuments .Setup(x => x.SearchAsync(It.IsAny <string>(), It.Is <SearchParameters>(p => !IsLastCommitTimestamp(p)))) .ReturnsAsync(new DocumentSearchResult()) .Callback(() => Thread.Sleep(TimeSpan.FromMilliseconds(1))); _searchDocuments .Setup(x => x.SearchAsync(It.IsAny <string>(), It.Is <SearchParameters>(p => IsLastCommitTimestamp(p)))) .ReturnsAsync(GetLastCommitTimestampResult(_searchLastCommitTimestamp)); _hijackDocuments .Setup(x => x.SearchAsync(It.IsAny <string>(), It.Is <SearchParameters>(p => !IsLastCommitTimestamp(p)))) .ReturnsAsync(new DocumentSearchResult()) .Callback(() => Thread.Sleep(TimeSpan.FromMilliseconds(1))); _hijackDocuments .Setup(x => x.SearchAsync(It.IsAny <string>(), It.Is <SearchParameters>(p => IsLastCommitTimestamp(p)))) .ReturnsAsync(GetLastCommitTimestampResult(_hijackLastCommitTimestamp)); _options.Setup(x => x.Value).Returns(() => _config); _auxiliaryDataCache.Setup(x => x.Get()).Returns(() => _auxiliaryData.Object); _auxiliaryData.Setup(x => x.Metadata).Returns(() => _auxiliaryFilesMetadata); _target = new SearchStatusService( _searchIndex.Object, _hijackIndex.Object, _parametersBuilder.Object, _auxiliaryDataCache.Object, _secretRefresher.Object, _options.Object, _telemetryService.Object, _logger); }
public BaseFacts() { _auxiliaryData = new Mock <IAuxiliaryData>(); _config = new SearchServiceConfiguration(); _options = new Mock <IOptionsSnapshot <SearchServiceConfiguration> >(); _options.Setup(x => x.Value).Returns(() => _config); _auxiliaryMetadata = new AuxiliaryFilesMetadata( new DateTimeOffset(2019, 1, 3, 11, 0, 0, TimeSpan.Zero), new AuxiliaryFileMetadata( new DateTimeOffset(2019, 1, 1, 11, 0, 0, TimeSpan.Zero), TimeSpan.FromSeconds(15), 1234, "\"etag-a\""), new AuxiliaryFileMetadata( new DateTimeOffset(2019, 1, 2, 11, 0, 0, TimeSpan.Zero), TimeSpan.FromSeconds(30), 5678, "\"etag-b\"")); _config.SearchIndexName = "search-index"; _config.HijackIndexName = "hijack-index"; _config.SemVer1RegistrationsBaseUrl = "https://example/reg/"; _config.SemVer2RegistrationsBaseUrl = "https://example/reg-gz-semver2/"; _config.FlatContainerBaseUrl = Data.FlatContainerBaseUrl; _config.FlatContainerContainerName = Data.FlatContainerContainerName; _auxiliaryData .Setup(x => x.GetTotalDownloadCount(It.IsAny <string>())) .Returns(Data.TotalDownloadCount); _auxiliaryData .Setup(x => x.GetDownloadCount(It.IsAny <string>(), It.IsAny <string>())) .Returns(23); _auxiliaryData .Setup(x => x.IsVerified(It.IsAny <string>())) .Returns(true); _auxiliaryData .Setup(x => x.Metadata) .Returns(() => _auxiliaryMetadata); _v2Request = new V2SearchRequest { IncludePrerelease = true, IncludeSemVer2 = true, }; _v3Request = new V3SearchRequest { IncludePrerelease = true, IncludeSemVer2 = true }; _autocompleteRequest = new AutocompleteRequest { IncludePrerelease = true, IncludeSemVer2 = true, }; _searchParameters = new SearchParameters(); _text = "azure storage sdk"; _duration = TimeSpan.FromMilliseconds(250); _emptySearchResult = new DocumentSearchResult <SearchDocument.Full> { Count = 0, Results = new List <SearchResult <SearchDocument.Full> >(), }; _searchResult = new DocumentSearchResult <SearchDocument.Full> { Count = 1, Results = new List <SearchResult <SearchDocument.Full> > { new SearchResult <SearchDocument.Full> { Document = Data.SearchDocument, }, }, }; _manySearchResults = new DocumentSearchResult <SearchDocument.Full> { Count = 2, Results = new List <SearchResult <SearchDocument.Full> > { new SearchResult <SearchDocument.Full> { Document = Data.SearchDocument, }, new SearchResult <SearchDocument.Full> { Document = Data.SearchDocument, }, }, }; _hijackResult = new DocumentSearchResult <HijackDocument.Full> { Count = 1, Results = new List <SearchResult <HijackDocument.Full> > { new SearchResult <HijackDocument.Full> { Document = Data.HijackDocument, }, }, }; _jsonSerializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, Converters = { new StringEnumConverter(), }, Formatting = Formatting.Indented, }; }