⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httperf.h

📁 一个WEB服务器的性能测试工具
💻 H
字号:
/*    httperf -- a tool for measuring web server performance    Copyright (C) 2000  Hewlett-Packard Company    Contributed by David Mosberger-Tang <davidm@hpl.hp.com>    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.    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., 59 Temple Place, Suite 330, Boston, MA    02111-1307 USA*/#ifndef httperf_h#define httperf_h#include "config.h"#include <sys/time.h>#include <sys/types.h>#include <sys/resource.h>#define VERSION	"0.8"typedef double Time;#define NELEMS(a)	((sizeof (a)) / sizeof ((a)[0]))#define TV_TO_SEC(tv)	((tv).tv_sec + 1e-6*(tv).tv_usec)typedef union  {    char c;    int i;    long l;    u_char uc;    u_int ui;    u_long ul;    float f;    double d;    void *vp;    const void *cvp;  }Any_Type;typedef enum Dist_Type  {    DETERMINISTIC,	/* also called fixed-rate */    UNIFORM,		/* over interval [min_iat,max_iat) */    EXPONENTIAL		/* with mean mean_iat */  }Dist_Type;typedef struct Load_Generator  {    const char *name;    void (*init) (void);    void (*start) (void);    void (*stop) (void);  }Load_Generator;typedef struct Stat_Collector  {    const char *name;    /* START and STOP are timing sensitive, so they should be as short       as possible.  More expensive stuff can be done during INIT and       DUMP.  */    void (*init) (void);    void (*start) (void);    void (*stop) (void);    void (*dump) (void);  }Stat_Collector;typedef struct Rate_Info  {    Dist_Type dist;		/* interarrival distribution */    double rate_param;		/* 0 if mean_iat==0, else 1/mean_iat */    Time mean_iat;		/* mean interarrival time */    Time min_iat;		/* min interarrival time (for UNIFORM) */    Time max_iat;	        /* max interarrival time (for UNIFORM) */  }Rate_Info;#define PRINT_HEADER	(1 << 0)#define PRINT_BODY	(1 << 1)typedef struct Cmdline_Params  {    int http_version;	/* (default) HTTP protocol version */    const char *server;	/* (default) hostname */    const char *server_name; /* fully qualified server name */    int port;		/* (default) server port */    const char *uri;	/* (default) uri */    Rate_Info rate;    Time timeout;	/* watchdog timeout */    Time think_timeout;	/* timeout for server think time */    int num_conns;	/* # of connections to generate */    int num_calls;	/* # of calls to generate per connection */    int burst_len;	/* # of calls to burst back-to-back */    int max_piped;	/* max # of piped calls per connection */    int max_conns;	/* max # of connections per session */    int hog;		/* client may hog as much resources as possible */    int send_buffer_size;    int recv_buffer_size;    int failure_status;	/* status code that should be considered failure */    int retry_on_failure; /* when a call fails, should we retry? */    int close_with_reset; /* close connections with TCP RESET? */    int print_request;	/* bit 0: print req headers, bit 1: print req body */    int print_reply;	/* bit 0: print repl headers, bit 1: print repl body */    int session_cookies; /* handle set-cookies? (at the session level) */    int no_host_hdr;	/* don't send Host: header in request */#ifdef HAVE_SSL    int use_ssl;	/* connect via SSL */    int ssl_reuse;	/* reuse SSL Session ID */    const char *ssl_cipher_list; /* client's list of SSL cipher suites */#endif    const char *additional_header;	/* additional request header(s) */    const char *method;	/* default call method */    struct      {	u_int id;	u_int num_clients;      }    client;    struct      {	char *file;	/* name of the file where entries are */	char do_loop;	/* boolean indicating if we want to loop on entries */      }    wlog;    struct      {	u_int num_sessions;	/* # of sessions */	u_int num_calls;	/* # of calls per session */	Time think_time;	/* user think time between calls */      }    wsess;    struct      {	u_int num_sessions;	/* # of sessions */	u_int num_reqs;		/* # of user requests per session */	Time think_time;	/* user think time between requests */      }    wsesspage;    struct      {	u_int num_sessions;	/* # of user-sessions */	Time think_time;	/* user think time between calls */	char *file;		/* name of the file where session defs are */      }    wsesslog;    struct      {	u_int num_files;	double target_miss_rate;      }    wset;  }Cmdline_Params;extern const char *prog_name;extern int verbose;extern Cmdline_Params param;extern Time test_time_start;extern Time test_time_stop;extern struct rusage test_rusage_start;extern struct rusage test_rusage_stop;#ifdef HAVE_SSL# include <openssl/ssl.h>  extern SSL_CTX *ssl_ctx;#endif#ifdef DEBUG  extern int debug_level;# define DBG debug_level#else# define DBG 0#endifextern void panic (const char *msg, ...);extern void no_op (void);#endif /* httperf_h */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -