Pulsar Tester

Overview

The Unified Assurance Pulsar Tester microservice is part of the microservice suite. The Pulsar Tester was created to help operators/developers debug and test pulsar-related workflow pipelines.

Prerequisites

  1. A microservice cluster must be setup. Refer to Microservice Cluster Setup.

  2. Apache Pulsar must be installed. Refer to Apache Pulsar microservice.

  3. An application of user choice that can send REST requests (cURL, for example)

Setup

su - assure1
export NAMESPACE=a1-messaging
export WEBFQDN=<Primary Presentation Web FQDN> 
a1helm install pulsar-tester assure1/pulsar-tester -n $NAMESPACE --set global.imageRegistry=$WEBFQDN

Default Configuration

Name Value Possible Values Notes
LOG_LEVEL INFO FATAL, ERROR, WARN, INFO, DEBUG Logging level used by application.
SERVER_PORT 30001 int 30000-32767 Port used by the http server
SECURITY_LEVEL 2 int 0-2 Security level switch

Configurations can be changed by passing the values to the a1helm install prefixed with the configData parent key.

Examples of changing configuration when using the command line

Changing the HTTP port to 30002

a1helm install ... --set-string configData.SERVER_PORT=30002

Setting the log level to DEBUG

a1helm install ... --set-string configData.LOG_LEVEL=DEBUG

Security Levels

The application contains security levels for access. The below table will explain each of the options

Level Detail Access Example
0 No privacy and no authentication example.com:30001
1 Secure HTTP and no authentication https://example.com:9443/pulsar-tester/
2 Secure HTTP and JWT authentication https://example.com:9443/pulsar-tester/

JWT Authentication

When using security level set to 2, you will have to generate a JWT token using the bin/JWT utility and use it for every endpoint

Generating the token

bin/JWT -s assure1 -a pulsar-tester

Accessing help endpoint with generated token using cURL

curl -k -H "Authorization: Bearer <JWT_TOKEN>" https://example.com:9443/pulsar-tester/help

Available REST endpoints that interact with the pulsar bus

The below examples will be using cURL and security level set to 0 and will be using the assure1/event/sink topic.

Sending data to the topic

Using inline json

curl -X POST -d '{"message":"Hello World!"}' localhost:30001/assure1/event/sink

Using a file named test.json

curl -X POST -d@test.json localhost:30001/assure1/event/sink

Consume data from the topic

curl -X PUT localhost:30001/assure1/event/sink

Viewing data

To view data being sent to that particular topic, you will need to view pulsar-tester's application logs.

a1k logs -n $NAMESPACE sts/pulsar-tester -f | grep "assure1/event/sink"

Stop consuming data from the topic

curl -X DELETE localhost:30001/assure1/event/sink

Status Endpoint

The status endpoint will print all active subscriptions, how many messages each has received and when each subscription was made

curl -X GET localhost:30001/status

Help Endpoint

The help endpoint will print similar information for using the utility

curl -X GET localhost:30001/help