Skip to content

Producing and Consuming a Alphanumeric Key for recordType JSON

NirmalChandra edited this page Apr 21, 2024 · 3 revisions

EXAMPLE OF TEST SCENARIO

Release version > 1.3.42

See below : "key": "EMP-123",

{
    "scenarioName": "DEMO SCENARIO - JSON String alphanumeric string key",
    "steps": [
        {
            "name": "do_produce",
            "url": "kafka-topic:THE_TEST_TOPIC",
            "operation": "produce",
            "request": {
                "recordType": "JSON",
                "records": [
                    {
                        "key": "EMP-123",
                        "value": {
                            "appName": "App X"
                        }
                    }
                ]
            },
            "verify": {
                "status": "Ok"
            }
        },
        {
            "name": "do_consume",
            "url": "kafka-topic:THE_TEST_TOPIC",
            "operation": "consume",
            "request": {
                "consumerLocalConfigs": {
                    "recordType": "JSON",
                    "commitSync": true,
                    "showRecordsConsumed": true,
                    "maxNoOfRetryPollsOrTimeouts": 3
                }
            },
            "verify": {
                "records": [
                    {
                        "key": "${$.do_produce.request.records[0].key}",
                        "value": {
                            "appName": "App X"
                        }
                    }
                ]
            }
        }
    ]
}

OUTPUT

2024-04-21 15:19:33,235 [main] WARN  o.j.z.c.r.StepNotificationHandler - 
***Step PASSED - Scenario:DEMO SCENARIO - JSON String alphanumeric string key -> do_produce
--------- TEST-STEP-CORRELATION-ID: 60089fbe-c392-40b2-9f0d-03b67fb52de9 ---------
*requestTimeStamp:2024-04-21T15:19:33.105
step:do_produce
id:None
url:kafka-topic:THE_TEST_TOPIC
method:PRODUCE
request:
{
  "recordType" : "JSON",
  "records" : [ {
    "key" : "EMP-123",
    "value" : {
      "appName" : "App X"
    }
  } ]
} 
--------- TEST-STEP-CORRELATION-ID: 60089fbe-c392-40b2-9f0d-03b67fb52de9 ---------
Response:
{
  "status" : "Ok",
  "recordMetadata" : {
    "offset" : 0,
    "timestamp" : 1713712773230,
    "serializedKeySize" : 7,
    "serializedValueSize" : 19,
    "topicPartition" : {
      "hash" : 1415128977,
      "partition" : 0,
      "topic" : "THE_TEST_TOPIC"
    }
  }
}
*responseTimeStamp:2024-04-21T15:19:33.234 
*Response delay:129.0 milli-secs 
---------> Expected Response: <----------
{
  "status" : "Ok"
} 
 
-done-

2024-04-21 15:19:45,271 [main] WARN  o.j.z.c.r.StepNotificationHandler - 
***Step PASSED - Scenario:DEMO SCENARIO - JSON String alphanumeric string key -> do_consume
--------- TEST-STEP-CORRELATION-ID: 7aadad7e-25a1-4eac-8127-6abf87c1b132 ---------
*requestTimeStamp:2024-04-21T15:19:33.235
step:do_consume
id:None
url:kafka-topic:THE_TEST_TOPIC
method:CONSUME
request:
{
  "consumerLocalConfigs" : {
    "recordType" : "JSON",
    "commitSync" : true,
    "showRecordsConsumed" : true,
    "maxNoOfRetryPollsOrTimeouts" : 3
  }
} 
--------- TEST-STEP-CORRELATION-ID: 7aadad7e-25a1-4eac-8127-6abf87c1b132 ---------
Response:
{
  "records" : [ {
    "key" : "EMP-123",
    "value" : {
      "appName" : "App X"
    },
    "headers" : { }
  } ],
  "size" : 1
}
*responseTimeStamp:2024-04-21T15:19:45.270 
*Response delay:12035.0 milli-secs 
---------> Expected Response: <----------
{
  "records" : [ {
    "key" : "EMP-123",
    "value" : {
      "appName" : "App X"
    }
  } ]
} 
 
-done-

EXAMPLE OF TEST SCENARIO(OLD) - Earlier Release Version <= 1.3.42

See below : "key": "\"EMP-123\"",

{
    "scenarioName": "DEMO SCENARIO",
    "steps": [
        {
            "name": "do_produce",
            "url": "kafka-topic:THE_TOPIC2",
            "operation": "produce",
            "request": {
                "recordType": "JSON",
                "records": [
                    {
                        "key": "\"EMP-123\"",
                        "value": {
                            "appName": "App X"
                        }
                    }
                ]
            },
            "verify": {
                "status": "Ok"
            }
        },
        {
            "name": "do_consume",
            "url": "kafka-topic:THE_TOPIC2",
            "operation": "consume",
            "request": {
                "consumerLocalConfigs": {
                    "recordType": "JSON",
                    "commitSync": true,
                    "showRecordsConsumed": true,
                    "maxNoOfRetryPollsOrTimeouts": 3
                }
            },
            "verify": {
                "size": 1,
                "records": [
                    {
//                        "key": "${$.do_produce.request.records[0].key}", //<----- DO NOT ASSERT THE KEY(See below on how to assert the key.)
                        "value": {
                            "appName": "App X"
                        }
                    }
                ]
            }
        }
    ]
}

OUTPUT

2024-04-13 11:07:34,856 [main] WARN  o.j.z.c.r.ZeroCodeMultiStepsScenarioRunnerImpl - 
-----------------------------------------------------------------------------------

Scenario:
+++++++++

DEMO SCENARIO 

-----------------------------------------------------------------------------------

***Step PASSED - Scenario:DEMO SCENARIO -> do_produce
--------- TEST-STEP-CORRELATION-ID: 4e2cb1fb-a4d9-448a-b2fc-58820e56028a ---------
*requestTimeStamp:2024-04-13T11:07:34.882
step:do_produce
id:None
url:kafka-topic:THE_TOPIC2
method:PRODUCE
request:
{
  "recordType" : "JSON",
  "records" : [ {
    "key" : "\"EMP-123\"",
    "value" : {
      "appName" : "App X"
    }
  } ]
} 
--------- TEST-STEP-CORRELATION-ID: 4e2cb1fb-a4d9-448a-b2fc-58820e56028a ---------
Response:
{
  "status" : "Ok",
  "recordMetadata" : {
    "offset" : 0,
    "timestamp" : 1713002855330,
    "serializedKeySize" : 9,
    "serializedValueSize" : 19,
    "topicPartition" : {
      "hash" : 273628274,
      "partition" : 0,
      "topic" : "THE_TOPIC2"
    }
  }
}
*responseTimeStamp:2024-04-13T11:07:35.364 
*Response delay:482.0 milli-secs 
---------> Expected Response: <----------
{
  "status" : "Ok"
} 
 
-done-


***Step PASSED - Scenario:DEMO SCENARIO -> do_consume
--------- TEST-STEP-CORRELATION-ID: d503b36d-0cc8-4cf0-9497-57a3d7540315 ---------
*requestTimeStamp:2024-04-13T11:07:35.367
step:do_consume
id:None
url:kafka-topic:THE_TOPIC2
method:CONSUME
request:
{
  "consumerLocalConfigs" : {
    "recordType" : "JSON",
    "commitSync" : true,
    "showRecordsConsumed" : true,
    "maxNoOfRetryPollsOrTimeouts" : 3
  }
} 
--------- TEST-STEP-CORRELATION-ID: d503b36d-0cc8-4cf0-9497-57a3d7540315 ---------
Response:
{
  "records" : [ {
    "key" : "EMP-123",
    "value" : {
      "appName" : "App X"
    },
    "headers" : { }
  } ],
  "size" : 1
}
*responseTimeStamp:2024-04-13T11:07:47.724 
*Response delay:12357.0 milli-secs 
---------> Expected Response: <----------
{
  "size" : 1,
  "records" : [ {
    "value" : {
      "appName" : "App X"
    }
  } ]
} 
 
-done-

Blogs

Clone this wiki locally