All new accounts created on Gitlab now require administrator approval. If you invite any collaborators, please let Flux staff know so they can approve the accounts.

Commit 8f349249 authored by Mike Hibler's avatar Mike Hibler

Once again remove the hacky/hokey LOSSRATE code,

hopefully never to return again!
parent ff4f97d3
......@@ -33,9 +33,6 @@ SERVEROBJS = server.o $(SHAREDOBJS)
CFLAGS = -O2 -g -Wall -static $(PTHREADCFLAGS) -DSTATS
LDFLAGS = -static
# Hacky loss rate flag
#CFLAGS += -DDOLOSSRATE
# Define this if you implementation of cond_vars works well
#CFLAGS += -DCONDVARS_WORK
......
......@@ -47,9 +47,6 @@ int maxinprogress = MAXINPROGRESS;
int redodelay = CLIENT_REQUEST_REDO_DELAY;
int idledelay = CLIENT_WRITER_IDLE_DELAY;
int startdelay = 0, startat = 0;
#ifdef DOLOSSRATE
int lossrate = 0;
#endif
int debug = 0;
int tracing = 0;
......@@ -356,26 +353,14 @@ main(int argc, char **argv)
strncpy(traceprefix, event.data.start.traceprefix, 64);
else
traceprefix[0] = 0;
#ifdef DOLOSSRATE
if (event.data.start.plr >= 0.0 && event.data.start.plr <= 1.0)
lossrate = (int)(event.data.start.plr * 0x7fffffff);
else
lossrate = 0;
#endif
log("Starting: slice=%d, startat=%d, startdelay=%d, zero=%d, "
"randomize=%d, nothreads=%d, debug=%d, tracing=%d, "
"pkttimeout=%d, idletimer=%d, idledelay=%d, redodelay=%d, "
#ifdef DOLOSSRATE
"plr=%.2f, "
#endif
"maxmem=%d, chunkbufs=%d, maxwritebumfem=%d, "
"maxreadahead=%d, maxinprogress=%d",
slice, startat, startdelay, zero, randomize, nothreads,
debug, tracing, pkttimeout, idletimer, idledelay, redodelay,
#ifdef DOLOSSRATE
lossrate ? event.data.start.plr : 0,
#endif
maxmem, maxchunkbufs, maxwritebufmem,
maxreadahead, maxinprogress);
}
......@@ -1266,35 +1251,10 @@ PlayFrisbee(void)
Stats.u.v1.redodelay = redodelay;
Stats.u.v1.randomize = randomize;
p->msg.leave2.stats = Stats;
#if 1
/* XXX hack, make sure stats get through */
delay = 0;
while (delay < 10) {
Packet_t rep;
int readretry;
PacketSend(p, 0);
for (readretry = 0; readretry < 10; readretry++) {
fsleep(100000);
while (PacketReceive(&rep) == 0) {
if (rep.hdr.subtype == PKTSUBTYPE_LEAVE2 &&
rep.hdr.type == PKTTYPE_REPLY)
goto gotit;
}
}
delay++;
}
gotit:
#else
PacketSend(p, 0);
#endif
log("");
ClientStatsDump(myid, &Stats);
#ifdef DOLOSSRATE
dump_network();
#endif
#else
p->hdr.type = PKTTYPE_REQUEST;
p->hdr.subtype = PKTSUBTYPE_LEAVE;
......
......@@ -211,16 +211,6 @@ parse_event(Event_t *event, char *etype, char *buf)
gotevent = 1;
continue;
}
#ifdef DOLOSSRATE
{
double plr;
if (sscanf(cp, "PLR=%lf", &plr) == 1) {
event->data.start.plr = plr;
gotevent = 1;
continue;
}
}
#endif
}
}
return 0;
......@@ -289,7 +279,6 @@ EventInit(char *server)
strcpy(ipbuf, inet_ntoa(myip));
ipaddr = ipbuf;
#if 1
/*
* Hideous Hack Alert!
*
......@@ -304,7 +293,6 @@ EventInit(char *server)
return 1;
} else if (debug)
log("client number %d for event handling", clientnum);
#endif
/*
* Convert server/port to elvin thing.
......
......@@ -33,9 +33,6 @@ typedef struct {
int trace; /* tracing level */
char traceprefix[STRSIZE];
/* prefix for trace output file */
#ifdef DOLOSSRATE
double plr;
#endif
} start;
struct {
int exitstatus;
......
......@@ -22,20 +22,7 @@
#include "decls.h"
#include "utils.h"
#ifdef DOLOSSRATE
#define LOSSONSENDER
#define LOSSONRECVER
#endif
#ifdef DOLOSSRATE
extern int lossrate;
#endif
#ifdef STATS
#ifdef DOLOSSRATE
unsigned long rpackets, rpacketslost;
unsigned long spackets, spacketslost;
#endif
unsigned long nonetbufs;
#define DOSTAT(x) (x)
#else
......@@ -53,24 +40,6 @@ struct in_addr myipaddr;
static int nobufdelay = -1;
int broadcast = 0;
void
dump_network(void)
{
#ifdef DOLOSSRATE
if (lossrate == 0)
return;
if (spacketslost)
fprintf(stderr, "Lost %lu of %lu send packets (%.2f%%)\n",
spacketslost, spackets,
(double)spacketslost * 100 / spackets);
if (rpacketslost)
fprintf(stderr, "Lost %lu of %lu recv packets (%.2f%%)\n",
rpacketslost, rpackets,
(double)rpacketslost * 100 / rpackets);
#endif
}
static void
CommonInit(void)
{
......@@ -222,31 +191,7 @@ PacketReceive(Packet_t *p)
{
struct sockaddr_in from;
int mlen, alen;
#ifdef DOLOSSRATE
#ifdef LOSSONRECVER
struct timeval now, then;
if (lossrate) {
/*
* XXX cannot rely on socket timeout value since we need to
* treat received and dropped packets as though they never
* arrived. This is still not correct as a receive timeout
* could still be up to twice as long as it should be, but
* I don't want to mess with the socket timeout on every
* recv call.
*/
gettimeofday(&then, 0);
if ((then.tv_usec += PKTRCV_TIMEOUT) >= 1000000) {
then.tv_sec++;
then.tv_usec -= 1000000;
}
again:
gettimeofday(&now, 0);
if (timercmp(&now, &then, >=))
return -1;
}
#endif
#endif
alen = sizeof(from);
bzero(&from, alen);
if ((mlen = recvfrom(sock, p, sizeof(*p), 0,
......@@ -270,21 +215,6 @@ PacketReceive(Packet_t *p)
return 1;
}
#ifdef DOLOSSRATE
#ifdef LOSSONRECVER
DOSTAT(rpackets++);
if (lossrate && random() < lossrate) {
/* XXX hack: don't loose join/leave messages, screws stats */
if (p->hdr.subtype != PKTSUBTYPE_JOIN &&
p->hdr.subtype != PKTSUBTYPE_LEAVE &&
p->hdr.subtype != PKTSUBTYPE_LEAVE2) {
DOSTAT(rpacketslost++);
goto again;
}
}
#endif
#endif
return 0;
}
......@@ -301,21 +231,6 @@ PacketSend(Packet_t *p, int *resends)
struct sockaddr_in to;
int len, delays;
#ifdef DOLOSSRATE
#ifdef LOSSONSENDER
DOSTAT(spackets++);
if (lossrate && random() < lossrate) {
/* XXX hack: don't loose join/leave messages, screws stats */
if (p->hdr.subtype != PKTSUBTYPE_JOIN &&
p->hdr.subtype != PKTSUBTYPE_LEAVE &&
p->hdr.subtype != PKTSUBTYPE_LEAVE2) {
DOSTAT(spacketslost++);
return;
}
}
#endif
#endif
len = sizeof(p->hdr) + p->hdr.datalen;
p->hdr.srcip = myipaddr.s_addr;
......
......@@ -50,9 +50,6 @@ struct in_addr mcastif;
char *filename;
struct timeval IdleTimeStamp, FirstReq, LastReq;
volatile int activeclients;
#ifdef DOLOSSRATE
int lossrate = 0;
#endif
/* Forward decls */
void quit(int);
......@@ -439,12 +436,6 @@ ClientLeave2(Packet_t *p)
break;
}
}
#if 1
/* XXX let the client know we got the goods */
p->hdr.type = PKTTYPE_REPLY;
p->hdr.datalen = sizeof(p->msg.leave2);
PacketReply(p);
#endif
#else
activeclients--;
......@@ -804,17 +795,6 @@ main(int argc, char **argv)
case 'W':
bandwidth = atol(optarg);
break;
#ifdef DOLOSSRATE
/* XXX this is not the emulab way! */
case 'L':
{
double plr = atof(optarg);
if (plr < 0 || plr > 1)
fatal("bad loss rate: %f", plr);
lossrate = (int)(plr * 0x7fffffff);
break;
}
#endif
case 'h':
case '?':
default:
......@@ -925,9 +905,6 @@ main(int argc, char **argv)
Stats.intervals, Stats.missed);
log(" spurious wakeups: %d", Stats.wakeups);
log(" max workq size: %d", WorkQMax);
#ifdef DOLOSSRATE
dump_network();
#endif
}
#endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment