use of com.hortonworks.registries.schemaregistry.SchemaMetadata in project registry by hortonworks.
the class AvroSchemaRegistryClientTest method _testAvroSerDesPrimitives.
private void _testAvroSerDesPrimitives(Byte protocolId) {
Map<String, Object> config = Maps.newHashMap();
config.putAll(SCHEMA_REGISTRY_CLIENT_CONF);
config.put(SERDES_PROTOCOL_VERSION, protocolId);
AvroSnapshotSerializer avroSnapshotSerializer = new AvroSnapshotSerializer();
avroSnapshotSerializer.init(config);
AvroSnapshotDeserializer avroSnapshotDeserializer = new AvroSnapshotDeserializer();
avroSnapshotDeserializer.init(config);
Object[] objects = AvroSchemaRegistryClientUtil.generatePrimitivePayloads();
for (Object obj : objects) {
String name = obj != null ? obj.getClass().getName() : Void.TYPE.getName();
SchemaMetadata schemaMetadata = createSchemaMetadata(name, SchemaCompatibility.BOTH);
byte[] serializedData = avroSnapshotSerializer.serialize(obj, schemaMetadata);
Object deserializedObj = avroSnapshotDeserializer.deserialize(new ByteArrayInputStream(serializedData), null);
if (obj instanceof byte[]) {
Assert.assertArrayEquals((byte[]) obj, (byte[]) deserializedObj);
} else if (deserializedObj instanceof Utf8) {
Assert.assertEquals(obj, deserializedObj.toString());
} else {
Assert.assertEquals(obj, deserializedObj);
}
}
}
use of com.hortonworks.registries.schemaregistry.SchemaMetadata in project registry by hortonworks.
the class AvroSchemaRegistryClientTest method doTestSchemaVersionLifeCycleStates.
private void doTestSchemaVersionLifeCycleStates(SchemaValidationLevel validationLevel) throws InvalidSchemaException, IncompatibleSchemaException, SchemaNotFoundException, IOException, SchemaLifecycleException, SchemaBranchNotFoundException {
SchemaMetadata schemaMetadata = new SchemaMetadata.Builder(TEST_NAME_RULE.getMethodName() + "-schema").type(AvroSchemaProvider.TYPE).schemaGroup("group").compatibility(SchemaCompatibility.BOTH).validationLevel(validationLevel).build();
String schemaName = schemaMetadata.getName();
Long id = SCHEMA_REGISTRY_CLIENT.registerSchemaMetadata(schemaMetadata);
SchemaIdVersion schemaIdVersion_1 = SCHEMA_REGISTRY_CLIENT.addSchemaVersion(schemaName, new SchemaVersion(AvroSchemaRegistryClientUtil.getSchema("/schema-1.avsc"), "Initial version of the schema"));
SchemaIdVersion schemaIdVersion_2 = SCHEMA_REGISTRY_CLIENT.addSchemaVersion(schemaName, new SchemaVersion(AvroSchemaRegistryClientUtil.getSchema("/schema-2.avsc"), "Second version of the schema"));
// disable version 2
SCHEMA_REGISTRY_CLIENT.disableSchemaVersion(schemaIdVersion_2.getSchemaVersionId());
Assert.assertEquals(SchemaVersionLifecycleStates.DISABLED.getId(), SCHEMA_REGISTRY_CLIENT.getSchemaVersionInfo(schemaIdVersion_2).getStateId());
// add version 3
SchemaIdVersion schemaIdVersion_3 = SCHEMA_REGISTRY_CLIENT.addSchemaVersion(schemaName, new SchemaVersion(AvroSchemaRegistryClientUtil.getSchema("/schema-3.avsc"), "Third version of the schema, removes name field"));
// enable version 2
SCHEMA_REGISTRY_CLIENT.enableSchemaVersion(schemaIdVersion_2.getSchemaVersionId());
Assert.assertEquals(SchemaVersionLifecycleStates.ENABLED.getId(), SCHEMA_REGISTRY_CLIENT.getSchemaVersionInfo(schemaIdVersion_2).getStateId());
// disable version 3
SCHEMA_REGISTRY_CLIENT.disableSchemaVersion(schemaIdVersion_3.getSchemaVersionId());
Assert.assertEquals(SchemaVersionLifecycleStates.DISABLED.getId(), SCHEMA_REGISTRY_CLIENT.getSchemaVersionInfo(schemaIdVersion_3).getStateId());
// enable version 3
SCHEMA_REGISTRY_CLIENT.enableSchemaVersion(schemaIdVersion_3.getSchemaVersionId());
Assert.assertEquals(SchemaVersionLifecycleStates.ENABLED.getId(), SCHEMA_REGISTRY_CLIENT.getSchemaVersionInfo(schemaIdVersion_3).getStateId());
}
use of com.hortonworks.registries.schemaregistry.SchemaMetadata in project registry by hortonworks.
the class AvroSchemaRegistryClientTest method doTestSchemaVersionEnableState.
public void doTestSchemaVersionEnableState(String schemaName) throws Exception {
String schema = AvroSchemaRegistryClientUtil.getSchema("/device.avsc");
String incompatSchema = AvroSchemaRegistryClientUtil.getSchema("/device-compat.avsc");
SchemaMetadata schemaMetadata = createSchemaMetadata(schemaName, SchemaCompatibility.BACKWARD);
// registering a new schema
SchemaIdVersion schemaIdVersion_1 = SCHEMA_REGISTRY_CLIENT.addSchemaVersion(schemaMetadata, new SchemaVersion(schema, "Initial version of the schema"));
// adding a new version of the schema
SchemaVersion incompatSchemaInfo = new SchemaVersion(incompatSchema, "second version");
SchemaIdVersion schemaIdVersion_2 = SCHEMA_REGISTRY_CLIENT.addSchemaVersion(schemaMetadata, incompatSchemaInfo);
Long schemaVersionId_2 = schemaIdVersion_2.getSchemaVersionId();
SCHEMA_REGISTRY_CLIENT.disableSchemaVersion(schemaVersionId_2);
SchemaVersionInfo schemaVersionInfo = SCHEMA_REGISTRY_CLIENT.getSchemaVersionInfo(schemaIdVersion_2);
System.out.println("disable :: schemaVersionInfo.getStateId() = " + schemaVersionInfo.getStateId());
Assert.assertEquals(SchemaVersionLifecycleStates.DISABLED.getId(), schemaVersionInfo.getStateId());
SCHEMA_REGISTRY_CLIENT.enableSchemaVersion(schemaVersionId_2);
schemaVersionInfo = SCHEMA_REGISTRY_CLIENT.getSchemaVersionInfo(schemaIdVersion_2);
System.out.println("enable :: schemaVersionInfo.getStateId() = " + schemaVersionInfo.getStateId());
Assert.assertEquals(SchemaVersionLifecycleStates.ENABLED.getId(), schemaVersionInfo.getStateId());
SCHEMA_REGISTRY_CLIENT.disableSchemaVersion(schemaVersionId_2);
schemaVersionInfo = SCHEMA_REGISTRY_CLIENT.getSchemaVersionInfo(schemaIdVersion_2);
System.out.println("disable :: schemaVersionInfo.getStateId() = " + schemaVersionInfo.getStateId());
Assert.assertEquals(SchemaVersionLifecycleStates.DISABLED.getId(), schemaVersionInfo.getStateId());
SCHEMA_REGISTRY_CLIENT.archiveSchemaVersion(schemaVersionId_2);
schemaVersionInfo = SCHEMA_REGISTRY_CLIENT.getSchemaVersionInfo(schemaIdVersion_2);
System.out.println("archive :: schemaVersionInfo.getStateId() = " + schemaVersionInfo.getStateId());
Assert.assertEquals(SchemaVersionLifecycleStates.ARCHIVED.getId(), schemaVersionInfo.getStateId());
}
use of com.hortonworks.registries.schemaregistry.SchemaMetadata in project registry by hortonworks.
the class AvroSchemaRegistryClientTest method addAndDeleteSchemaVersion.
private SchemaVersionKey addAndDeleteSchemaVersion(String schemaName) throws InvalidSchemaException, IncompatibleSchemaException, SchemaNotFoundException, IOException, SchemaBranchNotFoundException, SchemaLifecycleException {
SchemaMetadata schemaMetadata = createSchemaMetadata(schemaName, SchemaCompatibility.BOTH);
SchemaIdVersion schemaIdVersion = SCHEMA_REGISTRY_CLIENT.addSchemaVersion(schemaMetadata, new SchemaVersion(AvroSchemaRegistryClientUtil.getSchema("/device.avsc"), "Initial version of the schema"));
SchemaVersionKey schemaVersionKey = new SchemaVersionKey(schemaMetadata.getName(), schemaIdVersion.getVersion());
SCHEMA_REGISTRY_CLIENT.deleteSchemaVersion(schemaVersionKey);
return schemaVersionKey;
}
use of com.hortonworks.registries.schemaregistry.SchemaMetadata in project registry by hortonworks.
the class AvroSchemaRegistryClientTest method testIncompatibleSchemas.
@Test(expected = IncompatibleSchemaException.class)
public void testIncompatibleSchemas() throws Exception {
String schema = AvroSchemaRegistryClientUtil.getSchema("/device.avsc");
String incompatSchema = AvroSchemaRegistryClientUtil.getSchema("/device-incompat.avsc");
SchemaMetadata schemaMetadata = createSchemaMetadata(TEST_NAME_RULE.getMethodName(), SchemaCompatibility.BACKWARD);
// registering a new schema
SCHEMA_REGISTRY_CLIENT.addSchemaVersion(schemaMetadata, new SchemaVersion(schema, "Initial version of the schema"));
// adding a new version of the schema
SchemaVersion incompatSchemaInfo = new SchemaVersion(incompatSchema, "second version");
SCHEMA_REGISTRY_CLIENT.addSchemaVersion(schemaMetadata, incompatSchemaInfo);
}
Aggregations