Mirror of Apache Kafka
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
Ashish Singh b62f8ea43b KAFKA-2531: Add Ducktape based tests for KafkaLog4jAppender 9 years ago
..
kafkatest KAFKA-2531: Add Ducktape based tests for KafkaLog4jAppender 9 years ago
.gitignore KAFKA-2276; KIP-25 initial patch 9 years ago
MANIFEST.in MINOR: kafkatest add manifest 9 years ago
README.md MINOR: Added scripts to automate Vagrant setup for system tests 9 years ago
bootstrap-test-env.sh MINOR: Added scripts to automate Vagrant setup for system tests 9 years ago
setup.py KAFKA-2554: change 0.8.3 to 0.9.0 in ApiVersion and other files 9 years ago

README.md

System Integration & Performance Testing

This directory contains Kafka system integration and performance tests. ducktape is used to run the tests.
(ducktape is a distributed testing framework which provides test runner, result reporter and utilities to pull up and tear down services.)

Local Quickstart

This quickstart will help you run the Kafka system tests on your local machine. For a tutorial on how to setup and run the Kafka system tests, see https://cwiki.apache.org/confluence/display/KAFKA/tutorial+-+set+up+and+run+Kafka+system+tests+with+ducktape

  • Install Virtual Box from https://www.virtualbox.org/ (run $ vboxmanage --version to check if it's installed).

  • Install Vagrant >= 1.6.4 from http://www.vagrantup.com/ (run vagrant --version to check if it's installed).

  • Install system test dependiences, including ducktape, a command-line tool and library for testing distributed systems.

      $ python tests/setup.py develop
    
  • Run the bootstrap script to set up Vagrant for testing

      $ tests/bootstrap-test-env.sh
    
  • Bring up the test cluster

      $ vagrant up
    
  • Build the desired branch of Kafka

      $ git checkout $BRANCH
      $ gradle  # (only if necessary)
      $ ./gradlew jar
    
  • Run the system tests using ducktape:

      $ cd tests
      $ ducktape kafkatest/tests
    

EC2 Quickstart

This quickstart will help you run the Kafka system tests on EC2. In this setup, all logic is run on EC2 and none on your local machine.

There are a lot of steps here, but the basic goals are to create one distinguished EC2 instance that will be our "test driver", and to set up the security groups and iam role so that the test driver can create, destroy, and run ssh commands on any number of "workers".

As a convention, we'll use "kafkatest" in most names, but you can use whatever name you want.

Preparation

In these steps, we will create an IAM role which has permission to create and destroy EC2 instances, set up a keypair used for ssh access to the test driver and worker machines, and create a security group to allow the test driver and workers to all communicate via TCP.

  • Create an IAM role. We'll give this role the ability to launch or kill additional EC2 machines.
  • Create role "kafkatest-master"
  • Role type: Amazon EC2
  • Attach policy: AmazonEC2FullAccess (this will allow our test-driver to create and destroy EC2 instances)
  • If you haven't already, set up a keypair to use for SSH access. For the purpose of this quickstart, let's say the keypair name is kafkatest, and you've saved the private key in kafktest.pem

  • Next, create a security group called "kafkatest".

  • After creating the group, inbound rules: allow SSH on port 22 from anywhere; also, allow access on all ports (0-65535) from other machines in the kafkatest group.

Create the Test Driver

  • Launch a new test driver machine
  • OS: Ubuntu server is recommended
  • Instance type: t2.medium is easily enough since this machine is just a driver
  • Instance details: Most defaults are fine.
  • IAM role -> kafkatest-master
  • Tagging the instance with a useful name is recommended.
  • Security group -> 'kafkatest'
  • Once the machine is started, upload the SSH key to your test driver:

      $ scp -i /path/to/kafkatest.pem \
          /path/to/kafkatest.pem ubuntu@public.hostname.amazonaws.com:kafkatest.pem
    
  • Grab the public hostname/IP (available for example by navigating to your EC2 dashboard and viewing running instances) of your test driver and SSH into it:

      $ ssh -i /path/to/kafkatest.pem ubuntu@public.hostname.amazonaws.com
    

Set Up the Test Driver

The following steps assume you have ssh'd into the test driver machine.

  • Start by making sure you're up to date, and install git and ducktape:

      $ sudo apt-get update && sudo apt-get -y upgrade && sudo apt-get install -y git
      $ pip install ducktape
    
  • Get Kafka:

      $ git clone https://git-wip-us.apache.org/repos/asf/kafka.git kafka
    
  • Install some dependencies:

      $ cd kafka
      $ kafka/vagrant/aws/aws-init.sh
      $ . ~/.bashrc
    
  • An example Vagrantfile.local has been created by aws-init.sh which looks something like:

      # Vagrantfile.local
      ec2_instance_type = "..." # Pick something appropriate for your
                                # test. Note that the default m3.medium has
                                # a small disk.
      num_zookeepers = 0
      num_kafka = 0
      num_workers = 9
      ec2_keypair_name = 'kafkatest'
      ec2_keypair_file = '/home/ubuntu/kafkatest.pem'
      ec2_security_groups = ['kafkatest']
      ec2_region = 'us-west-2'
      ec2_ami = "ami-29ebb519"
    
  • Start up the instances (note we have found bringing up machines in parallel can cause errors on aws):

      $ vagrant up --provider=aws --no-provision --no-parallel && vagrant provision
    
  • Now you should be able to run tests:

      $ cd kafka/tests
      $ ducktape kafkatest/tests
    
  • To halt your workers without destroying persistent state, run vagrant halt. Run vagrant destroy -f to destroy all traces of your workers.