[Sumover-dev] [svn commit] r4321 - vic/branches/cc/cc/test

sumover-dev at cs.ucl.ac.uk sumover-dev at cs.ucl.ac.uk
Mon Nov 17 18:29:27 GMT 2008


Author: soohyunc
Date: Mon Nov 17 18:29:26 2008
New Revision: 4321

Modified:
   vic/branches/cc/cc/test/bitvec.cpp
   vic/branches/cc/cc/test/bitvec.h

Log:
added test code for verifying ackvec manipulation 


Modified: vic/branches/cc/cc/test/bitvec.cpp
==============================================================================
--- vic/branches/cc/cc/test/bitvec.cpp	(original)
+++ vic/branches/cc/cc/test/bitvec.cpp	Mon Nov 17 18:29:26 2008
@@ -9,16 +9,73 @@
 #include <stdbool.h>	// boolean type and values
 #include <sys/types.h>	// data types
 #include "bitvec.h"
+#include "cc_output.h"
+
+#define EMUL_LOSS
 
 // variables
-static u_int32_t map = 0;	// bit vector
-static int seqno	 = 0;	// received seqno
 static int ackofack	 = 0;	// ack of ack
-static int lastseq	 = 0;	// last seqno
 static int mvec[DUPACKS];	// margin vec
+static int currseq	 = 0;	// current seqno
+static int prevseq	 = 0;	// previous seqno
+static int ackVec	 = 0;	// ack vector
 
 int bitvec () {
 
+	const int NUMPKTS = 6;		// # of generated packet seqno
+	int i, j;					// used for indexing
+
+	// declare packet buffer
+	Buffer sendbuf, recvbuf;
+	Data *ptr;
+
+	// simulating packet transmission
+	send_buf(sendbuf, NUMPKTS);
+
+#ifdef EMUL_LOSS
+	printf("** EMULATING PACKET LOSS...\n");
+#endif
+	// simulating packet reception
+	for (i = 1; i <= NUMPKTS; i++) {
+		// fake packet loss
+#ifdef EMUL_LOSS
+		if (i != 2 && i != 3) {
+#endif
+			recvbuf.insert_front(i);
+
+			// set current packet seqno
+			ptr = recvbuf.get_head_ptr();
+			currseq = ptr->get_val();
+
+			// generate ackVec
+			if (currseq == prevseq + 1) {
+				// set next bit to 1
+				SET_BIT_VEC (ackVec, 1);
+			} else {
+				int cnt = currseq - prevseq - 1;
+				printf("number of lost packets: %d\n", cnt);
+
+				// set next bit to 0 equal to the # of lost packets
+				for (j = 0; j < cnt; j++)
+					SET_BIT_VEC (ackVec, 0);
+
+				// and then, set this packet as received
+				SET_BIT_VEC (ackVec, 1);
+			}
+			prevseq = currseq;
+#ifdef EMUL_LOSS
+		}
+#endif
+		printf("ackVec: %d\n", ackVec);
+	}
+
+	// display packet seqno
+	printf("\nreceived packets...");
+	recvbuf.display();
+
+	// display ackVec
+	printf("ackVec: %d\n", ackVec);
+
 	return 0;
 }
 
@@ -46,3 +103,15 @@
 	for (int i = 0; i < DUPACKS; i++) 
 		mvec[i] = ((hseq - i) < 0) ? 0 : (hseq - i);
 }
+
+// simulating packet transmission
+void send_buf (Buffer buf, const int num) {
+	int i;
+	// simulating packet generation
+	for (i = 1; i <= num; i++)
+		buf.insert_front(i);
+
+	// display packet seqno
+	printf("\ngenerated packets...");
+	buf.display();
+}

Modified: vic/branches/cc/cc/test/bitvec.h
==============================================================================
--- vic/branches/cc/cc/test/bitvec.h	(original)
+++ vic/branches/cc/cc/test/bitvec.h	Mon Nov 17 18:29:26 2008
@@ -34,6 +34,6 @@
 int		get_head_pos (int vec);
 int		get_tail_pos (int vec);
 void	marginvec (int vec);
-void	gen_seqvec (int vec);
+void	send_buf (Buffer, int);
 
 #endif /* vic_cc_test_bitvec_h */



More information about the Sumover-dev mailing list