+\subsection{Test suite}
+
+Before executing the test suite the test environment has to be initialized.
+
+\begin{enumerate}
+ \item Boot the vm using VirtualBox.
+ \item Setup iptables by executing \texttt{\# code/iptables.sh}
+ \item Navigate to the working directory by running
+ \texttt{\$ cd /home/student/tt2015}
+ \item Start the echo server by running
+ \texttt{\# cd code/server \&\& Java Main}
+\end{enumerate}
+
+\subsubsection{Preflight checks}
+The we do the preflight checks as defined in Table~\ref{tbl:preflight}.
+
+\subsubsection{Test Cases}
+If the SUT passes the preflight checks the actual test cases can be executed.
+Table~\ref{tbl:testcases} shows the expected results of each of the test cases
+described in Table~\ref{tbl:testpairs}.
+
+\setcounter{TCC}{1}
+\begin{table}[H]
+ \centering
+ \begin{tabular}{|l|p{.7\linewidth}|}
+ \hline
+ Test number & Expected results\\
+ \hline\hline
+ \doTCC & An ACK\# of the sequence number of the SYN packet + 1. \\ \hline
+ \doTCC & An ACK\# of the send sequence number + 1.\\ \hline
+ \doTCC & An ACK\# of the sequence number of the last send segment + the
+ size of the payload of that segment.\\ \hline
+ \doTCC & An ACK\# of the sequence number of the last send segment + the
+ size of the payload of that segment.\\ \hline
+ \doTCC & An ACK\# of the sequence number of the last send segment + the
+ size of the payload of that segment.\\ \hline
+ \doTCC & An ACK\# of the sequence number of the swapped packet with the lowest sequence number. \\ \hline
+ \doTCC & The ACK\# for the SEQ\# of the first segments which is
+ corrupted is received for each consecutive segment send.\\
+ $\vdots$ & \\
+ \setcounter{TCC}{10}
+ \doTCC & The ACK\# for the SEQ\# of the first segments which is
+ corrupted is received for each consecutive segment send.\\ \hline
+ \doTCC & An ACK\# of the sequence number of the last send segment + the
+ size of the payload of that segment.\\ \hline
+% \doTCC & The segment is not attributed to the current connection
+% and therefore no ACK\# is received. \\ \hline
+% \doTCC & The ACK\# for the SEQ\# of the first segments which is
+% corrupted is received for each consecutive segment send.\\ \hline
+% \doTCC & The ACK\# for the SEQ\# of the first segments which is
+% corrupted is received for each consecutive segment send.\\ \hline
+% \doTCC & The segment is not attributed to the current connection
+% and therefore no ACK\# is received. \\ \hline
+% \doTCC & The ACK\# for the SEQ\# of the first segments which is
+% corrupted is received for each consecutive segment send.\\ \hline
+% \doTCC & The ACK\# for the SEQ\# of the first segments which is
+% corrupted is received for each consecutive segment send.\\ \hline
+% \doTCC & The ACK\# for the SEQ\# of the first segments which is
+% corrupted is received for each consecutive segment send.\\ \hline
+% \doTCC & The ACK\# for the SEQ\# of the first segments which is
+% corrupted is received for each consecutive segment send.\\ \hline
+ \end{tabular}
+\caption{Expected results of test cases}
+\label{tbl:testcases}
+\end{table}
+
+% Bij Ramons afwezigheid
+% Paul Vitero (linkerkant lange gang)
+% verdieping Mercator
+
+
+\begin{longtable}{|p{.2\linewidth}|p{.8\linewidth}|}
+ \hline
+
+ Nr & 1 \\\hline
+ Title & Connect to the \emph{echo-server} without sending a payload. \\\hline
+ Input & Generated packets. \\\hline
+ Expected output & \emph{Echo-server} accepts the connection. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/1.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 2 \\\hline
+ Title & Single valid request with 1byte payload. \\\hline
+ Input & Generated packets. \\\hline
+ Expected output & Packets echoed back by Echo-Server. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/1.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+% Nr & 3 \\\hline
+% Title & Single valid request with 65495bytes payload. \\\hline
+% Input & Generated packets. \\\hline
+% Expected output & Packets echoed back by Echo-Server. \\\hline
+% \multirow{2}{*}{Course of action}
+% & 1. Use the steps listed above in order to start the SUT. \\
+% & 2. Execute the script by running \texttt{\# code/client/tests/2.py} \\\hline
+% Valid trace & Verify that the script prints 'Success'. \\\hline
+% \hline
+
+ Nr & 3 \\\hline
+ Title & 5 valid requests with 1byte payload. \\\hline
+ Input & Generated packets. \\\hline
+ Expected output & Packets echoed back by Echo-Server, in the same order as the client sent them. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/3.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 4 \\\hline
+ Title & 5 valid requests with 65495bytes payload. \\\hline
+ Input & Generated packets with 65495bytes payload. \\\hline
+ Expected output & Packets echoed back by Echo-Server, in the same order as the client sent them. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/4.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 5 \\\hline
+ Title & 5 requests with 1byte payload with corrupted source port, destination port and checksum. The second segment is omitted in order to simulate a packet drop on the client side. \\\hline
+ Input & Generated packets with 1byte payload, two packets are swapped in position. \\\hline
+ Expected output & All packets are dropped resulting in a connection time-out. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/5.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 6 \\\hline
+ Title & 5 requests with 65495byte payload with corrupted source port, destination port and checksum. The second segment is omitted in order to simulate a packet drop on the client side. \\\hline
+ Input & Generated packets with 65495byte payload, second generated packet is removed. \\\hline
+ Expected output & All packets are dropped resulting in a connection time-out. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/6.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ %% HIER
+
+ Nr & 7 \\\hline
+ Title & 5 requests with 1byte corrupted payload, corrupted source and destination port. \\\hline
+ Input & Generated packets with 1byte payload, in these packets the payload byte, source and destination ports are increased by one. \\\hline
+ Expected output & All packets are dropped resulting in a connection time-out. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/7.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 8 \\\hline
+ Title & 5 requests with 65495byte corrupted payload, corrupted source and destination port. \\\hline
+ Input & Generated packets with 65495byte payload, in these packets one of the payload bytes, source and destination ports are increased by one. \\\hline
+ Expected output & All packets are dropped resulting in a connection time-out. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/8.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+
+ Nr & 9 \\\hline
+ Title & 5 requests with 1byte corrupted payload, invalid checksum and the second packet is dropped. \\\hline
+ Input & Generated packets with 1byte payload, in these packets the payload byte and checksum are increased by one. \\\hline
+ Expected output & All packets are dropped resulting in a connection time-out. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/9.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 10 \\\hline
+ Title & 5 requests with 65495byte corrupted payload, invalid checksum and the second packet is dropped. \\\hline
+ Input & Generated packets with 65495byte payload, in these packets one of the payload bytes and the checksum are increased by one. \\\hline
+ Expected output & All packets are dropped resulting in a connection time-out. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/10.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 11 \\\hline
+ Title & 5 requests with 65495byte corrupted payload that doesn't show up in checksum and corrupted destination port. The second packet is dropped. \\\hline
+ Input & Generated packets with 65495byte payload, in these packets one 16bit word in the payload is increased by 1 and another 16bit word is decreased by 1. The destination port is also increase by one and the second packet is removed. \\\hline
+ Expected output & All packets are dropped resulting in a connection time-out. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/11.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+
+
+ Nr & 6 \\\hline
+ Title & 5 requests with 1byte payload with corrupted source port, destination port and checksum. The second segment is omitted in order to simulate a packet drop on the client side. \\\hline
+ Input & Generated packets with 1byte payload, two packets are swapped in position. \\\hline
+ Expected output & All packets are dropped resulting in a connection time-out. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/5.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 7 \\\hline
+ Title & Request with corrupted destination port. \\\hline
+ Input & Generated packets with 1byte payload, in these packets the destination port number is increased by one. \\\hline
+ Expected output & The packets will never reach the Echo-server resulting in a connection time-out. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/7.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 8 \\\hline
+ Title & Request with corrupted source address. \\\hline
+ Input & Generated packets with 1byte payload, in these packets the source address is replaced with 255.255.255.255. \\\hline
+ Expected output & The Echo-server will receive packet and is unable to respond with a ACK resulting in a connection time-out. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/8.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 9 \\\hline
+ Title & Request with corrupted destination address. \\\hline
+ Input & Generated packets with 1byte payload, in these packets the destination address is replaced with 255.255.255.255. \\\hline
+ Expected output & The packets will never reach the Echo-server resulting in a connection time-out. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/9.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 10 \\\hline
+ Title & Request with corrupted payload detectable by checksum. \\\hline
+ Input & Generated packets with 1byte payload, in these packets one byte is increased by 1 after the checksum has been calculated. \\\hline
+ Expected output & The \emph{SUT} will drop packets before sending them resulting in a runtime error of the test script. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/10.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+ \hline
+
+ Nr & 11 \\\hline
+ Title & Request with corrupted payload undetectable by checksum. \\\hline
+ Input & Generated packets with 1byte payload, in these packets one 16bit word is increased by 1 and an other 16bit word is decreased by 1, after the checksum has been calculated. \\\hline
+ Expected output & Echo-server receives the corrupted segment. \\\hline
+ \multirow{2}{*}{Course of action}
+ & 1. Use the steps listed above in order to start the SUT. \\
+ & 2. Execute the script by running \texttt{\# code/client/tests/11.py} \\\hline
+ Valid trace & Verify that the script prints 'Success'. \\\hline
+
+\end{longtable}