예제 #1
0
            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);
            }
예제 #2
0
            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,
                };
            }