@Test public void testCreateSchema() throws IOException { SchemaManager manager = SchemaManager.create(getConfiguration(), testDirectory); manager.writeSchema(DatasetTestUtilities.USER_SCHEMA); Schema schema = manager.getNewestSchema(); Assert.assertEquals(DatasetTestUtilities.USER_SCHEMA, schema); }
@Test public void testUpdateSchema() throws IOException { SchemaManager manager = SchemaManager.create(getConfiguration(), testDirectory); manager.writeSchema(DatasetTestUtilities.USER_SCHEMA); Schema schema = manager.getNewestSchema(); Assert.assertEquals(DatasetTestUtilities.USER_SCHEMA, schema); // Create an updated schema and ensure it can be written. Schema updatedSchema = SchemaBuilder.record(schema.getName()) .fields() .requiredString("username") .requiredString("email") .optionalBoolean("extra_field").endRecord(); manager.writeSchema(updatedSchema); Assert.assertEquals(updatedSchema, manager.getNewestSchema()); }
@Test public void testManyUpdates() throws IOException { SchemaManager manager = SchemaManager.create(getConfiguration(), testDirectory); // Create an updated schema and ensure it can be written. for (int i = 0; i < 20; ++i) { SchemaBuilder.FieldAssembler<Schema> fields = SchemaBuilder .record("test").fields(); for (int j = 0; j <= i; ++j) { fields.optionalString("field_" + j); } Schema schema = fields.endRecord(); manager.writeSchema(schema); // Ensure we always see the newest schema on load. Assert.assertEquals(schema, manager.getNewestSchema()); } // Make sure all of the updates are in place. Map<Integer, Schema> schemas = manager.getSchemas(); Assert.assertEquals(20, schemas.size()); }