public void Resource_specific_paths_do_not_require_any_suffixes() { var server = new RavenConfiguration(null, ResourceType.Server); server.SetSetting(RavenConfiguration.GetKey(x => x.Core.RunInMemory), "true"); server.SetSetting(RavenConfiguration.GetKey(x => x.Core.DataDirectory), $@"{_rootPathString}Deployment"); server.SetSetting(RavenConfiguration.GetKey(x => x.Storage.TempPath), $@"{_rootPathString}temp"); server.SetSetting(RavenConfiguration.GetKey(x => x.Indexing.TempPath), $@"{_rootPathString}indexes-temp"); server.Initialize(); var database = RavenConfiguration.CreateFrom(server, "Foo", ResourceType.Database); database.SetSetting(RavenConfiguration.GetKey(x => x.Core.DataDirectory), $@"{_rootPathString}MyDatabase"); database.SetSetting(RavenConfiguration.GetKey(x => x.Storage.TempPath), $@"{_rootPathString}my-temp-path"); database.SetSetting(RavenConfiguration.GetKey(x => x.Indexing.TempPath), $@"{_rootPathString}my-indexes-temp"); database.Initialize(); Assert.Equal(new PathSetting($@"{_rootPathString}MyDatabase").FullPath, database.Core.DataDirectory.FullPath); Assert.Equal(new PathSetting($@"{_rootPathString}my-temp-path").FullPath, database.Storage.TempPath.FullPath); Assert.Equal(new PathSetting($@"{_rootPathString}my-indexes-temp").FullPath, database.Indexing.TempPath.FullPath); }
public void IfConfigurationKeyIsStringArrayThenItShouldSupportValuesWithSemicolonPropely() { var configuration = new RavenConfiguration("Foo", ResourceType.Server); configuration.SetSetting(RavenConfiguration.GetKey(x => x.Core.ServerUrls), "http://123.123.123.123:10105;http://123.123.123.124:10105"); configuration.SetSetting(RavenConfiguration.GetKey(x => x.Core.PublicServerUrl), "http://public.url.com"); configuration.Initialize(); Assert.NotNull(configuration.Core.ServerUrls); Assert.Equal(2, configuration.Core.ServerUrls.Length); Assert.Contains("http://123.123.123.123:10105", configuration.Core.ServerUrls); Assert.Contains("http://123.123.123.124:10105", configuration.Core.ServerUrls); }
public RavenConfiguration GetConfiguration(string serverUrl = null, string tcpServerUrl = null, string certPath = null) { var configuration = new RavenConfiguration(null, ResourceType.Server); configuration.SetSetting( RavenConfiguration.GetKey(x => x.Core.ServerUrl), serverUrl); configuration.SetSetting( RavenConfiguration.GetKey(x => x.Core.TcpServerUrl), tcpServerUrl); configuration.SetSetting( RavenConfiguration.GetKey(x => x.Security.CertificatePath), certPath); configuration.Initialize(); return(configuration); }
public void Default_database_path_settings() { var config = new RavenConfiguration("foo", ResourceType.Database, _emptySettingFile); config.SetSetting(RavenConfiguration.GetKey(x => x.Core.RunInMemory), "true"); config.Initialize(); Assert.Equal(new PathSetting("Databases/foo").FullPath, config.Core.DataDirectory.FullPath); Assert.Equal(new PathSetting("Databases/foo/Indexes").FullPath, config.Indexing.StoragePath.FullPath); Assert.Null(config.Indexing.TempPath); Assert.Null(config.Storage.TempPath); // actual configuration is created in the following manner config = RavenConfiguration.CreateFrom(new RavenConfiguration(null, ResourceType.Server, _emptySettingFile), "foo", ResourceType.Database); config.Initialize(); Assert.Equal(new PathSetting("Databases/foo").FullPath, config.Core.DataDirectory.FullPath); Assert.Equal(new PathSetting("Databases/foo/Indexes").FullPath, config.Indexing.StoragePath.FullPath); Assert.Null(config.Indexing.TempPath); Assert.Null(config.Storage.TempPath); }
protected DocumentDatabase CreateDocumentDatabase([CallerMemberName] string caller = null, bool runInMemory = true, string dataDirectory = null, Action <RavenConfiguration> modifyConfiguration = null) { var name = caller != null ? $"{caller}_{Interlocked.Increment(ref _counter)}" : Guid.NewGuid().ToString("N"); if (string.IsNullOrEmpty(dataDirectory)) { dataDirectory = NewDataPath(name); } _pathsToDelete.Add(dataDirectory); var configuration = new RavenConfiguration(); configuration.SetSetting(RavenConfiguration.GetKey(x => x.Indexing.MinNumberOfMapAttemptsAfterWhichBatchWillBeCanceledIfRunningLowOnMemory), int.MaxValue.ToString()); configuration.Initialize(); configuration.Core.ThrowIfAnyIndexOrTransformerCouldNotBeOpened = true; configuration.Core.RunInMemory = runInMemory; configuration.Core.DataDirectory = dataDirectory; modifyConfiguration?.Invoke(configuration); var documentDatabase = new DocumentDatabase(name, configuration, null); documentDatabase.Initialize(); return(documentDatabase); }
public void Modify <TValue>(Expression <Func <RavenConfiguration, TValue> > key, TValue value, string customStringValue = null) { var expression = key.Body as MemberExpression; var members = new Stack <MemberInfo>(); while (expression != null) { members.Push(expression.Member); expression = expression.Expression as MemberExpression; } object entity = configuration; foreach (var member in members) { var entityObject = member.GetValue(entity); if (entityObject is ConfigurationCategory) { entity = entityObject; } else { member.SetValue(entity, value); } } using (configuration.AllowChangeAfterInit()) { configuration.SetSetting(RavenConfiguration.GetKey(key), customStringValue ?? value.ToString()); } }
public void Inherits_server_settings_and_appends_resource_specific_suffix_paths() { var server = new RavenConfiguration(null, ResourceType.Server); server.SetSetting(RavenConfiguration.GetKey(x => x.Core.RunInMemory), "true"); server.SetSetting(RavenConfiguration.GetKey(x => x.Core.DataDirectory), $@"{_rootPathString}Deployment"); server.SetSetting(RavenConfiguration.GetKey(x => x.Storage.TempPath), $@"{_rootPathString}temp"); server.SetSetting(RavenConfiguration.GetKey(x => x.Storage.JournalsStoragePath), $@"{_rootPathString}Journals"); server.SetSetting(RavenConfiguration.GetKey(x => x.Indexing.StoragePath), $@"{_rootPathString}Indexes"); server.SetSetting(RavenConfiguration.GetKey(x => x.Indexing.TempPath), $@"{_rootPathString}indexes-temp"); server.SetSetting(RavenConfiguration.GetKey(x => x.Indexing.JournalsStoragePath), $@"{_rootPathString}Indexes-Journals"); server.Initialize(); var database = RavenConfiguration.CreateFrom(server, "Foo", ResourceType.Database); database.Initialize(); Assert.Equal(new PathSetting($@"{_rootPathString}Deployment\Databases\Foo").FullPath, database.Core.DataDirectory.FullPath); Assert.Equal(new PathSetting($@"{_rootPathString}temp\Databases\Foo").FullPath, database.Storage.TempPath.FullPath); Assert.Equal(new PathSetting($@"{_rootPathString}Journals\Databases\Foo").FullPath, database.Storage.JournalsStoragePath.FullPath); Assert.Equal(new PathSetting($@"{_rootPathString}Indexes\Databases\Foo").FullPath, database.Indexing.StoragePath.FullPath); Assert.Equal(new PathSetting($@"{_rootPathString}indexes-temp\Databases\Foo").FullPath, database.Indexing.TempPath.FullPath); Assert.Equal(new PathSetting($@"{_rootPathString}Indexes-Journals\Databases\Foo").FullPath, database.Indexing.JournalsStoragePath.FullPath); }
public void Should_create_data_in_directory_specified_at_server_level() { var server = new RavenConfiguration(null, ResourceType.Server); server.SetSetting(RavenConfiguration.GetKey(x => x.Core.RunInMemory), "true"); server.SetSetting(RavenConfiguration.GetKey(x => x.Core.DataDirectory), $@"{_rootPathString}RavenData"); server.Initialize(); var database = RavenConfiguration.CreateFrom(server, "Foo", ResourceType.Database); database.SetSetting(RavenConfiguration.GetKey(x => x.Core.DataDirectory), @"Items"); database.Initialize(); Assert.Equal(new PathSetting($@"{_rootPathString}RavenData\Items").FullPath, database.Core.DataDirectory.FullPath); }
public void Database_creation_using_relative_path_creates_directories_incorrectly() { var server = new RavenConfiguration(null, ResourceType.Server); server.SetSetting(RavenConfiguration.GetKey(x => x.Core.RunInMemory), "true"); server.SetSetting(RavenConfiguration.GetKey(x => x.Core.DataDirectory), "RavenData"); server.Initialize(); var database = RavenConfiguration.CreateFrom(server, "foo", ResourceType.Database); database.SetSetting(RavenConfiguration.GetKey(x => x.Core.RunInMemory), "true"); database.SetSetting(RavenConfiguration.GetKey(x => x.Core.DataDirectory), @"MyWork\MyDatabaseFolder"); database.Initialize(); Assert.Equal(new PathSetting("RavenData/MyWork/MyDatabaseFolder").FullPath, database.Core.DataDirectory.FullPath); Assert.Equal(new PathSetting("RavenData/MyWork/MyDatabaseFolder/Indexes").FullPath, database.Indexing.StoragePath.FullPath); }
public RavenConfiguration GetConfiguration( string certPath = null, UnsecuredAccessAddressRange unsecuredAccessAddressRange = UnsecuredAccessAddressRange.Local, string publicServerUrl = null, string serverUrl = null) { var configuration = new RavenConfiguration(null, ResourceType.Server); configuration.SetSetting( RavenConfiguration.GetKey(x => x.Core.ServerUrls), serverUrl); configuration.SetSetting( RavenConfiguration.GetKey(x => x.Core.PublicServerUrl), publicServerUrl); configuration.SetSetting( RavenConfiguration.GetKey(x => x.Security.CertificatePath), certPath); configuration.SetSetting( RavenConfiguration.GetKey(x => x.Security.UnsecuredAccessAllowed), Enum.GetName(typeof(UnsecuredAccessAddressRange), unsecuredAccessAddressRange)); configuration.Initialize(); return(configuration); }
public void Should_handle_APPDRIVE_properly_if_specified() { var server = new RavenConfiguration(null, ResourceType.Server); server.SetSetting(RavenConfiguration.GetKey(x => x.Core.RunInMemory), "true"); server.SetSetting(RavenConfiguration.GetKey(x => x.Core.DataDirectory), @"APPDRIVE:\RavenData"); server.Initialize(); var rootPath = Path.GetPathRoot(AppContext.BaseDirectory); Assert.Equal(new PathSetting($@"{rootPath}RavenData").FullPath, server.Core.DataDirectory.FullPath); var database = RavenConfiguration.CreateFrom(server, "Foo", ResourceType.Database); database.Initialize(); Assert.Equal(new PathSetting($@"{rootPath}RavenData\Databases\Foo").FullPath, database.Core.DataDirectory.FullPath); Assert.Equal(new PathSetting($@"{rootPath}RavenData\Databases\Foo\Indexes").FullPath, database.Indexing.StoragePath.FullPath); }
public void CanDefineMoreThanOneAdditionalStoragePath() { var configuration = new RavenConfiguration(); configuration.SetSetting(RavenConfiguration.GetKey(x => x.Indexing.IndexStoragePath), "C:\\temp\\0"); configuration.SetSetting(RavenConfiguration.GetKey(x => x.Indexing.AdditionalIndexStoragePaths), "C:\\temp\\1;C:\\temp\\2"); configuration.Initialize(); Assert.Equal("C:\\temp\\0", configuration.Indexing.IndexStoragePath); Assert.Equal(2, configuration.Indexing.AdditionalIndexStoragePaths.Length); Assert.Equal("C:\\temp\\1", configuration.Indexing.AdditionalIndexStoragePaths[0]); Assert.Equal("C:\\temp\\2", configuration.Indexing.AdditionalIndexStoragePaths[1]); configuration = new RavenConfiguration(); configuration.DatabaseName = "DB"; configuration.SetSetting(RavenConfiguration.GetKey(x => x.Indexing.IndexStoragePath), "C:\\temp\\0"); configuration.SetSetting(RavenConfiguration.GetKey(x => x.Indexing.AdditionalIndexStoragePaths), "C:\\temp\\1;C:\\temp\\2"); configuration.Initialize(); Assert.Equal("C:\\temp\\0\\DB", configuration.Indexing.IndexStoragePath); Assert.Equal(2, configuration.Indexing.AdditionalIndexStoragePaths.Length); Assert.Equal("C:\\temp\\1\\DB", configuration.Indexing.AdditionalIndexStoragePaths[0]); Assert.Equal("C:\\temp\\2\\DB", configuration.Indexing.AdditionalIndexStoragePaths[1]); }
public void ShouldWork() { var server = new RavenConfiguration(null, ResourceType.Server); server.SetSetting(RavenConfiguration.GetKey(x => x.Storage.ForceUsing32BitsPager), "true"); server.Initialize(); // should not throw Assert.True(server.Storage.ForceUsing32BitsPager); var database = RavenConfiguration.CreateFrom(server, "dbName", ResourceType.Database); database.SetSetting(RavenConfiguration.GetKey(x => x.Storage.ForceUsing32BitsPager), "true"); var e = Assert.Throws <InvalidOperationException>(() => database.Initialize()); Assert.Equal($"Configuration '{RavenConfiguration.GetKey(x => x.Storage.ForceUsing32BitsPager)}' can only be set at server level.", e.Message); }
protected virtual RavenServer GetNewServer(IDictionary <string, string> customSettings = null, bool deletePrevious = true, bool runInMemory = true, string partialPath = null, string customConfigPath = null) { lock (_getNewServerSync) { var configuration = new RavenConfiguration(Guid.NewGuid().ToString(), ResourceType.Server, customConfigPath); if (customSettings != null) { foreach (var setting in customSettings) { configuration.SetSetting(setting.Key, setting.Value); } } configuration.Initialize(); configuration.Logs.Mode = LogMode.None; if (customSettings == null || customSettings.ContainsKey(RavenConfiguration.GetKey(x => x.Core.ServerUrls)) == false) { configuration.Core.ServerUrls = new[] { "http://127.0.0.1:0" }; } configuration.Server.Name = ServerName; configuration.Core.RunInMemory = runInMemory; configuration.Core.DataDirectory = configuration.Core.DataDirectory.Combine(partialPath ?? $"Tests{Interlocked.Increment(ref _serverCounter)}"); configuration.Server.MaxTimeForTaskToWaitForDatabaseToLoad = new TimeSetting(60, TimeUnit.Seconds); configuration.Replication.ReplicationMinimalHeartbeat = new TimeSetting(100, TimeUnit.Milliseconds); configuration.Replication.RetryReplicateAfter = new TimeSetting(3, TimeUnit.Seconds); configuration.Cluster.AddReplicaTimeout = new TimeSetting(10, TimeUnit.Seconds); configuration.Licensing.EulaAccepted = true; if (customSettings == null || customSettings.ContainsKey(RavenConfiguration.GetKey(x => x.Core.FeaturesAvailability)) == false) { configuration.Core.FeaturesAvailability = FeaturesAvailability.Experimental; } if (deletePrevious) { IOExtensions.DeleteDirectory(configuration.Core.DataDirectory.FullPath); } var server = new RavenServer(configuration); server.Initialize(); return(server); } }
public void GivenServerUrlCliArgAndSecuredSetupSchemeShouldBeUpdatedAfterRestart() { // ARRANGE var args = new string[] { "--ServerUrl=http://0.0.0.0:8080" }; var confBeforeRestart = new RavenConfiguration(null, ResourceType.Server); confBeforeRestart.Core.ServerUrls = new[] { "http://0.0.0.0:8080" }; var newConf = new RavenConfiguration(null, ResourceType.Server); newConf.SetSetting("ServerUrl", "https://127.0.0.1:9090"); // ACT var updatedArgs = PostSetupCliArgumentsUpdater.Process(args, confBeforeRestart, newConf); // ASSERT Assert.Equal("--ServerUrl=https://0.0.0.0:8080", updatedArgs[0]); }