use of com.hortonworks.registries.schemaregistry.webservice.ConfluentSchemaRegistryCompatibleResource.Schema in project registry by hortonworks.
the class ConfluentRegistryCompatibleResourceTest method testConfluentApis.
@Test
public void testConfluentApis() throws Exception {
List<String> schemas = Arrays.stream(new String[] { "/device.avsc", "/device-compat.avsc", "/device-incompat.avsc" }).map(x -> {
try {
return fetchSchema(x);
} catch (IOException e) {
throw new RuntimeException(e);
}
}).collect(Collectors.toList());
ObjectMapper objectMapper = new ObjectMapper();
List<String> subjects = new ArrayList<>();
for (String schemaText : schemas) {
String subjectName = UUID.randomUUID().toString();
subjects.add(subjectName);
// check post schema version
Long schemaId = objectMapper.readValue(postSubjectSchema(subjectName, schemaText).readEntity(String.class), Id.class).getId();
// check get version api
Schema schemaVersionEntry = getVersion(subjectName, "latest");
Assert.assertEquals(subjectName, schemaVersionEntry.getSubject());
Assert.assertEquals(schemaId.intValue(), schemaVersionEntry.getId().intValue());
org.apache.avro.Schema recvdSchema = new org.apache.avro.Schema.Parser().parse(schemaVersionEntry.getSchema());
org.apache.avro.Schema regdSchema = new org.apache.avro.Schema.Parser().parse(schemaText);
Assert.assertEquals(regdSchema, recvdSchema);
}
// check all registered subjects
List<String> recvdSubjects = getAllSubjects();
Assert.assertEquals(new HashSet<>(subjects), new HashSet<>(recvdSubjects));
}
use of com.hortonworks.registries.schemaregistry.webservice.ConfluentSchemaRegistryCompatibleResource.Schema in project registry by hortonworks.
the class ConfluentRegistryCompatibleResourceTest method testConfluentSerDes.
@Test
public void testConfluentSerDes() throws Exception {
org.apache.avro.Schema schema = new org.apache.avro.Schema.Parser().parse(GENERIC_TEST_RECORD_SCHEMA);
GenericRecord record = new GenericRecordBuilder(schema).set("field1", "some value").set("field2", "some other value").build();
Map<String, Object> config = new HashMap<>();
config.put(AbstractKafkaAvroSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG, rootTarget.getUri().toString());
KafkaAvroSerializer kafkaAvroSerializer = new KafkaAvroSerializer();
kafkaAvroSerializer.configure(config, false);
byte[] bytes = kafkaAvroSerializer.serialize("topic", record);
KafkaAvroDeserializer kafkaAvroDeserializer = new KafkaAvroDeserializer();
kafkaAvroDeserializer.configure(config, false);
GenericRecord result = (GenericRecord) kafkaAvroDeserializer.deserialize("topic", bytes);
LOG.info(result.toString());
}
use of com.hortonworks.registries.schemaregistry.webservice.ConfluentSchemaRegistryCompatibleResource.Schema in project registry by hortonworks.
the class ConfluentRegistryCompatibleResourceTest method testSubjectWithVersionIdApi.
@Test
public void testSubjectWithVersionIdApi() throws Exception {
String subject = testName();
String response = postSubjectSchema(subject, fetchSchema("/device.avsc")).readEntity(String.class);
ObjectMapper objectMapper = new ObjectMapper();
long id = objectMapper.readValue(response, Id.class).getId();
Assert.assertTrue(id > 0);
String validResponse = rootTarget.path(String.format("/subjects/%s/versions/%s", subject, id)).request(MediaType.APPLICATION_JSON_TYPE).get(String.class);
Schema schemaVersionEntry = new ObjectMapper().readValue(validResponse, Schema.class);
Assert.assertEquals(subject, schemaVersionEntry.getSubject());
Assert.assertEquals(id, schemaVersionEntry.getVersion().intValue());
// invalid subject, valid version
String invalidSubject = subject + new Random().nextInt();
Response invalidSubjectResponse = rootTarget.path(String.format("/subjects/%s/versions/%s", invalidSubject, id)).request(MediaType.APPLICATION_JSON_TYPE).get();
Assert.assertEquals(subjectNotFoundError().getEntity(), objectMapper.readValue(invalidSubjectResponse.readEntity(String.class), ErrorMessage.class));
// valid subject, invalid versions
String[] invalidVersions = { // non existing version
id + 10 + "", // invalid version string
"invalid-version", // invalid version number can not be <= 0
-1 + "", // invalid version number can not be <= 0
0 + "", // invalid version number, can not be > Integer.MAX_VALUE
((long) Integer.MAX_VALUE) + 10L + "" };
for (String invalidVersion : invalidVersions) {
Response invalidVersionResponse = rootTarget.path(String.format("/subjects/%s/versions/%s", subject, invalidVersion)).request(MediaType.APPLICATION_JSON_TYPE).get();
Assert.assertEquals(versionNotFoundError().getEntity(), objectMapper.readValue(invalidVersionResponse.readEntity(String.class), ErrorMessage.class));
}
}
Aggregations