From df070fe2c3312218af862e0cbfdbcc57f7b09306 Mon Sep 17 00:00:00 2001 From: Joseph Kong Date: Thu, 21 Jan 2016 15:33:35 -0800 Subject: [PATCH 1/3] Style changes. My OCD couldn't handle the multiple styles in this file. --- src/conn.c | 86 +++++++++++++++++++++++++++--------------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/src/conn.c b/src/conn.c index ad0091e..938d1fc 100755 --- a/src/conn.c +++ b/src/conn.c @@ -1,35 +1,35 @@ /* - httperf -- a tool for measuring web server performance - Copyright 2000-2007 Hewlett-Packard Company - - This file is part of httperf, a web server performance measurment - tool. - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - In addition, as a special exception, the copyright holders give - permission to link the code of this work with the OpenSSL project's - "OpenSSL" library (or with modified versions of it that use the same - license as the "OpenSSL" library), and distribute linked combinations - including the two. You must obey the GNU General Public License in - all respects for all of the code used other than "OpenSSL". If you - modify this file, you may extend this exception to your version of the - file, but you are not obligated to do so. If you do not wish to do - so, delete this exception statement from your version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA -*/ + * httperf -- a tool for measuring web server performance + * Copyright 2000-2007 Hewlett-Packard Company + * + * This file is part of httperf, a web server performance measurment + * tool. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * In addition, as a special exception, the copyright holders give + * permission to link the code of this work with the OpenSSL project's + * "OpenSSL" library (or with modified versions of it that use the same + * license as the "OpenSSL" library), and distribute linked combinations + * including the two. You must obey the GNU General Public License in + * all respects for all of the code used other than "OpenSSL". If you + * modify this file, you may extend this exception to your version of the + * file, but you are not obligated to do so. If you do not wish to do + * so, delete this exception statement from your version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + * 02110-1301, USA + */ #include "config.h" @@ -56,7 +56,7 @@ static char *srvbase, *srvend, *srvcurrent; void -conn_add_servers (void) +conn_add_servers(void) { struct stat st; int fd, len; @@ -73,7 +73,7 @@ conn_add_servers (void) if (srvbase == (char *)-1) panic("%s: can't mmap the file: %s\n", prog_name, strerror(errno)); - close (fd); + close(fd); srvend = srvbase + st.st_size; for (srvcurrent = srvbase; srvcurrent < srvend; srvcurrent += len + 1) { @@ -84,7 +84,7 @@ conn_add_servers (void) } void -conn_init (Conn *conn) +conn_init(Conn *conn) { int len; @@ -112,7 +112,7 @@ conn_init (Conn *conn) } if (param.ssl_cipher_list) { - /* set order of ciphers */ + /* set order of ciphers */ int ssl_err = SSL_set_cipher_list(conn->ssl, param.ssl_cipher_list); if (DBG > 2) @@ -125,16 +125,16 @@ conn_init (Conn *conn) } void -conn_deinit (Conn *conn) +conn_deinit(Conn *conn) { - assert (conn->sd < 0 && conn->state != S_FREE); - assert (!conn->sendq); - assert (!conn->recvq); - assert (!conn->watchdog); - conn->state = S_FREE; + assert(conn->sd < 0 && conn->state != S_FREE); + assert(!conn->sendq); + assert(!conn->recvq); + assert(!conn->watchdog); + conn->state = S_FREE; #ifdef HAVE_SSL - if (param.use_ssl) - SSL_free (conn->ssl); + if (param.use_ssl) + SSL_free(conn->ssl); #endif } From 83fef49f590ac2a1703e722b6675e1f896eec245 Mon Sep 17 00:00:00 2001 From: Joseph Kong Date: Fri, 22 Jan 2016 12:36:40 -0800 Subject: [PATCH 2/3] Change --server to --servers. Prior to this commit --server took a list of servers, so making it plural makes sense. --- src/conn.c | 6 +++--- src/core.c | 2 +- src/httperf.c | 16 ++++++++-------- src/httperf.h | 4 +++- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/conn.c b/src/conn.c index 938d1fc..a24c1fc 100755 --- a/src/conn.c +++ b/src/conn.c @@ -61,13 +61,13 @@ conn_add_servers(void) struct stat st; int fd, len; - fd = open(param.server, O_RDONLY, 0); + fd = open(param.servers, O_RDONLY, 0); if (fd == -1) - panic("%s: can't open %s\n", prog_name, param.server); + panic("%s: can't open %s\n", prog_name, param.servers); fstat(fd, &st); if (st.st_size == 0) - panic("%s: file %s is empty\n", prog_name, param.server); + panic("%s: file %s is empty\n", prog_name, param.servers); srvbase = (char *)mmap(0, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0); if (srvbase == (char *)-1) diff --git a/src/core.c b/src/core.c index 0993bb9..06b96ec 100755 --- a/src/core.c +++ b/src/core.c @@ -963,7 +963,7 @@ core_init(void) printf("%s: maximum number of open descriptors = %ld\n", prog_name, rlimit.rlim_max); - if (param.server) + if (param.servers) conn_add_servers(); if (param.runtime) { arg.l = 0; diff --git a/src/httperf.c b/src/httperf.c index 60d609e..7f455d8 100755 --- a/src/httperf.c +++ b/src/httperf.c @@ -136,7 +136,7 @@ static struct option longopts[] = { {"retry-on-failure", no_argument, ¶m.retry_on_failure, 1}, {"runtime", required_argument, (int *) ¶m.runtime, 0}, {"send-buffer", required_argument, (int *) ¶m.send_buffer_size, 0}, - {"server", required_argument, (int *) ¶m.server, 0}, + {"servers", required_argument, (int *) ¶m.servers, 0}, {"uri", required_argument, (int *) ¶m.uri, 0}, {"session-cookies", no_argument, (int *) ¶m.session_cookies, 1}, #ifdef HAVE_SSL @@ -177,7 +177,7 @@ usage(void) "\t[--print-reply [header|body]] [--print-request [header|body]]\n" "\t[--rate X] [--recv-buffer N] [--retry-on-failure] " "[--send-buffer N]\n" - "\t<--server file> [--port N] [--uri S] [--myaddr S]\n" + "\t<--servers file> [--port N] [--uri S] [--myaddr S]\n" #ifdef HAVE_SSL "\t[--ssl] [--ssl-ciphers L] [--ssl-no-reuse]\n" "\t[--ssl-certificate file] [--ssl-key file]\n" @@ -635,8 +635,8 @@ main(int argc, char **argv) prog_name, optarg); exit(1); } - } else if (flag == ¶m.server) - param.server = optarg; + } else if (flag == ¶m.servers) + param.servers = optarg; #ifdef HAVE_SSL else if (flag == ¶m.ssl_cipher_list) param.ssl_cipher_list = optarg; @@ -974,9 +974,9 @@ main(int argc, char **argv) } } - if (param.server == NULL) { + if (param.servers == NULL) { fprintf(stderr, - "%s: must specify --server\n", + "%s: must specify --servers\n", prog_name); exit(-1); } @@ -1131,8 +1131,8 @@ main(int argc, char **argv) if (param.runtime > 0) printf(" --runtime=%g", param.runtime); printf(" --client=%u/%u", param.client.id, param.client.num_clients); - if (param.server) - printf(" --server=%s", param.server); + if (param.servers) + printf(" --servers=%s", param.servers); if (param.port) printf(" --port=%d", param.port); if (param.uri) diff --git a/src/httperf.h b/src/httperf.h index 37567d2..879c934 100755 --- a/src/httperf.h +++ b/src/httperf.h @@ -91,7 +91,9 @@ Rate_Info; typedef struct Cmdline_Params { int http_version; /* (default) HTTP protocol version */ - const char *server; + const char *server; /* (default) hostname */ + const char *server_name; /* fully qualified server name */ + const char *servers; int port; /* (default) server port */ const char *uri; /* (default) uri */ const char *myaddr; From 941bc9558fe8800d7c381b27e9183330ac658fe3 Mon Sep 17 00:00:00 2001 From: Joseph Kong Date: Fri, 22 Jan 2016 22:40:01 -0800 Subject: [PATCH 3/3] Restore the original --server and --server_name options. --- src/conn.c | 32 +++++++++++++++++++++----------- src/core.c | 3 +++ src/httperf.c | 25 +++++++++++++++++++------ src/httperf.h | 2 +- 4 files changed, 44 insertions(+), 18 deletions(-) diff --git a/src/conn.c b/src/conn.c index a24c1fc..13e39f2 100755 --- a/src/conn.c +++ b/src/conn.c @@ -86,22 +86,32 @@ conn_add_servers(void) void conn_init(Conn *conn) { - int len; - - len = strlen(srvcurrent); - conn->hostname = srvcurrent; - conn->hostname_len = len; - - srvcurrent += len + 1; - if (srvcurrent >= srvend) - srvcurrent = srvbase; + if (param.servers) { + int len = strlen(srvcurrent); + conn->hostname = srvcurrent; + conn->hostname_len = len; + conn->fqdname = conn->hostname; + conn->fqdname_len = conn->hostname_len; + + srvcurrent += len + 1; + if (srvcurrent >= srvend) + srvcurrent = srvbase; + } else if (param.server_name) { + conn->hostname = param.server; + conn->hostname_len = strlen(param.server); + conn->fqdname = param.server_name; + conn->fqdname_len = strlen(param.server_name); + } else { + conn->hostname = param.server; + conn->hostname_len = strlen(param.server); + conn->fqdname = conn->hostname; + conn->fqdname_len = conn->hostname_len; + } conn->port = param.port; conn->sd = -1; conn->myport = -1; conn->line.iov_base = conn->line_buf; - conn->fqdname = conn->hostname; - conn->fqdname_len = conn->hostname_len; #ifdef HAVE_SSL if (param.use_ssl) { diff --git a/src/core.c b/src/core.c index 06b96ec..bb4929e 100755 --- a/src/core.c +++ b/src/core.c @@ -965,6 +965,9 @@ core_init(void) if (param.servers) conn_add_servers(); + else if (param.server) + core_addr_intern(param.server, strlen(param.server), param.port); + if (param.runtime) { arg.l = 0; timer_schedule(core_runtime_timer, arg, param.runtime); diff --git a/src/httperf.c b/src/httperf.c index 7f455d8..60bd351 100755 --- a/src/httperf.c +++ b/src/httperf.c @@ -136,6 +136,8 @@ static struct option longopts[] = { {"retry-on-failure", no_argument, ¶m.retry_on_failure, 1}, {"runtime", required_argument, (int *) ¶m.runtime, 0}, {"send-buffer", required_argument, (int *) ¶m.send_buffer_size, 0}, + {"server", required_argument, (int *) ¶m.server, 0}, + {"server-name", required_argument, (int *) ¶m.server_name, 0}, {"servers", required_argument, (int *) ¶m.servers, 0}, {"uri", required_argument, (int *) ¶m.uri, 0}, {"session-cookies", no_argument, (int *) ¶m.session_cookies, 1}, @@ -175,9 +177,9 @@ usage(void) "\t[--num-calls N] [--num-conns N] [--session-cookies]\n" "\t[--period [d|u|e]T1[,T2]|[v]T1,D1[,T2,D2]...[,Tn,Dn]\n" "\t[--print-reply [header|body]] [--print-request [header|body]]\n" - "\t[--rate X] [--recv-buffer N] [--retry-on-failure] " - "[--send-buffer N]\n" - "\t<--servers file> [--port N] [--uri S] [--myaddr S]\n" + "\t[--rate X] [--recv-buffer N] [--retry-on-failure] [--send-buffer N]\n" + "\t[--server S|--servers file] [--server-name S] [--port N] [--uri S] " + "[--myaddr S]\n" #ifdef HAVE_SSL "\t[--ssl] [--ssl-ciphers L] [--ssl-no-reuse]\n" "\t[--ssl-certificate file] [--ssl-key file]\n" @@ -635,7 +637,11 @@ main(int argc, char **argv) prog_name, optarg); exit(1); } - } else if (flag == ¶m.servers) + } else if (flag == ¶m.server) + param.server = optarg; + else if (flag == ¶m.server_name) + param.server_name = optarg; + else if (flag == ¶m.servers) param.servers = optarg; #ifdef HAVE_SSL else if (flag == ¶m.ssl_cipher_list) @@ -974,13 +980,16 @@ main(int argc, char **argv) } } - if (param.servers == NULL) { + if (param.server != NULL && param.servers != NULL) { fprintf(stderr, - "%s: must specify --servers\n", + "%s: --server S or --servers file\n", prog_name); exit(-1); } + if (param.server == NULL && param.servers == NULL) + param.server = "localhost"; + #ifdef HAVE_SSL if (param.use_ssl) { char buf[1024]; @@ -1131,6 +1140,10 @@ main(int argc, char **argv) if (param.runtime > 0) printf(" --runtime=%g", param.runtime); printf(" --client=%u/%u", param.client.id, param.client.num_clients); + if (param.server) + printf(" --server=%s", param.server); + if (param.server_name) + printf(" --server_name=%s", param.server_name); if (param.servers) printf(" --servers=%s", param.servers); if (param.port) diff --git a/src/httperf.h b/src/httperf.h index 879c934..9d40a8a 100755 --- a/src/httperf.h +++ b/src/httperf.h @@ -156,7 +156,7 @@ typedef struct Cmdline_Params u_int num_reqs; /* # of user requests per session */ Time think_time; /* user think time between requests */ } - wsesspage; /* XXX Currently broken */ + wsesspage; struct { u_int num_sessions; /* # of user-sessions */