package lsr.common; import static org.junit.Assert.assertEquals; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Properties; import org.junit.Test; public class ConfigurationTest { @Test public void shouldInitializeProcesses() { List<PID> processes = new ArrayList<PID>(); processes.add(new PID(0, "localhost", 2000, 3000)); processes.add(new PID(1, "localhost", 2001, 3001)); processes.add(new PID(2, "localhost", 2002, 3002)); Configuration configuration = new Configuration(processes); assertEquals(3, configuration.getN()); assertEquals(processes, configuration.getProcesses()); assertEquals(processes.get(0), configuration.getProcess(0)); } @Test public void shouldReturnDefaultInt() { Configuration configuration = new Configuration((List<PID>) null); assertEquals(10, configuration.getIntProperty("test", 10)); assertEquals(15, configuration.getIntProperty("test", 15)); } @Test public void shouldReturnDefaultBoolean() { Configuration configuration = new Configuration((List<PID>) null); assertEquals(true, configuration.getBooleanProperty("test", true)); assertEquals(false, configuration.getBooleanProperty("test", false)); } @Test public void shouldReturnDefaultString() { Configuration configuration = new Configuration((List<PID>) null); assertEquals("my", configuration.getProperty("test", "my")); } @Test public void shouldBePrintable() { List<PID> processes = new ArrayList<PID>(); processes.add(new PID(0, "localhost", 2000, 3000)); processes.add(new PID(1, "localhost", 2001, 3001)); processes.add(new PID(2, "localhost", 2002, 3002)); Configuration configuration = new Configuration(processes); configuration.toString(); } @Test public void shouldLoadFromFile() throws FileNotFoundException, IOException { Properties properties = new Properties(); properties.put("process.0", "localhost:2000:3000"); properties.put("process.1", "localhost:2001:3001"); properties.put("process.2", "localhost:2002:3002"); properties.put("integer", "5"); properties.put("boolean", "true"); properties.put("string", "hello world"); File tempFile = File.createTempFile("paxos", ""); FileOutputStream outputStream = new FileOutputStream(tempFile); properties.store(outputStream, ""); outputStream.close(); Configuration configuration = new Configuration(tempFile.getAbsolutePath()); assertEquals(3, configuration.getN()); assertEquals("localhost", configuration.getProcess(0).getHostname()); assertEquals(2000, configuration.getProcess(0).getReplicaPort()); assertEquals(3000, configuration.getProcess(0).getClientPort()); assertEquals(5, configuration.getIntProperty("integer", 3)); assertEquals(true, configuration.getBooleanProperty("boolean", false)); assertEquals("hello world", configuration.getProperty("string", "default")); } }