Class SchemaRegistryMock


  • public class SchemaRegistryMock
    extends java.lang.Object

    The 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:

    
     class 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);
         }
     }
    To retrieve the url of the schema registry for a Kafka Streams config, please use getUrl()
    • Constructor Summary

      Constructors 
      Constructor Description
      SchemaRegistryMock()
      Create a new SchemaRegistryMock with default SchemaProviders.
      SchemaRegistryMock​(java.util.List<io.confluent.kafka.schemaregistry.SchemaProvider> schemaProviders)
      Create a new SchemaRegistryMock from SchemaProviders.
    • 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.SchemaRegistryClient getSchemaRegistryClient()
      Create CachedSchemaRegistryClient for this mock using no additional config.
      io.confluent.kafka.schemaregistry.client.SchemaRegistryClient getSchemaRegistryClient​(java.util.Map<java.lang.String,​?> config)
      Create CachedSchemaRegistryClient for this mock.
      java.lang.String getUrl()  
      int registerKeySchema​(java.lang.String topic, io.confluent.kafka.schemaregistry.ParsedSchema schema)
      Register a key ParsedSchema for the topic using TopicNameStrategy
      int registerKeySchema​(java.lang.String topic, org.apache.avro.Schema schema)
      Register a key Schema for the topic
      int registerValueSchema​(java.lang.String topic, io.confluent.kafka.schemaregistry.ParsedSchema schema)
      Register a value ParsedSchema for the topic using TopicNameStrategy
      int registerValueSchema​(java.lang.String topic, org.apache.avro.Schema schema)
      Register a value Schema for the topic
      void start()
      Start the SchemaRegistryMock.
      void stop()
      Stop the SchemaRegistryMock.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • SchemaRegistryMock

        public SchemaRegistryMock​(java.util.List<io.confluent.kafka.schemaregistry.SchemaProvider> schemaProviders)
        Create a new SchemaRegistryMock from SchemaProviders.
        Parameters:
        schemaProviders - List of SchemaProvider. If null, AvroSchemaProvider will be used.
      • SchemaRegistryMock

        public SchemaRegistryMock()
        Create a new SchemaRegistryMock with default SchemaProviders.
        See Also:
        SchemaRegistryMock(List)
    • Method Detail

      • start

        public void start()
        Start the SchemaRegistryMock. Subsequent calls will have no effect.
      • stop

        public void stop()
        Stop the SchemaRegistryMock.
      • registerKeySchema

        public int registerKeySchema​(java.lang.String topic,
                                     org.apache.avro.Schema schema)
        Register a key Schema for the topic
        Parameters:
        topic - topic to register key schema for
        schema - 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 value Schema for the topic
        Parameters:
        topic - topic to register value schema for
        schema - 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 key ParsedSchema for the topic using TopicNameStrategy
        Parameters:
        topic - topic to register key schema for
        schema - schema to be registered
        Returns:
        Schema id
      • registerValueSchema

        public int registerValueSchema​(java.lang.String topic,
                                       io.confluent.kafka.schemaregistry.ParsedSchema schema)
        Register a value ParsedSchema for the topic using TopicNameStrategy
        Parameters:
        topic - topic to register value schema for
        schema - 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. Uses TopicNameStrategy.
        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. Uses TopicNameStrategy.
        Parameters:
        subject - subject to delete value schemas for
        Returns:
        Ids of deleted schemas
      • getSchemaRegistryClient

        public io.confluent.kafka.schemaregistry.client.SchemaRegistryClient getSchemaRegistryClient()
        Create CachedSchemaRegistryClient for 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)
        Create CachedSchemaRegistryClient for this mock.
        Parameters:
        config - config passed to CachedSchemaRegistryClient(List, int, List, Map)
        Returns:
        SchemaRegistryClient