View Javadoc

1   /**
2    * Copyright (c) 2002-2011 "Neo Technology,"
3    * Network Engine for Objects in Lund AB [http://neotechnology.com]
4    *
5    * This file is part of Neo4j.
6    *
7    * Neo4j is free software: you can redistribute it and/or modify
8    * it under the terms of the GNU General Public License as published by
9    * the Free Software Foundation, either version 3 of the License, or
10   * (at your option) any later version.
11   *
12   * This program is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   * GNU General Public License for more details.
16   *
17   * You should have received a copy of the GNU General Public License
18   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
19   */
20  package org.neo4j.server.configuration;
21  
22  import static org.hamcrest.Matchers.containsString;
23  import static org.junit.Assert.assertEquals;
24  import static org.junit.Assert.assertNotNull;
25  import static org.junit.Assert.assertThat;
26  
27  import java.io.File;
28  import java.io.IOException;
29  
30  import org.junit.Test;
31  import org.neo4j.server.logging.InMemoryAppender;
32  
33  
34  public class PropertyFileConfiguratorTest {
35      @Test
36      public void whenDatabaseTuningFilePresentInDefaultLocationShouldLoadItEvenIfNotSpecified() throws IOException {
37          File emptyPropertyFile = PropertyFileBuilder.builder().build();
38          DatabaseTuningPropertyFileBuilder.builder().inDirectory(emptyPropertyFile.getParentFile()).build();
39          
40          PropertyFileConfigurator configurator = new PropertyFileConfigurator(emptyPropertyFile);
41          
42          assertNotNull(configurator.getDatabaseTuningProperties().get("neostore.nodestore.db.mapped_memory"));
43          assertEquals("25M", configurator.getDatabaseTuningProperties().get("neostore.nodestore.db.mapped_memory"));
44      }
45      
46      @Test
47      public void whenDatabaseTuningFilePresentInDefaultLocationShouldNotLoadIfAnotherSpecified() throws IOException {
48          int unlikelyDefaultMemoryMappedValue = 8351;
49          File databaseTuningPropertyFileWeWantToUse = DatabaseTuningPropertyFileBuilder.builder().mappedMemory(unlikelyDefaultMemoryMappedValue).build();
50          File emptyPropertyFile = PropertyFileBuilder.builder().withDbTuningPropertyFile(databaseTuningPropertyFileWeWantToUse).build();
51          // The tuning properties we want to ignore, in the same dir as the neo server properties
52          DatabaseTuningPropertyFileBuilder.builder().inDirectory(emptyPropertyFile.getParentFile()).build();
53          
54          PropertyFileConfigurator configurator = new PropertyFileConfigurator(emptyPropertyFile);
55          
56          assertNotNull(configurator.getDatabaseTuningProperties().get("neostore.nodestore.db.mapped_memory"));
57          assertEquals(String.valueOf(unlikelyDefaultMemoryMappedValue) + "M", configurator.getDatabaseTuningProperties().get("neostore.nodestore.db.mapped_memory"));
58      }
59      
60      @Test
61      public void shouldLogInfoWhenDefaultingToTuningPropertiesFileInTheSameDirectoryAsTheNeoServerPropertiesFile() throws IOException {
62          File emptyPropertyFile = PropertyFileBuilder.builder().build();
63          File tuningPropertiesFile = DatabaseTuningPropertyFileBuilder.builder().inDirectory(emptyPropertyFile.getParentFile()).build();
64  
65          InMemoryAppender appender = new InMemoryAppender(PropertyFileConfigurator.log);
66          PropertyFileConfigurator configurator = new PropertyFileConfigurator(emptyPropertyFile);
67          
68          assertThat(appender.toString(), containsString(String.format("INFO - No database tuning file explicitly set, defaulting to [%s]",tuningPropertiesFile.getAbsolutePath())));
69      }
70  }