Skip to content

Commit

Permalink
Make sure the specified home-dir is used.
Browse files Browse the repository at this point in the history
  • Loading branch information
srbaker committed May 26, 2016
1 parent b5275d8 commit 31ed466
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 22 deletions.
Expand Up @@ -76,7 +76,7 @@ public final int start( File homeDir, Optional<File> configFile, Pair<String, St

try
{
Config config = createConfig( log, configFile, configOverrides );
Config config = createConfig( log, homeDir, configFile, configOverrides );
serverAddress = ServerSettings.httpConnector( config, ServerSettings.HttpConnector.Encryption.NONE )
.map( ( connector ) -> connector.address.toString() )
.orElse( serverAddress );
Expand Down Expand Up @@ -156,9 +156,10 @@ private static LogProvider setupLogging()
return userLogProvider;
}

private Config createConfig( Log log, Optional<File> file, Pair<String, String>[] configOverrides ) throws IOException
private Config createConfig( Log log, File homeDir, Optional<File> file, Pair<String, String>[] configOverrides )
throws IOException
{
return new ConfigLoader( this::settingsClasses ).loadConfig( file, log, configOverrides );
return new ConfigLoader( this::settingsClasses ).loadConfig( homeDir, file, log, configOverrides );
}

private void addShutdownHook()
Expand Down
Expand Up @@ -55,10 +55,17 @@ public ConfigLoader( List<Class<?>> settingsClasses )

public Config loadConfig( Optional<File> configFile, Log log, Pair<String, String>... configOverrides )
{
return loadConfig( configFile, log, settings -> {}, configOverrides );
return loadConfig( Optional.empty(), configFile, log, settings -> {}, configOverrides );
}

public Config loadConfig( Optional<File> configFile,
public Config loadConfig( File homeDir, Optional<File> configFile, Log log,
Pair<String, String>... configOverrides )
{
return loadConfig( Optional.ofNullable( homeDir ), configFile, log, settings -> {}, configOverrides );
}

public Config loadConfig( Optional<File> homeDir,
Optional<File> configFile,
Log log,
Consumer<Map<String, String>> customizer,
Pair<String, String>... configOverrides )
Expand All @@ -68,14 +75,14 @@ public Config loadConfig( Optional<File> configFile,
throw new IllegalArgumentException( "log cannot be null" );
}

Map<String, String> settings = calculateSettings( configFile, log, configOverrides, customizer );
Map<String, String> settings = calculateSettings( homeDir, configFile, log, configOverrides, customizer );
Config config = new Config( settings, settingsClasses.calculate( settings ) );
config.setLogger( log );
return config;
}


private Map<String, String> calculateSettings( Optional<File> config, Log log,
private Map<String, String> calculateSettings( Optional<File> homeDir, Optional<File> config, Log log,
Pair<String, String>[] configOverrides,
Consumer<Map<String, String>> customizer )
{
Expand All @@ -84,7 +91,7 @@ private Map<String, String> calculateSettings( Optional<File> config, Log log,
config.ifPresent( ( c ) -> settings.putAll( loadFromFile( log, c ) ) );
settings.putAll( toMap( configOverrides ) );
overrideEmbeddedDefaults( settings );
settings.put( GraphDatabaseSettings.neo4j_home.name(), System.getProperty( "user.dir" ) );
homeDir.ifPresent( ( h ) -> settings.put( GraphDatabaseSettings.neo4j_home.name(), h.getAbsolutePath() ) );
customizer.accept( settings );
return settings;
}
Expand Down
Expand Up @@ -66,7 +66,7 @@ public void shouldProvideAConfiguration() throws IOException
.build();

// when
Config config = configLoader.loadConfig( configFile, log );
Config config = configLoader.loadConfig( folder.getRoot(), configFile, log );

// then
assertNotNull( config );
Expand All @@ -81,13 +81,27 @@ public void shouldUseSpecifiedConfigFile() throws Exception
.build();

// when
Config testConf = configLoader.loadConfig( configFile, log );
Config testConf = configLoader.loadConfig( folder.getRoot(), configFile, log );

// then
final String EXPECTED_VALUE = "bar";
assertEquals( EXPECTED_VALUE, testConf.get( setting( "foo", STRING, NO_DEFAULT ) ) );
}

@Test
public void shouldUseSpecifiedHomeDir() throws Exception
{
// given
Optional<File> configFile = ConfigFileBuilder.builder( folder.getRoot() )
.build();

// when
Config testConf = configLoader.loadConfig( folder.getRoot(), configFile, log );

// then
assertEquals( folder.getRoot(), testConf.get( GraphDatabaseSettings.neo4j_home ) );
}

@Test
public void shouldAcceptDuplicateKeysWithSameValue() throws IOException
{
Expand All @@ -98,7 +112,7 @@ public void shouldAcceptDuplicateKeysWithSameValue() throws IOException
.build();

// when
Config testConf = configLoader.loadConfig( configFile, log );
Config testConf = configLoader.loadConfig( folder.getRoot(), configFile, log );

// then
assertNotNull( testConf );
Expand All @@ -123,7 +137,7 @@ public void shouldFindThirdPartyJaxRsPackages() throws IOException
}

// when
Config config = configLoader.loadConfig( Optional.of( file ), log );
Config config = configLoader.loadConfig( folder.getRoot(), Optional.of( file ), log );

// then
List<ThirdPartyJaxRsPackage> thirdpartyJaxRsPackages = config.get( ServerSettings.third_party_packages );
Expand All @@ -142,7 +156,7 @@ public void shouldRetainRegistrationOrderOfThirdPartyJaxRsPackages() throws IOEx
.build();

// when
Config config = configLoader.loadConfig( configFile, log );
Config config = configLoader.loadConfig( folder.getRoot(), configFile, log );

// then
List<ThirdPartyJaxRsPackage> thirdpartyJaxRsPackages = config.get( ServerSettings.third_party_packages );
Expand All @@ -161,7 +175,7 @@ public void shouldWorkFineWhenSpecifiedConfigFileDoesNotExist()
Optional<File> nonExistentConfigFile = Optional.of( new File( "/tmp/" + System.currentTimeMillis() ) );

// When
Config config = configLoader.loadConfig( nonExistentConfigFile, log );
Config config = configLoader.loadConfig( folder.getRoot(), nonExistentConfigFile, log );

// Then
assertNotNull( config );
Expand All @@ -174,10 +188,10 @@ public void shouldDefaultToCorrectValueForAuthStoreLocation() throws IOException
.builder( folder.getRoot() )
.withoutSetting( DatabaseManagementSystemSettings.data_directory )
.build();
Config config = configLoader.loadConfig( configFile, log );
Config config = configLoader.loadConfig( folder.getRoot(), configFile, log );

assertThat( config.get( GraphDatabaseSettings.auth_store ),
is( new File( "data/dbms/auth" ).getAbsoluteFile() ) );
is( new File( folder.getRoot(), "data/dbms/auth" ).getAbsoluteFile() ) );
}

@Test
Expand All @@ -186,10 +200,10 @@ public void shouldSetAValueForAuthStoreLocation() throws IOException
Optional<File> configFile = ConfigFileBuilder.builder( folder.getRoot() )
.withSetting( DatabaseManagementSystemSettings.data_directory, "the-data-dir" )
.build();
Config config = configLoader.loadConfig( configFile, log );
Config config = configLoader.loadConfig( folder.getRoot(), configFile, log );

assertThat( config.get( GraphDatabaseSettings.auth_store ),
is( new File( "the-data-dir/dbms/auth" ).getAbsoluteFile() ) );
is( new File( folder.getRoot(), "the-data-dir/dbms/auth" ).getAbsoluteFile() ) );
}

@Test
Expand All @@ -199,10 +213,10 @@ public void shouldNotOverwriteAuthStoreLocationIfProvided() throws IOException
.withSetting( DatabaseManagementSystemSettings.data_directory, "the-data-dir" )
.withSetting( GraphDatabaseSettings.auth_store, "foo/bar/auth" )
.build();
Config config = configLoader.loadConfig( configFile, log );
Config config = configLoader.loadConfig( folder.getRoot(), configFile, log );

assertThat( config.get( GraphDatabaseSettings.auth_store ),
is( new File( "foo/bar/auth" ).getAbsoluteFile() ) );
is( new File( folder.getRoot(), "foo/bar/auth" ).getAbsoluteFile() ) );
}


Expand Down
Expand Up @@ -61,6 +61,7 @@ public void shouldBeAbleToRestartServer() throws Exception
String dataDirectory2 = baseDir.directory( "data2" ).getAbsolutePath();

Config config = new ConfigLoader( CommunityBootstrapper.settingsClasses ).loadConfig(
baseDir.directory(),
EnterpriseServerBuilder
.server()
.withDefaultDatabaseTuning()
Expand Down
Expand Up @@ -25,7 +25,6 @@
import org.neo4j.dbms.DatabaseManagementSystemSettings;
import org.neo4j.desktop.Parameters;
import org.neo4j.desktop.config.Installation;
import org.neo4j.graphdb.factory.GraphDatabaseSettings;
import org.neo4j.helpers.HostnamePort;
import org.neo4j.kernel.configuration.Config;
import org.neo4j.logging.FormattedLog;
Expand Down Expand Up @@ -55,9 +54,9 @@ public DesktopConfigurator( Installation installation, Parameters parameters, Fi
public void refresh()
{
config = new ConfigLoader( CommunityBootstrapper.settingsClasses).loadConfig(
dbDir.getAbsoluteFile(),
Optional.of( getConfigurationsFile() ),
FormattedLog.toOutputStream( System.out ),
(settings) -> settings.put( GraphDatabaseSettings.neo4j_home.name(), dbDir.getAbsolutePath() ),
pair( DatabaseManagementSystemSettings.database_path.name(), dbDir.getAbsolutePath() ) );
}

Expand Down

0 comments on commit 31ed466

Please sign in to comment.