==========================
 Bucket Notification Tests
==========================

You will need to use the sample configuration file named ``bntests.conf.SAMPLE``
that has been provided at ``/path/to/ceph/src/test/rgw/bucket_notification/``. You can also copy this file to the directory where you are
running the tests and modify it if needed. This file can be used to run the bucket notification tests on a Ceph cluster started
with vstart.
For the tests covering Kafka and RabbitMQ security, the RGW will need to accept use/password without TLS connection between the client and the RGW.
So, the cluster will have to be started with the following ``rgw_allow_notification_secrets_in_cleartext`` parameter set to ``true``.
For example::

  MON=1 OSD=1 MDS=0 MGR=1 RGW=1 ../src/vstart.sh -n -d -o "rgw_allow_notification_secrets_in_cleartext=true"

===========
Kafka Tests
===========

You also need to install Kafka which can be downloaded from: https://kafka.apache.org/downloads

To test Kafka security, you should first run the ``kafka-security.sh`` script inside the Kafka directory.

Then edit the Kafka server properties file (``/path/to/kafka/config/server.properties``)
to have the following lines::

  listeners=PLAINTEXT://localhost:9092,SSL://localhost:9093,SASL_SSL://localhost:9094
  ssl.keystore.location=/home/ylifshit/kafka-3.3.1-src/server.keystore.jks 
  ssl.keystore.password=mypassword 
  ssl.key.password=mypassword 
  ssl.truststore.location=/home/ylifshit/kafka-3.3.1-src/server.truststore.jks 
  ssl.truststore.password=mypassword 
  sasl.enabled.mechanisms=PLAIN
  listener.name.sasl_ssl.plain.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
     username="alice" \
     password="alice-secret" \
     user_alice="alice-secret";

After following the above steps, start the Zookeeper and Kafka services.
For starting Zookeeper service run::

        bin/zookeeper-server-start.sh config/zookeeper.properties

and then start the Kafka service::

        bin/kafka-server-start.sh config/server.properties

If you want to run Zookeeper and Kafka services in the background add ``-daemon`` at the end of the command like::

        bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

and::

        bin/kafka-server-start.sh -daemon config/server.properties

After running vstart, Zookeeper, and Kafka services you're ready to run the Kafka tests::

        BNTESTS_CONF=bntests.conf python -m nose -s /path/to/ceph/src/test/rgw/bucket_notification/test_bn.py -v -a 'kafka_test'

To run the Kafka security test, you also need to provide the test with the location of the Kafka directory::

        KAFKA_DIR=/path/to/kafkaBNTESTS_CONF=bntests.conf python -m nose -s /path/to/ceph/src/test/rgw/bucket_notification/test_bn.py -v -a 'kafka_ssl_test'

==============
RabbitMQ Tests
==============

You need to install RabbitMQ in the following way::

        sudo dnf install rabbitmq-server

Then you need to run the following command::

        sudo chkconfig rabbitmq-server on

Finally, to start the RabbitMQ server you need to run the following command::

        sudo /sbin/service rabbitmq-server start

To confirm that the RabbitMQ server is running you can run the following command to check the status of the server::

        sudo /sbin/service rabbitmq-server status

After running vstart and RabbitMQ server you're ready to run the AMQP tests::

        BNTESTS_CONF=bntests.conf python -m nose -s /path/to/ceph/src/test/rgw/bucket_notification/test_bn.py -v -a 'amqp_test'

After running the tests you need to stop the vstart cluster (``/path/to/ceph/src/stop.sh``) and the RabbitMQ server by running the following command::

        sudo /sbin/service rabbitmq-server stop

To run the RabbitMQ SSL security tests use the following::

        BNTESTS_CONF=bntests.conf python -m nose -s /path/to/ceph/src/test/rgw/bucket_notification/test_bn.py -v -a 'amqp_ssl_test'

During these tests, the test script will restart the RabbitMQ server with the correct security configuration (``sudo`` privileges will be needed).

