X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Ftools%2Fwrk%2Fwrk_utils.sh;fp=resources%2Ftools%2Fwrk%2Fwrk_utils.sh;h=0000000000000000000000000000000000000000;hp=16af61416bbf56851457fc9122b7103324b12324;hb=80adeefab9fc1871675688881498304ddc780828;hpb=f9b18c597f8bd9419ce3ecdd36de351f7b05c59a diff --git a/resources/tools/wrk/wrk_utils.sh b/resources/tools/wrk/wrk_utils.sh deleted file mode 100755 index 16af61416b..0000000000 --- a/resources/tools/wrk/wrk_utils.sh +++ /dev/null @@ -1,246 +0,0 @@ -#!/bin/bash -# Copyright (c) 2019 Cisco and/or its affiliates. -# Licensed 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. - -set -x - -function wrk_utils.installed { - - # Check if the WRK utility is installed. Fail if not installed. - - # Returns: - # - 0 - If command is installed. - # - 1 - If command is not installed. - - set -exuo pipefail - - command -v wrk -} - - -function wrk_utils.traffic_1_url_1_core { - # Send traffic - # - to n URL (NIC) - # - using n instances of wrk, each on separate core. - - # The CPU used for wrk - cpu=${1} - # Total number of threads to use by one instance of wrk to send traffic. - threads=${2} - # Total number of HTTP connections to keep open with each thread handling - # N = connections / threads. - connections=${3} - # Duration of the test. - duration=${4} - # HTTP header to add to request. - header=${5} - # Record a timeout if a response is not received within this amount of time. - timeout=${6} - # Path to LuaJIT script. - script=${7} - # Print detailed latency statistics. - latency=${8} - # URL to send the traffic to. - url=${9} - - if [ "${timeout}" != "None" ]; then - timeout="--timeout ${timeout}" - else - timeout="" - fi - - if [ "${latency}" = "True" ]; then - latency="--latency" - else - latency="" - fi - - if [ "${script}" != "None" ]; then - script="--script '${script}'" - else - script="" - fi - - if [ "${header}" != "None" ]; then - header="${header}" - else - header="''" - fi - - taskset --cpu-list ${cpu} \ - wrk --threads ${threads} \ - --connections ${connections} \ - --duration ${duration} \ - --header "${header}" \ - ${timeout} \ - ${script} \ - ${latency} \ - ${url} -} - -function wrk_utils.traffic_n_urls_n_cores { - # Send traffic - # - to n URL (NIC) - # - using n instances of wrk, each on separate core. - - # The first CPU used for wrk - first_cpu=${1} - # Total number of threads to use by one instance of wrk to send traffic. - threads=${2} - # Total number of HTTP connections to keep open with each thread handling - # N = connections / threads. - connections=${3} - # Duration of the test. - duration=${4} - # HTTP header to add to request. - header=${5} - # Record a timeout if a response is not received within this amount of time. - timeout=${6} - # Path to LuaJIT script. - script=${7} - # Print detailed latency statistics. - latency=${8} - # URL to send the traffic to. - urls=${9} - - if [ "${timeout}" != "None" ]; then - timeout="--timeout ${timeout}" - else - timeout="" - fi - - if [ "${latency}" = "True" ]; then - latency="--latency" - else - latency="" - fi - - if [ "${script}" != "None" ]; then - script="--script '${script}'" - else - script="" - fi - - if [ "${header}" != "None" ]; then - header="${header}" - else - header="''" - fi - - urls=$(echo ${urls} | tr ";" "\n") - cpu=${first_cpu} - for url in ${urls}; do - taskset --cpu-list ${cpu} \ - wrk --threads ${threads} \ - --connections ${connections} \ - --duration ${duration} \ - --header "${header}" \ - ${timeout} \ - ${script} \ - ${latency} \ - ${url} & - cpu=$((cpu+1)) - done - - sleep ${duration} - sleep 2 -} - -function wrk_utils.traffic_n_urls_m_cores { - # Send traffic - # - to n URL (NIC) - # - using m instances of wrk, each on separate core. - - # The first CPU used for wrk - first_cpu=${1} - # The last CPU used for wrk - cpus_per_url=${2} - # Total number of threads to use by one instance of wrk to send traffic. - threads=${3} - # Total number of HTTP connections to keep open with each thread handling - # N = connections / threads. - connections=${4} - # Duration of the test. - duration=${5} - # HTTP header to add to request. - header=${6} - # Record a timeout if a response is not received within this amount of time. - timeout=${7} - # Path to LuaJIT script. - script=${8} - # Print detailed latency statistics. - latency=${9} - # URL to send the traffic to. - urls=${10} - - if [ "${timeout}" != "None" ]; then - timeout="--timeout ${timeout}" - else - timeout="" - fi - - if [ "${latency}" = "True" ]; then - latency="--latency" - else - latency="" - fi - - if [ "${script}" != "None" ]; then - script="--script '${script}'" - else - script="" - fi - - if [ "${header}" != "None" ]; then - header="${header}" - else - header="''" - fi - - urls=$(echo ${urls} | tr ";" "\n") - - cpu=${first_cpu} - for i in `seq 1 ${cpus_per_url}`; do - for url in ${urls}; do - taskset --cpu-list ${cpu} \ - wrk --threads ${threads} \ - --connections ${connections} \ - --duration ${duration} \ - --header "${header}" \ - ${timeout} \ - ${script} \ - ${latency} \ - ${url} & - cpu=$((cpu+1)) - done - done - - sleep ${duration} - sleep 2 -} - -args=("$@") -case ${1} in - installed) - wrk_utils.installed - ;; - traffic_1_url_1_core) - wrk_utils.traffic_1_url_1_core "${args[@]:1}" - ;; - traffic_n_urls_n_cores) - wrk_utils.traffic_n_urls_n_cores "${args[@]:1}" - ;; - traffic_n_urls_m_cores) - wrk_utils.traffic_n_urls_m_cores "${args[@]:1}" - ;; -esac