Ejemplo n.º 1
0
        public async Task RawSearchResource_CancelledToken_ThrowsOperationCancelledException()
        {
            // Arrange
            var serviceAddress = ProtocolUtility.CreateServiceAddress();

            var responses = new Dictionary <string, string>();

            responses.Add(
                serviceAddress + "?q=azure%20b&skip=0&take=1&prerelease=false" +
                "&supportedFramework=.NETFramework,Version=v4.5&semVerLevel=2.0.0",
                ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.V3Search.json", GetType()));
            responses.Add(serviceAddress, string.Empty);

            var httpSource = new TestHttpSource(new PackageSource(serviceAddress), responses);

            httpSource.StreamWrapper = (stream) => new NoSyncReadStream(stream);

            var searchResource = new RawSearchResourceV3(httpSource, new Uri[] { new Uri(serviceAddress) });

            var searchFilter = new SearchFilter(includePrerelease: false)
            {
                SupportedFrameworks = new string[] { ".NETFramework,Version=v4.5" }
            };

            var tokenSource = new CancellationTokenSource();

            tokenSource.Cancel();

            // Act/Assert
            await Assert.ThrowsAsync <TaskCanceledException> (() =>
                                                              searchResource.Search("Sentry", searchFilter, 0, 1, NullLogger.Instance, tokenSource.Token));
        }
        public async Task RawSearchResource_VerifyReadSyncIsNotUsed()
        {
            // Arrange
            var serviceAddress = ProtocolUtility.CreateServiceAddress();

            var responses = new Dictionary <string, string>();

            responses.Add(
                serviceAddress + "?q=azure%20b&skip=0&take=1&prerelease=false" +
                "&supportedFramework=.NETFramework,Version=v4.5&semVerLevel=2.0.0",
                ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.V3Search.json", GetType()));
            responses.Add(serviceAddress, string.Empty);

            var httpSource = new TestHttpSource(new PackageSource(serviceAddress), responses);

            // throw if sync .Read is used
            httpSource.StreamWrapper = (stream) => new NoSyncReadStream(stream);

            var searchResource = new RawSearchResourceV3(httpSource, new Uri[] { new Uri(serviceAddress) });

            var searchFilter = new SearchFilter(includePrerelease: false)
            {
                SupportedFrameworks = new string[] { ".NETFramework,Version=v4.5" }
            };

            // Act
            var packages = await searchResource.Search("azure b", searchFilter, 0, 1, NullLogger.Instance, CancellationToken.None);

            var packagesArray = packages.ToArray();

            // Assert
            // Verify that the url matches the one in the response dictionary
            // Verify no failures from Sync Read
            Assert.True(packagesArray.Length > 0);
        }
Ejemplo n.º 3
0
        public async Task <IEnumerable <IPackageSearchMetadata> > GetSearchPageForIdAsync(Uri searchBaseUri)
        {
            var lazyTask = _searchPageForIdCache.GetOrAdd(
                searchBaseUri,
                _ => new Lazy <Task <IEnumerable <IPackageSearchMetadata> > >(() =>
            {
                var queryUri = new Uri(searchBaseUri, "/query");
                _logger.LogInformation(
                    "Searching for package {Id} on {Uri}.",
                    Package.Id,
                    queryUri.AbsoluteUri);

                var rawSearchResource     = new RawSearchResourceV3(_httpSourceResource.HttpSource, new[] { queryUri });
                var packageSearchResource = new PackageSearchResourceV3(rawSearchResource);
                return(packageSearchResource.SearchAsync(
                           searchTerm: $"packageid:{Package.Id}",
                           filter: new SearchFilter(includePrerelease: true),
                           skip: 0,
                           take: 1,
                           log: _commonLogger,
                           cancellationToken: CancellationToken));
            }));

            return(await lazyTask.Value);
        }
Ejemplo n.º 4
0
        public async Task RawSearchResource_SearchEncoding()
        {
            // Arrange
            var serviceAddress = TestUtility.CreateServiceAddress();

            var responses = new Dictionary <string, string>();

            responses.Add(serviceAddress + "?q=azure%20b&skip=0&take=1&prerelease=false&supportedFramework=.NETFramework,Version=v4.5",
                          TestUtility.GetResource("NuGet.Protocol.Core.v3.Tests.compiler.resources.V3Search.json", GetType()));
            responses.Add(serviceAddress, string.Empty);

            var httpSource = new TestHttpSource(new PackageSource(serviceAddress), responses);

            var searchResource = new RawSearchResourceV3(httpSource, new Uri[] { new Uri(serviceAddress) });

            var searchFilter = new SearchFilter()
            {
                IncludePrerelease   = false,
                SupportedFrameworks = new string[] { ".NETFramework,Version=v4.5" }
            };

            // Act
            var packages = await searchResource.Search("azure b", searchFilter, 0, 1, NullLogger.Instance, CancellationToken.None);

            var packagesArray = packages.ToArray();

            // Assert
            // Verify that the url matches the one in the response dictionary
            Assert.True(packagesArray.Length > 0);
        }
Ejemplo n.º 5
0
        private PackageSearchResourceV3 GetSearch()
        {
            RawSearchResourceV3 rawSearchResource = _sourceRepository.GetResource <RawSearchResourceV3>();

            Assert.NotNull(rawSearchResource);
            var search = new PackageSearchResourceV3(rawSearchResource);

            return(search);
        }
Ejemplo n.º 6
0
        public async Task <IList <T> > GetItemsForCurrentPage(CancellationToken token)
        {
            IEnumerable <IPackageSearchMetadata> result = null;

            if (_searchText?.StartsWith("id:", StringComparison.OrdinalIgnoreCase) == true)
            {
                var id = _searchText.Substring(3).Trim();
                if (!string.IsNullOrEmpty(id))
                {
                    var findPackageByIdResource = await _sourceRepository.GetResourceAsync <PackageMetadataResource>();

                    var metadata = await findPackageByIdResource.GetMetadataAsync(id, _searchFilter.IncludePrerelease, true, NullSourceCacheContext.Instance, NullLogger.Instance, token);

                    result = metadata.OrderByDescending(m => m.Identity.Version).Take(1);
                }
                else
                {
                    result = Enumerable.Empty <IPackageSearchMetadata>();
                }
            }
            else
            {
                if (_packageSearchResouce == null && _rawPackageSearchResouce == null)
                {
                    _rawPackageSearchResouce = await _sourceRepository.GetResourceAsync <RawSearchResourceV3>(token);
                }
                if (_rawPackageSearchResouce != null)
                {
                    var json = await _rawPackageSearchResouce.Search(_searchText, _searchFilter, _pageIndex *_pageSize, _pageSize, NullLogger.Instance, token);

                    result = json.Select(s => s.FromJToken <PackageSearchMetadata>());
                }

                if (result == null)
                {
                    if (_packageSearchResouce == null)
                    {
                        _packageSearchResouce = await _sourceRepository.GetResourceAsync <PackageSearchResource>(token);
                    }

                    result = await _packageSearchResouce.SearchAsync(_searchText, _searchFilter, _pageIndex *_pageSize, _pageSize, NullLogger.Instance, token);
                }
            }

            token.ThrowIfCancellationRequested();

            var list = result.Cast <T>().ToList();

            if (list.Count < _pageSize)
            {
                _lastPageIndex = _pageIndex;
                _lastPageCount = list.Count;
            }

            return(list);
        }
Ejemplo n.º 7
0
        private PackageSearchResourceV3 GetSearch()
        {
            PackageMetadataResourceV3 packageMetadataRes = GetPackageMetadataResource();
            RawSearchResourceV3       rawSearchResource  = _sourceRepository.GetResource <RawSearchResourceV3>();

            Assert.NotNull(rawSearchResource);
            var search = new PackageSearchResourceV3(rawSearchResource, packageMetadataRes);

            return(search);
        }
        public override async Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository source, CancellationToken token)
        {
            PowerShellSearchResource resource = null;

            // PS search depends on v3 json search
            RawSearchResourceV3 rawSearch = await source.GetResourceAsync <RawSearchResourceV3>();

            if (rawSearch != null)
            {
                resource = new PowerShellSearchResource(rawSearch);
            }

            return(new Tuple <bool, INuGetResource>(resource != null, resource));
        }
        public async Task RawSearchResource_SearchEncoding()
        {
            // Arrange
            var serviceAddress = ProtocolUtility.CreateServiceAddress();

            var responses = new Dictionary <string, string>();

            responses.Add(
                serviceAddress + "?q=azure%20b&skip=0&take=1&prerelease=false" +
                "&supportedFramework=.NETFramework,Version=v4.5&semVerLevel=2.0.0",
                ProtocolUtility.GetResource("NuGet.Protocol.Tests.compiler.resources.V3Search.json", GetType()));
            responses.Add(serviceAddress, string.Empty);

            var httpSource = new TestHttpSource(new PackageSource(serviceAddress), responses);

#pragma warning disable CS0618
            var searchResource = new RawSearchResourceV3(httpSource, new Uri[] { new Uri(serviceAddress) });
#pragma warning restore CS0618

            var searchFilter = new SearchFilter(includePrerelease: false)
            {
                SupportedFrameworks = new string[] { ".NETFramework,Version=v4.5" }
            };

            var skip = 0;
            var take = 1;

            // Act
#pragma warning disable CS0618
            var packages = await searchResource.Search(
#pragma warning restore CS0618
                "azure b",
                searchFilter,
                skip,
                take,
                NullLogger.Instance,
                CancellationToken.None);

            var packagesArray = packages.ToArray();

            // Assert
            // Verify that the url matches the one in the response dictionary
            Assert.True(packagesArray.Length > 0);
        }
Ejemplo n.º 10
0
        public override async Task <Tuple <bool, INuGetResource> > TryCreate(SourceRepository source, CancellationToken token)
        {
            ApiAppSearchResource resource = null;

            var messageHandlerResource = await source.GetResourceAsync <HttpHandlerResource>(token);

            ServiceIndexResourceV3 serviceIndex = await source.GetResourceAsync <ServiceIndexResourceV3>();

            if (messageHandlerResource != null && serviceIndex != null)
            {
                var endpoints = serviceIndex["ApiAppSearchQueryService"];

                if (endpoints.Any())
                {
                    RawSearchResourceV3 rawSearch = new RawSearchResourceV3(messageHandlerResource.MessageHandler, endpoints);

                    resource = new ApiAppSearchResource(rawSearch);
                }
            }

            return(new Tuple <bool, INuGetResource>(resource != null, resource));
        }
        public async Task <IList <T> > GetItemsForCurrentPage(CancellationToken token)
        {
            IEnumerable <IPackageSearchMetadata> result = null;

            if (_packageSearchResouce == null && _rawPackageSearchResouce == null)
            {
                _rawPackageSearchResouce = await _sourceRepository.GetResourceAsync <RawSearchResourceV3>(token);
            }
            if (_rawPackageSearchResouce != null)
            {
                var json = await _rawPackageSearchResouce.Search(_searchText, _searchFilter, _pageIndex *_pageSize, _pageSize, NullLogger.Instance, token);

                result = json.Select(s => s.FromJToken <PackageSearchMetadata>());
            }

            if (result == null)
            {
                if (_packageSearchResouce == null)
                {
                    _packageSearchResouce = await _sourceRepository.GetResourceAsync <PackageSearchResource>(token);
                }

                result = await _packageSearchResouce.SearchAsync(_searchText, _searchFilter, _pageIndex *_pageSize, _pageSize, NullLogger.Instance, token);
            }

            token.ThrowIfCancellationRequested();

            var list = result.Cast <T>().ToList();

            if (list.Count < _pageSize)
            {
                _lastPageIndex = _pageIndex;
                _lastPageCount = list.Count;
            }

            return(list);
        }
 /// <summary>
 /// Constructs an instance of <see cref="PackageSearchResourceEnhancedV3"/>.
 /// </summary>
 /// <param name="searchResource">Instance of <see cref="RawSearchResourceV3"/> that provides direct access to the result JSON data.</param>
 public PackageSearchResourceEnhancedV3(RawSearchResourceV3 searchResource)
 {
     _searchResource = searchResource;
 }
Ejemplo n.º 13
0
 public ApiAppSearchResource(RawSearchResourceV3 rawSearch)
 {
     _rawSearch = rawSearch;
 }
Ejemplo n.º 14
0
 public PowerShellSearchResource(RawSearchResourceV3 rawSearch)
 {
     _rawSearch = rawSearch;
 }
Ejemplo n.º 15
0
 public UISearchResourceV3(RawSearchResourceV3 searchResource, UIMetadataResource metadataResource)
     : base()
 {
     _searchResource   = searchResource;
     _metadataResource = metadataResource;
 }
Ejemplo n.º 16
0
 public PowerShellSearchResourceV3(RawSearchResourceV3 searchResource)
 {
     _searchResource = searchResource;
 }