summaryrefslogtreecommitdiff
path: root/ACE/apps/JAWS/clients/WebSTONE/src/bench.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/apps/JAWS/clients/WebSTONE/src/bench.h')
-rw-r--r--ACE/apps/JAWS/clients/WebSTONE/src/bench.h274
1 files changed, 274 insertions, 0 deletions
diff --git a/ACE/apps/JAWS/clients/WebSTONE/src/bench.h b/ACE/apps/JAWS/clients/WebSTONE/src/bench.h
new file mode 100644
index 00000000000..489b6596efc
--- /dev/null
+++ b/ACE/apps/JAWS/clients/WebSTONE/src/bench.h
@@ -0,0 +1,274 @@
+/* $Id$ */
+/**************************************************************************
+ * *
+ * Copyright (C) 1995 Silicon Graphics, Inc. *
+ * *
+ * These coded instructions, statements, and computer programs were *
+ * developed by SGI for public use. If any changes are made to this code*
+ * please try to get the changes back to the author. Feel free to make *
+ * modifications and changes to the code and release it. *
+ * *
+ **************************************************************************/
+#ifndef __BENCH_H__
+#define __BENCH_H__
+#include <stdio.h>
+#include <stdarg.h>
+#ifndef WIN32
+#include <sys/time.h>
+#endif /* WIN32 */
+
+#define USECINSEC 1000000
+#define MSECINSEC 1000
+#define MAX_ACCEPT_SECS 180 /* maximum time master will wait for listen() */
+
+#define NCCARGS 4096
+#define MAXCLIENTS 1024
+#define MAXUSERNAME 25
+#define MAXPASSWD 20
+#define BUFSIZE 4096
+
+#define MAXTOTALPROCS MAXCLIENTS /* overall max # of procs */
+#define MAXPROCSPERNODE MAXCLIENTS /* max # of procs/node */
+
+
+#define CONTENT_LENGTH_STRING "CONTENT-LENGTH:"
+#define OKSTR "OK"
+#define OKSTRLEN ((int)strlen(OKSTR))
+#define GOSTR "GO"
+#define GOSTRLEN ((int)strlen(GOSTR))
+#define READYSTR "READY"
+#define READYSTRLEN ((int)strlen(READYSTR))
+#define ABORTSTR "ABORT"
+#define ABORTSTRLEN ((int)strlen(ABORTSTR))
+
+
+#define MAXNUMOFFILES 1 /* max # of files per page */
+#define URL_SIZE 1024
+#define MAXNUMOFPAGES 100
+#define SIZEOF_TIMEVALTEXT 18
+#define SIZEOF_DOUBLETEXT 18
+#define SIZEOF_RQSTSTATSTEXT ((7 * SIZEOF_TIMEVALTEXT) + \
+ (12 * SIZEOF_DOUBLETEXT) + 1)
+#define SIZEOF_STATSTEXTBASE (SIZEOF_RQSTSTATSTEXT + \
+ (3 * SIZEOF_TIMEVALTEXT) + \
+ (2 * SIZEOF_DOUBLETEXT) + 1)
+#define SIZEOF_STATSTEXT (SIZEOF_STATSTEXTBASE + MAXNUMOFPAGES * SIZEOF_DOUBLETEXT)
+#define SIZEOF_PAGESTATSTEXT (SIZEOF_RQSTSTATSTEXT + \
+ (0 * SIZEOF_TIMEVALTEXT) + \
+ (3 * SIZEOF_DOUBLETEXT) + 1)
+
+#define D_PRINTF debug && d_printf
+
+#ifdef USE_TIMEZONE
+typedef struct rqst_timer {
+ struct timeval entertime;
+ struct timezone entertimezone;
+ struct timeval beforeconnect;
+ struct timezone beforeconnectzone;
+ struct timeval afterconnect;
+ struct timezone afterconnectzone;
+ struct timeval beforeheader;
+ struct timezone beforeheaderzone;
+ struct timeval afterheader;
+ struct timezone afterheaderzone;
+ struct timeval afterbody;
+ struct timezone afterbodyzone;
+ struct timeval exittime;
+ struct timezone exittimezone;
+ long unsigned int totalbytes;
+ long unsigned int bodybytes;
+ int valid;
+ long unsigned int page_number;
+} rqst_timer_t;
+#else
+typedef struct rqst_timer {
+ struct timeval entertime;
+ struct timeval beforeconnect;
+ struct timeval afterconnect;
+ struct timeval beforeheader;
+ struct timeval afterheader;
+ struct timeval afterbody;
+ struct timeval exittime;
+ long unsigned int totalbytes;
+ long unsigned int bodybytes;
+ int valid;
+ long unsigned int page_number;
+} rqst_timer_t;
+#endif /* USE_TIMEZONE */
+
+extern void rqtimer_init(rqst_timer_t *);
+
+#ifdef USE_TIMEZONE
+typedef struct rqst_stats {
+ struct timeval totalresponsetime;
+ struct timezone totalresponsetimezone;
+ double totalresponsetimesq;
+ struct timeval minresponsetime;
+ struct timezone minresponsetimezone;
+ struct timeval maxresponsetime;
+ struct timezone maxresponsetimezone;
+ struct timeval totalconnecttime;
+ struct timezone totalconnecttimezone;
+ double totalconnecttimesq;
+ struct timeval minconnecttime;
+ struct timezone minconnecttimezone;
+ struct timeval maxconnecttime;
+ struct timezone maxconnecttimezone;
+ long unsigned int totalconnects;
+ long unsigned int totalerrs;
+ struct timeval totalerrortime;
+ struct timezone totalerrortimezone;
+ double totalbytes;
+ double totalbytessq;
+ double minbytes;
+ double maxbytes;
+ double totalbody;
+ double totalbodysq;
+ double minbody;
+ double maxbody;
+} rqst_stats_t;
+#else
+typedef struct rqst_stats {
+ struct timeval totalresponsetime;
+ double totalresponsetimesq;
+ struct timeval minresponsetime;
+ struct timeval maxresponsetime;
+ struct timeval totalconnecttime;
+ double totalconnecttimesq;
+ struct timeval minconnecttime;
+ struct timeval maxconnecttime;
+ long unsigned int totalconnects;
+ long unsigned int totalerrs;
+ struct timeval totalerrortime;
+ double totalbytes;
+ double totalbytessq;
+ double minbytes;
+ double maxbytes;
+ double totalbody;
+ double totalbodysq;
+ double minbody;
+ double maxbody;
+} rqst_stats_t;
+#endif /* USE_TIMEZONE */
+
+extern void rqstat_init(rqst_stats_t *);
+extern void rqstat_sum(rqst_stats_t *, rqst_stats_t *);
+extern void rqstat_print(rqst_stats_t *);
+extern void rqstat_fprint(FILE *, rqst_stats_t *);
+extern void rqstat_times(rqst_stats_t *, rqst_timer_t *);
+
+#ifdef USE_TIMEZONE
+typedef struct stats {
+ /* char hostname[MAXHOSTNAMELEN]; */
+ rqst_stats_t rs;
+ struct timeval starttime;
+ struct timezone starttimezone;
+ struct timeval endtime;
+ struct timezone endtimezone;
+ struct timeval datatime;
+ struct timezone datatimezone;
+ long unsigned int totalpages;
+ unsigned int total_num_of_files;
+ unsigned int page_numbers[MAXNUMOFPAGES];
+} stats_t;
+#else
+typedef struct stats {
+ /* char hostname[MAXHOSTNAMELEN]; */
+ rqst_stats_t rs;
+ struct timeval starttime;
+ struct timeval endtime;
+ struct timeval datatime;
+ long unsigned int totalpages;
+ unsigned int total_num_of_files;
+ unsigned int page_numbers[MAXNUMOFPAGES];
+} stats_t;
+#endif /* USE_TIMEZONE */
+
+extern void stats_init(stats_t *);
+extern stats_t * text_to_stats(char *);
+extern char * stats_to_text(const stats_t *);
+
+typedef struct page_stats {
+ rqst_stats_t rs;
+ long unsigned int totalpages;
+ unsigned int page_size;
+ int page_valid;
+} page_stats_t;
+
+extern void page_stats_init(page_stats_t *);
+extern page_stats_t * text_to_page_stats(char *);
+extern char * page_stats_to_text(const page_stats_t *);
+
+/* THIS STRUCTURE DEFINES A PAGE. */
+typedef struct page_list {
+ int load_num;
+ int num_of_files;
+ char *(filename[MAXNUMOFFILES]);
+ char *(servername[MAXNUMOFFILES]);
+ int port_number[MAXNUMOFFILES];
+}page_list_t;
+
+
+
+/* shared variables */
+extern THREAD FILE *debugfile;
+extern int debug;
+
+extern int savefile;
+extern int timeexpired;
+extern long int number_of_pages;
+
+/* routines in bench.c */
+
+extern void *mymalloc(size_t size);
+extern int recvdata(SOCKET sock, char *ptr, int nbytes);
+extern int senddata(SOCKET sock, char *ptr, int nbytes);
+extern void rqstat_times(rqst_stats_t *rs, rqst_timer_t *rt);
+/* note several others listed above */
+
+/* routines in errexit.c */
+
+void errexit(const char *, ...);
+extern int returnerr(const char *, ...);
+extern int d_printf(const char *, ...);
+extern char *neterrstr(void);
+
+/* routines in get.c */
+
+extern int get(char *loc, NETPORT port, char *url, rqst_timer_t *timer);
+
+/* routines in parse_file_list.c */
+
+extern int count_file_list(const char *url_list_file);
+extern void parse_file_list (const char *url_list_file, page_list_t *page_list,
+ long int *num_of_pages, long int *num_of_files);
+extern long int load_percent(page_list_t *page_list, long int number_of_pages);
+
+/* routines in statistics.c (formerly statistics.h) */
+
+extern double mean(const double, const int);
+extern double variance(const double, const double, const int);
+extern double stddev(const double, const double, const int);
+
+/* routines in timefunc.c (formerly timefunc.h) */
+
+extern double timevaldouble(struct timeval *);
+extern void doubletimeval(const double, struct timeval *);
+
+extern void addtime(struct timeval *, struct timeval *);
+extern void compdifftime(struct timeval *, struct timeval *, struct timeval *);
+extern void mintime(struct timeval *, struct timeval *);
+extern void maxtime(struct timeval *, struct timeval *);
+extern void avgtime(struct timeval *, int, struct timeval *);
+extern void variancetime(struct timeval *, double, int, struct timeval *);
+extern void stddevtime(struct timeval *, double, int, struct timeval *);
+
+extern void sqtime(struct timeval *, struct timeval *);
+
+extern double thruputpersec(const double, struct timeval *);
+
+/* routines in webclient.c */
+
+extern SOCKET connectsock(char *host, NETPORT portnum, char *protocol);
+
+#endif /* !__BENCH_H__ */