httperfpy

December 16, 2014 ยท View on GitHub

========= httperfpy

A python port of httperfrb http://github.com/jmervine/httperfrb.

Built and tested using:

    $ python --version
    Python 2.7.3

    $ uname -s -r -m
    Linux 3.2.0-29-generic x86_64

Installing 'httperf'

Requires httperf, of course...

Mac

sudo port install httperf

Debian / Ubuntu

sudo apt-get install httperf

Redhat / CentOS

sudo yum install httperf

My 'httperf'

** This is required for proper verbose handling. **

See: http://mervine.net/httperf-0-9-1-with-individual-connection-times.

Installation / Setup

Perferred Method

    $ sudo pip install httperfpy

See: http://pypi.python.org/pypi/httperfpy/

From Source

Simply clone code and add checkout location to your PYTHONPATH.

Running tests...

  1. sudo apt-get install python-unit
  2. git clone https://github.com/jmervine/httperfpy.git
  3. cd httperfpy
  4. ./scripts/unit

Usage

    #!/usr/bin/env python
    from httperfpy import Httperf

    perf = Httperf(server="www.example.com",
                    port=8080,
                    num_conns=100)
    # replace dashes ("-") with underscores ("_") in httperf options

    perf.parser = True

    results = perf.run()

    print results["connection_time_avg"] + " is avg"
    print results["connection_time_max"] + " is max"

You can use Httperf.display_options to print a list of all available options.

Passing variables and key-values to httperf

    #!/usr/bin/env python
    from httperfpy import Httperf

    # arguments, key-value arguments
    perf = Httperf('hog', 'ssl', path='/path/to/httperf',
            server='www.example.com'...)

    # or only key-value arguments
    perf = Httperf(hog=True, ssl=True, path='/path/to/httperf',
            server='www.example.com'...)
    ...

Stand-alone parser...

    #!/usr/bin/env python
    from httperfpy import HttperfParser

    results = HttperfParser.parse(httperf_result_string)
    print results["connection_time_avg"] + " is avg"
    print results["connection_time_max"] + " is max"

Parser Keys:

- command
- max_connect_burst_length
- total_connections
- total_requests
- total_replies
- total_test_duration
- connection_rate_per_sec
- connection_rate_ms_conn
- connection_time_min
- connection_time_avg
- connection_time_max
- connection_time_median
- connection_time_stddev
- connection_time_connect
- connection_length
- request_rate_per_sec
- request_rate_ms_request
- request_size
- reply_rate_min
- reply_rate_avg
- reply_rate_max
- reply_rate_stddev
- reply_rate_samples
- reply_time_response
- reply_time_transfer
- reply_size_header
- reply_size_content
- reply_size_footer
- reply_size_total
- reply_status_1xx
- reply_status_2xx
- reply_status_3xx
- reply_status_4xx
- reply_status_5xx
- cpu_time_user_sec
- cpu_time_system_sec
- cpu_time_user_pct
- cpu_time_system_pct
- cpu_time_total_pct
- net_io_kb_sec
- net_io_bps
- errors_total
- errors_client_timeout
- errors_socket_timeout
- errors_conn_refused
- errors_conn_reset
- errors_fd_unavail
- errors_addr_unavail
- errors_ftab_full
- errors_other