package voldemort.store.readonly; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.Map; import org.junit.Test; import voldemort.TestUtils; import com.google.common.collect.Maps; public class ReadOnlyStorageMetadataTest { @Test public void testToJson() throws IOException { Map<String, Object> someProps = Maps.newHashMap(); // Test empty ReadOnlyStorageMetadata metadata = new ReadOnlyStorageMetadata(someProps); String jsonString = metadata.toJsonString(); ReadOnlyStorageMetadata metadata2 = new ReadOnlyStorageMetadata(jsonString); assertEquals(metadata, metadata2); // Test with null metadata.add(null, null); someProps.put(null, null); metadata2 = new ReadOnlyStorageMetadata(someProps); assertEquals(metadata, metadata2); // Test with some values metadata.add("key1", "value1"); metadata.add("key2", "value2"); metadata.add("key3", "value3"); metadata.remove("key2"); someProps.put("key3", "value3"); someProps.put("key1", "value1"); metadata2 = new ReadOnlyStorageMetadata(someProps); ReadOnlyStorageMetadata metadata3 = new ReadOnlyStorageMetadata(metadata.toJsonString()); assertEquals(metadata, metadata2); assertEquals(metadata, metadata3); // Test not equal someProps.put("key1", "value123"); metadata2 = new ReadOnlyStorageMetadata(someProps); assertFalse(metadata.equals(metadata2)); // Write to file File tempFile = new File(TestUtils.createTempDir(), TestUtils.randomLetters(5)); Writer output = new BufferedWriter(new FileWriter(tempFile)); output.write(metadata3.toJsonString()); output.close(); ReadOnlyStorageMetadata metadata4 = new ReadOnlyStorageMetadata(tempFile); assertEquals(metadata4, metadata3); } }