private async Task InitializeAsync(IEnumerable <PackageVersion> packages = null) { // Establish the settings. _settings = ReadFromXml <TestSettings>("TestSettings.xml"); _nupkgDownloader = new NupkgDownloader(_settings); _luceneDirectoryInitializer = new LuceneDirectoryInitializer(_settings, _nupkgDownloader); _portReserver = new PortReserver(); // Set up the data. var enumeratedPackages = packages?.ToArray() ?? new PackageVersion[0]; await _nupkgDownloader.DownloadPackagesAsync(enumeratedPackages); var luceneDirectory = _luceneDirectoryInitializer.GetInitializedDirectory(enumeratedPackages); // Set up the configuration. // Note that here we are using DictionaryConfigurationProvider // because we want to restrict the values that the configuration can hold. var configProvider = new DictionaryConfigurationProvider( new Dictionary <string, string> { { "Local.Lucene.Directory", (luceneDirectory as FSDirectory)?.Directory.FullName ?? "RAM" }, { "Search.RegistrationBaseAddress", _settings.RegistrationBaseAddress } }); // Set up the data directory. var loader = new InMemoryLoader { { "downloads.v1.json", BuildDownloadsFile(enumeratedPackages) }, { "curatedfeeds.json", "[]" }, { "owners.json", "[]" }, { "verifiedPackages.json", BuildVerifiedPackagesFile(enumeratedPackages) }, { "rankings.v1.json", BuildRankingsFile(enumeratedPackages) }, { "searchSettings.v1.json", JsonConvert.SerializeObject(QueryBoostingContext.Default) }, }; // Start the app. _webApp = WebApp.Start(_portReserver.BaseUri, app => new Startup().Configuration(app, new ConfigurationFactory(configProvider), luceneDirectory, loader)); Client = new HttpClient { BaseAddress = new Uri(_portReserver.BaseUri) }; }
public LuceneDirectoryInitializer(TestSettings settings, INupkgDownloader nupkgDownloader) { _settings = settings; _nupkgDownloader = nupkgDownloader; }