Package com.bakdata.schemaregistrymock
Class SchemaRegistryMock
- java.lang.Object
-
- com.bakdata.schemaregistrymock.SchemaRegistryMock
-
public class SchemaRegistryMock extends java.lang.ObjectThe schema registry mock implements a few basic HTTP endpoints that are used by the Avro serdes.
In particular,- you can register a schema
- retrieve a schema by id.
- list and get schema versions of a subject
If you use the TestTopology of the fluent Kafka Streams test, you don't have to interact with this class at all.
Without the test framework, you can use the mock as follows:
To retrieve the url of the schema registry for a Kafka Streams config, please useclass SchemaRegistryMockTest { private final SchemaRegistryMock schemaRegistry = new SchemaRegistryMock(); @BeforeEach void setup() { schemaRegistry.start(); } @AfterEach void teardown() { schemaRegistry.stop(); } @Test void shouldRegisterKeySchema() throws IOException, RestClientException { final Schema keySchema = this.createSchema("key_schema"); final int id = this.schemaRegistry.registerKeySchema("test-topic", keySchema); final Schema retrievedSchema = this.schemaRegistry.getSchemaRegistryClient().getById(id); assertThat(retrievedSchema).isEqualTo(keySchema); } }getUrl()
-
-
Constructor Summary
Constructors Constructor Description SchemaRegistryMock()Create a newSchemaRegistryMockwith defaultSchemaProviders.SchemaRegistryMock(java.util.List<io.confluent.kafka.schemaregistry.SchemaProvider> schemaProviders)Create a newSchemaRegistryMockfromSchemaProviders.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.List<java.lang.Integer>deleteKeySchema(java.lang.String subject)Delete all key schemas associated with the given subject.java.util.List<java.lang.Integer>deleteValueSchema(java.lang.String subject)Delete all value schemas associated with the given subject.io.confluent.kafka.schemaregistry.client.SchemaRegistryClientgetSchemaRegistryClient()CreateCachedSchemaRegistryClientfor this mock using no additional config.io.confluent.kafka.schemaregistry.client.SchemaRegistryClientgetSchemaRegistryClient(java.util.Map<java.lang.String,?> config)CreateCachedSchemaRegistryClientfor this mock.java.lang.StringgetUrl()intregisterKeySchema(java.lang.String topic, io.confluent.kafka.schemaregistry.ParsedSchema schema)Register a keyParsedSchemafor the topic usingTopicNameStrategyintregisterKeySchema(java.lang.String topic, org.apache.avro.Schema schema)Register a keySchemafor the topicintregisterValueSchema(java.lang.String topic, io.confluent.kafka.schemaregistry.ParsedSchema schema)Register a valueParsedSchemafor the topic usingTopicNameStrategyintregisterValueSchema(java.lang.String topic, org.apache.avro.Schema schema)Register a valueSchemafor the topicvoidstart()Start theSchemaRegistryMock.voidstop()Stop theSchemaRegistryMock.
-
-
-
Constructor Detail
-
SchemaRegistryMock
public SchemaRegistryMock(java.util.List<io.confluent.kafka.schemaregistry.SchemaProvider> schemaProviders)
Create a newSchemaRegistryMockfromSchemaProviders.- Parameters:
schemaProviders- List ofSchemaProvider. If null,AvroSchemaProviderwill be used.
-
SchemaRegistryMock
public SchemaRegistryMock()
Create a newSchemaRegistryMockwith defaultSchemaProviders.- See Also:
SchemaRegistryMock(List)
-
-
Method Detail
-
start
public void start()
Start theSchemaRegistryMock. Subsequent calls will have no effect.
-
stop
public void stop()
Stop theSchemaRegistryMock.
-
registerKeySchema
public int registerKeySchema(java.lang.String topic, org.apache.avro.Schema schema)Register a keySchemafor the topic- Parameters:
topic- topic to register key schema forschema- schema to be registered- Returns:
- Schema id
- See Also:
registerKeySchema(String, ParsedSchema)
-
registerValueSchema
public int registerValueSchema(java.lang.String topic, org.apache.avro.Schema schema)Register a valueSchemafor the topic- Parameters:
topic- topic to register value schema forschema- schema to be registered- Returns:
- Schema id
- See Also:
registerValueSchema(String, ParsedSchema)
-
registerKeySchema
public int registerKeySchema(java.lang.String topic, io.confluent.kafka.schemaregistry.ParsedSchema schema)Register a keyParsedSchemafor the topic usingTopicNameStrategy- Parameters:
topic- topic to register key schema forschema- schema to be registered- Returns:
- Schema id
-
registerValueSchema
public int registerValueSchema(java.lang.String topic, io.confluent.kafka.schemaregistry.ParsedSchema schema)Register a valueParsedSchemafor the topic usingTopicNameStrategy- Parameters:
topic- topic to register value schema forschema- schema to be registered- Returns:
- Schema id
-
deleteKeySchema
public java.util.List<java.lang.Integer> deleteKeySchema(java.lang.String subject)
Delete all key schemas associated with the given subject. UsesTopicNameStrategy.- Parameters:
subject- subject to delete key schemas for- Returns:
- Ids of deleted schemas
-
deleteValueSchema
public java.util.List<java.lang.Integer> deleteValueSchema(java.lang.String subject)
Delete all value schemas associated with the given subject. UsesTopicNameStrategy.- Parameters:
subject- subject to delete value schemas for- Returns:
- Ids of deleted schemas
-
getSchemaRegistryClient
public io.confluent.kafka.schemaregistry.client.SchemaRegistryClient getSchemaRegistryClient()
CreateCachedSchemaRegistryClientfor this mock using no additional config.- Returns:
SchemaRegistryClient- See Also:
getSchemaRegistryClient(Map)
-
getUrl
public java.lang.String getUrl()
-
getSchemaRegistryClient
public io.confluent.kafka.schemaregistry.client.SchemaRegistryClient getSchemaRegistryClient(java.util.Map<java.lang.String,?> config)
CreateCachedSchemaRegistryClientfor this mock.- Parameters:
config- config passed toCachedSchemaRegistryClient(List, int, List, Map)- Returns:
SchemaRegistryClient
-
-