#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

description: |
  A tool for performance testing a Pulsar broker.
commands:
- name: consume
  description: Run a consumer
  argument: topic_name
  options:
  - flags: --auth_params
    description: Authentication parameters in the form of `key1:val1,key2:val2`
  - flags: --auth_plugin
    description: Authentication plugin class name
  - flags: -b, --batch-time-window
    description: Batch messages in a window of the specified number of milliseconds
    default: 1
  - flags: -z, --compression
    description: Compress messages' payload. Possible values are `NONE`, `LZ4`, or `ZLIB`.
  - flags: --conf-file
    description: Configuration file
  - flags: -c, --max-connections
    description: Max number of TCP connections to a single broker
    default: 0
  - flags: -o, --max-outstanding
    description: Max number of outstanding messages
    default: 1000
  - flags: -m, --num-messages
    description: Number of messages to publish in total. If set to 0, it will keep publishing.
    default: 0
  - flags: -n, --num-producers
    description: The number of producers (per topic)
    default: 1
  - flags: -t, --num-topic
    description: The number of topics
    default: 1
  - flags: -f, --payload-file
    description: Use payload from a file instead of an empty buffer
  - flags: -r, --rate
    description: Publish rate msg/s across topics
    default: 100
  - flags: -u, --service-url
    description: Pulsar service URL
    default: 'http://localhost:8080/'
  - flags: -s, --size
    description: Message size (in bytes)
    default: 1024
  - flags: -i, --stats-interval-seconds
    description: Statistics interval seconds. If 0, statistics will be disabled.
    default: 0
  - flags: -time, --test-duration
    description: Test duration in secs. If set to 0, it will keep publishing.
    default: 0
- name: produce
  description: Run a producer
  argument: topic_name
  options:
  - flags: --auth_params
    description: Authentication parameters in the form of `key1:val1,key2:val2`
  - flags: --auth_plugin
    description: Authentication plugin class name
  - flags: -b, --batch-time-window
    description: Batch messages in a window of the specified number of milliseconds
    default: 1
  - flags: -z, --compression
    description: Compress messages' payload. Possible values are `NONE`, `LZ4`, or `ZLIB`.
  - flags:
    - --conf-file
    description: Configuration file
  - flags: -c, --max-connections
    description: Max number of TCP connections to a single broker
    default: 0
  - flags: -o, --max-outstanding
    description: Max number of outstanding messages
    default: 1000
  - flags: -m, --num-messages
    description: Number of messages to publish in total. If set to 0, it will keep publishing.
    default: 0
  - flags: -n, --num-producers
    description: The number of producers (per topic)
    default: 1
  - flags: -t, --num-topic
    description: The number of topics
    default: 1
  - flags: -f, --payload-file
    description: Use payload from a file instead of an empty buffer
  - flags: -r, --rate
    description: Publish rate msg/s across topics
    default: 100
  - flags: -u, --service-url
    description: Pulsar service URL
    default: 'http://localhost:8080/'
  - flags: -s, --size
    description: Message size (in bytes)
    default: 1024
  - flags: -i, --stats-interval-seconds
    description: Statistics interval seconds. If 0, statistics will be disabled.
    default: 0
  - flags: -time, --test-duration
    description: Test duration in secs. If set to 0, it will keep publishing.
    default: 0
- name: monitor-brokers
  description: Continuously receive broker data and/or load reports
  argument: --connect-string arg
  options:
  - flags: --connect-string
    description: A connection string for one or more ZooKeeper servers
- name: simulation-client
  description: Run a simulation server acting as a Pulsar client. Uses the client configuration specified in `conf/client.conf`.
  argument: --port arg --service-url arg
  options:
  - flags: --port
    description: Port to listen on for controller
  - flags: --service-url
    description: Pulsar Service URL
- name: simulation-controller
  description: Run a simulation controller to give commands to servers
  argument: --client-port arg --clients arg --cluster arg
  options:
  - flags: --client-port
    description: The port that the clients are listening on
    default: 0
  - flags: --clients
    description: Comma-separated list of client hostnames
  - flags: --cluster
    description: The cluster to test on
env_vars:
- name: PULSAR_LOG_CONF
  description: Log4j configuration file
  default: conf/log4j2.yaml
- name: PULSAR_CLIENT_CONF
  description: Configuration file for the client
  default: conf/client.conf
- name: PULSAR_EXTRA_OPTS
  description: Extra options to be passed to the JVM
- name: PULSAR_EXTRA_CLASSPATH
  description: Extra paths for Pulsar's classpath
