- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 439
Kafka records with headers
        authorjapps edited this page Sep 6, 2020 
        ·
        3 revisions
      
    This page explains how to send Kafka headers through PRODUCE operation for automated Kafka testing
Below are the examples of sample records with headers:
{
                        "key": 101,
                        "value": {
                            "name": "Foo",
                            "addressLine1": "99 Bar Street"
                        },
                        "headers": {
                            "my-company-header1": "my-value1",
                            "correlationId": "e.g.d85e88d2-9393-40a8-9c56-ec29004c45c9"
                        }
}{
                        "key": 101,
                        "value": "Something",
                        "headers": {
                            "myKey": "MyValue",
                            "correlationId": "e.g.d85e88d2-9899-40a8-9c56-ec29004c45c9"
                        }
}A sample PRODUCE and CONSUME scenario would look like below:
{
    "scenarioName": "Produce a message with headers to a Kafka topic",
    "steps": [
        {
            "name": "produce_to_kafka",
            "url": "kafka-topic:demo-json-headers-topic",
            "operation": "PRODUCE",
            "request": {
                "recordType": "JSON",
                "records": [
                    {
                        "key": 101,
                        "value": {
                            "name": "Jey"
                        },
                        "headers": {
                            "myKey": "something",
                            "correlationId": "e.g.d85e88d2-3247-40a8-9c56-ec29004c45c9"
                        }
                    }
                ]
            },
            "assertions": {
                "status": "Ok",
                "recordMetadata": "$NOT.NULL"
            }
        },
        {
            "name": "consume_from_kafka",
            "url": "kafka-topic:demo-json-headers-topic",
            "operation": "unload",
            "request": {
                "consumerLocalConfigs": {
                    "recordType": "JSON",
                    "commitSync": true,
                    "maxNoOfRetryPollsOrTimeouts": 3
                }
            },
            "assertions": {
                "size": 1,
                "records": [
                    {
                        "key": 101,
                        "value": {
                            "name": "Jey"
                        },
                        "headers": {
                            "myKey": "something",
                            "correlationId": "e.g.d85e88d2-3247-40a8-9c56-ec29004c45c9"
                        }
                    }
                ]
            }
        }
    ]
}
or if you are using YAML, you can do it following way:
---
scenarioName: Produce a message with headers to a Kafka topic
steps:
- name: produce_to_kafka
  url: kafka-topic:demo-json-headers-topic
  operation: PRODUCE
  request:
    recordType: JSON
    records:
    - key: 101
      value:
        name: Jey
      headers:
        myKey: something
        correlationId: e.g.d85e88d2-3247-40a8-9c56-ec29004c45c9
  assertions:
    status: Ok
    recordMetadata: "$NOT.NULL"
- name: consume_from_kafka
  url: kafka-topic:demo-json-headers-topic
  operation: unload
  request:
    consumerLocalConfigs:
      recordType: JSON
      commitSync: true
      maxNoOfRetryPollsOrTimeouts: 3
  assertions:
    size: 1
    records:
    - key: 101
      value:
        name: Jey
      headers:
        myKey: something
        correlationId: e.g.d85e88d2-3247-40a8-9c56-ec29004c45c9
Please visit the example module repo for working examples to clone and try at home.
Visit the Zerocode Documentation Site for all things.
- 
User's Guide 
- 
Matchers 
- 
Zerocode Value Tokens 
- 
YAML DSL 
- 
Http Testing 
- 
Kafka Testing - Introduction
- Produce, consume proto message
- Produce raw message
- Consume raw message
- Produce JSON message
- Consume JSON message
- Produce and consume XML message
- Kafka - consume the latest message or n latest messages
- Produce avro message
- Consume avro message
- KSQL in action
- Produce multiple records
- Produce from file
- Produce to a partition
- Produce and consume records with headers
- Produce n assert partition ack
- Comsume and dump to file
- commitSync vs commitAsync
- Overriding config inside a test
- Chosing String or Int or Avro Serializer
- Chosing String or Int or Avro Deserializer
- Attaching timestamp during load
- Default timestamp provided by Kafka
- Consume and assert avro schema metadata
- Error handling - produce via avro schema
- Sorting Kafka records consumed
 
- 
DB Testing 
- 
Kotlin Testing 
- 
Performance Testing - Load and Stress - Performance Testing - via awesome JUnit runners
- Load Vs Stress generation on target application
- Run a single test or a scenario in parallel
- Run multiple test scenarios in parallel - Production load simulation
- Dynamically change the payload for every request
- Analytics - Useful report(s) or statistics
 
- 
Parameterized Testing 
- 
Docker 
- 
More+ 
- 
Extensions 
- 
JUnit5 Jupiter Test 
- 
Questions And Answers(FAQ) - What is Zerocode testing?
- SSL http https connections supported?
- How to assert array size Greater-Than Lesser-Than etc?
- How to invoke POST api?
- How to assert custom headers of the response?
- How to pass custom security token into the request header?
- When to use JUnit Suite runner and when Zerocode Package runner?
- How to execute DB SQL and assert?
- How to handle Http response other than utf-8 e.g. utf-16 or utf-32 ?
- Random Number Generator Placeholders Usages and Limits
- Automation tests for Zerocode lib itself
- Picking a leaf value from the array matching JSON Path
- Array assertions made easy, incl. size and element finder
 
- 
Read Our Blogs
- Top 16 Open Source API Testing Tools For REST & SOAP Services - joecolantonio (Lists popular tools - Globally)
- OAuth2 Test Automation - DZone 2min Read
- Zero defect APIs - Build Pipe Line - Medium 10 min Read
- Develop ZeroDefect API's with ZeroCode! - Extreme Portal ( A must read for all developers and test engineers) 10min Read
- Performance testing using JUnit and maven - Codeproject 10 min Read
- REST API or SOAP End Point Testing - Codeproject 10min Read
- DZone- MuleSoft API Testing With Zerocode Test Framework - DZone 5min Read
- Testing need not be harder or slower, it should be easier and faster - DZone 5 min Read
- Kotlin Integration Testing simplified via Zerocode - Extreme portal 10 min Read
- and More...