From 709cafdf721b3a53c6a25823fc602790fa9e5b8e Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Sun, 20 Dec 2015 20:27:14 +0100 Subject: [PATCH] graphs nu erbij --- a3/3architecture.tex | 55 +++---- a3/4tests.tex | 2 +- a3/Makefile | 4 + a3/arch.dot | 7 + a3/arch.eps | 337 +++++++++++++++++++++++++++++++++++++++++++ a3/graphs.viz | 2 +- a3/setup.dot | 8 - 7 files changed, 367 insertions(+), 48 deletions(-) create mode 100644 a3/arch.dot create mode 100644 a3/arch.eps delete mode 100644 a3/setup.dot diff --git a/a3/3architecture.tex b/a3/3architecture.tex index b8f932a..f01319c 100644 --- a/a3/3architecture.tex +++ b/a3/3architecture.tex @@ -8,43 +8,22 @@ % test-execution automation environment that you developed during the % second assignment. -To test the SUT \GAST needs to be able to send input to the SUT and receive its -output. To simplify the input and output handled by \GAST an adapter is added -between \GAST and the SUT. This adapter abstracts away from parts of the -specification that are not needed for these tests, such as the payload, -sequence number, etc. Essentially reducing each segment to only its flags (SYN, +To test the SUT the tool needs to be able to communicate with the adapter, in +this case a Python program. The Python programs listens to a TCP port and +according to the commands received it sends TCP packets using Scapy. As said +before the adapter abstracts away from all the technicalities such as sequence +numbers. Essentially reducing each segment to only its flags (SYN, ACK, FIN, etc.). -An EchoServer will connect to the SUT to offer an application which will accept -the incoming connection. However, since no data will be exchanged the EchoServer -will not be used for anything else. - -Figure~\ref{fig:architecture_down} shows the flow of data from \GAST to the SUT -and Figure~\ref{fig:architecture_up} shows the flow of data from the SUT back -to \GAST. - -Hier zou dus een plaatje van ``digraph TestSetupDown'' uit ``graphs.viz'' moeten komen. \label{fig:architecture_down} - -Hier zou dus een plaatje van ``digraph TestSetupUp'' uit ``graphs.viz'' moeten komen. \label{fig:architecture_up} - - -\subsection{Python Driver} -The Python driver can be modeled as an Symbolic Transition -System. The model for the connection phase can be seen in -Figure~\ref{fig:pythondriverconnection}. -%meer uitleg over hoe die driver werkt. Qua sequence nummers opslaan enzo, -%beetje toelichting bij de figuur. - -%in graphs.viz heb ik een opzetje voor die symbolic trnasition system -%neergezet, maar ik weet neit hoe die er precies uitziet, dus het is echt heel -%grof, dit moet aangepast worden naar iets wat daadwerkelijk op de -%implementatie lijkt. Wat er nu staat is meer om de moeite te besparen van -%uitzoeken hoe zo'n model er uit ziet :) -Hier zou dus een plaatje van ``digraph PythonDriverConnection'' uit ``graphs.viz'' moeten komen. \label{fig:pythondriverconnection} - -Hier zou dus een plaatje van ``digraph PythonDriverClose'' uit ``graphs.viz'' moeten komen. \label{fig:pythondriverclose} - -% Hier moet nog meer over het automationdeel, maar ik weet neit hoe we dat -% gaan fixen - - +The adapter connects via the SUT to a Java echo server. Thus via TCP the +echo server and the adapter connect. The adapter is an adaptation of the +framework developed for the first part of the assignment. This architecture is +displayed in Figure~\ref{fig:arch}. The tool always does the logging and test +generation. + +\begin{figure}[H] + \centering + \includegraphics[scale=0.75]{arch.eps} + \vspace{5mm} + \caption{Testing architecture}\label{fig:arch} +\end{figure} diff --git a/a3/4tests.tex b/a3/4tests.tex index 6c5269c..131f244 100644 --- a/a3/4tests.tex +++ b/a3/4tests.tex @@ -2,4 +2,4 @@ % Write your model in the input language of the selected MBT tools, generate % tests, and execute -% them on your SUT. Explain your observations and analyse the test results. \ No newline at end of file +% them on your SUT. Explain your observations and analyse the test results. diff --git a/a3/Makefile b/a3/Makefile index 257168f..edd4af0 100644 --- a/a3/Makefile +++ b/a3/Makefile @@ -8,6 +8,10 @@ SOURCES:=$(filter-out preamble.tex,$(shell ls *.tex)) all: $(DOCUMENT).pdf +graphs: + dot -Teps arch.dot > arch.eps + + %.pdf: %.dvi dvipdfm $< diff --git a/a3/arch.dot b/a3/arch.dot new file mode 100644 index 0000000..4c9fd58 --- /dev/null +++ b/a3/arch.dot @@ -0,0 +1,7 @@ +digraph { + rankdir=LR; + edge [dir="both"]; + "Tool" -> "Adapter" [label="TCP"]; + "Adapter" -> "SUT" [label="TCP"]; + "SUT" -> "EchoServer" [label="TCP"]; +} diff --git a/a3/arch.eps b/a3/arch.eps new file mode 100644 index 0000000..67f3375 --- /dev/null +++ b/a3/arch.eps @@ -0,0 +1,337 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: graphviz version 2.38.0 (20140413.2041) +%%Title: %3 +%%Pages: 1 +%%BoundingBox: 36 36 518 80 +%%EndComments +save +%%BeginProlog +/DotDict 200 dict def +DotDict begin + +/setupLatin1 { +mark +/EncodingVector 256 array def + EncodingVector 0 + +ISOLatin1Encoding 0 255 getinterval putinterval +EncodingVector 45 /hyphen put + +% Set up ISO Latin 1 character encoding +/starnetISO { + dup dup findfont dup length dict begin + { 1 index /FID ne { def }{ pop pop } ifelse + } forall + /Encoding EncodingVector def + currentdict end definefont +} def +/Times-Roman starnetISO def +/Times-Italic starnetISO def +/Times-Bold starnetISO def +/Times-BoldItalic starnetISO def +/Helvetica starnetISO def +/Helvetica-Oblique starnetISO def +/Helvetica-Bold starnetISO def +/Helvetica-BoldOblique starnetISO def +/Courier starnetISO def +/Courier-Oblique starnetISO def +/Courier-Bold starnetISO def +/Courier-BoldOblique starnetISO def +cleartomark +} bind def + +%%BeginResource: procset graphviz 0 0 +/coord-font-family /Times-Roman def +/default-font-family /Times-Roman def +/coordfont coord-font-family findfont 8 scalefont def + +/InvScaleFactor 1.0 def +/set_scale { + dup 1 exch div /InvScaleFactor exch def + scale +} bind def + +% styles +/solid { [] 0 setdash } bind def +/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def +/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def +/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def +/bold { 2 setlinewidth } bind def +/filled { } bind def +/unfilled { } bind def +/rounded { } bind def +/diagonals { } bind def +/tapered { } bind def + +% hooks for setting color +/nodecolor { sethsbcolor } bind def +/edgecolor { sethsbcolor } bind def +/graphcolor { sethsbcolor } bind def +/nopcolor {pop pop pop} bind def + +/beginpage { % i j npages + /npages exch def + /j exch def + /i exch def + /str 10 string def + npages 1 gt { + gsave + coordfont setfont + 0 0 moveto + (\() show i str cvs show (,) show j str cvs show (\)) show + grestore + } if +} bind def + +/set_font { + findfont exch + scalefont setfont +} def + +% draw text fitted to its expected width +/alignedtext { % width text + /text exch def + /width exch def + gsave + width 0 gt { + [] 0 setdash + text stringwidth pop width exch sub text length div 0 text ashow + } if + grestore +} def + +/boxprim { % xcorner ycorner xsize ysize + 4 2 roll + moveto + 2 copy + exch 0 rlineto + 0 exch rlineto + pop neg 0 rlineto + closepath +} bind def + +/ellipse_path { + /ry exch def + /rx exch def + /y exch def + /x exch def + matrix currentmatrix + newpath + x y translate + rx ry scale + 0 0 1 0 360 arc + setmatrix +} bind def + +/endpage { showpage } bind def +/showpage { } def + +/layercolorseq + [ % layer color sequence - darkest to lightest + [0 0 0] + [.2 .8 .8] + [.4 .8 .8] + [.6 .8 .8] + [.8 .8 .8] + ] +def + +/layerlen layercolorseq length def + +/setlayer {/maxlayer exch def /curlayer exch def + layercolorseq curlayer 1 sub layerlen mod get + aload pop sethsbcolor + /nodecolor {nopcolor} def + /edgecolor {nopcolor} def + /graphcolor {nopcolor} def +} bind def + +/onlayer { curlayer ne {invis} if } def + +/onlayers { + /myupper exch def + /mylower exch def + curlayer mylower lt + curlayer myupper gt + or + {invis} if +} def + +/curlayer 0 def + +%%EndResource +%%EndProlog +%%BeginSetup +14 default-font-family set_font +1 setmiterlimit +% /arrowlength 10 def +% /arrowwidth 5 def + +% make sure pdfmark is harmless for PS-interpreters other than Distiller +/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse +% make '<<' and '>>' safe on PS Level 1 devices +/languagelevel where {pop languagelevel}{1} ifelse +2 lt { + userdict (<<) cvn ([) cvn load put + userdict (>>) cvn ([) cvn load put +} if + +%%EndSetup +setupLatin1 +%%Page: 1 1 +%%PageBoundingBox: 36 36 518 80 +%%PageOrientation: Portrait +0 0 1 beginpage +gsave +36 36 482 44 boxprim clip newpath +1 1 set_scale 0 rotate 40 40 translate +% Tool +gsave +1 setlinewidth +0 0 0 nodecolor +27.3 18 27.1 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +14.3 14.3 moveto 26 (Tool) alignedtext +grestore +% Adapter +gsave +1 setlinewidth +0 0 0 nodecolor +154.59 18 38.99 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +132.59 14.3 moveto 44 (Adapter) alignedtext +grestore +% Tool->Adapter +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 65.27 18 moveto +77.67 18 91.69 18 104.85 18 curveto +stroke +0 0 0 edgecolor +newpath 64.87 14.5 moveto +54.87 18 lineto +64.87 21.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 64.87 14.5 moveto +54.87 18 lineto +64.87 21.5 lineto +closepath stroke +0 0 0 edgecolor +newpath 105.17 21.5 moveto +115.17 18 lineto +105.17 14.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 105.17 21.5 moveto +115.17 18 lineto +105.17 14.5 lineto +closepath stroke +0 0 0 edgecolor +14 /Times-Roman set_font +72.6 21.8 moveto 25 (TCP) alignedtext +grestore +% SUT +gsave +1 setlinewidth +0 0 0 nodecolor +281.89 18 27.1 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +268.89 14.3 moveto 26 (SUT) alignedtext +grestore +% Adapter->SUT +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 204.24 18 moveto +217.56 18 231.77 18 244.29 18 curveto +stroke +0 0 0 edgecolor +newpath 203.86 14.5 moveto +193.86 18 lineto +203.86 21.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 203.86 14.5 moveto +193.86 18 lineto +203.86 21.5 lineto +closepath stroke +0 0 0 edgecolor +newpath 244.35 21.5 moveto +254.35 18 lineto +244.35 14.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 244.35 21.5 moveto +254.35 18 lineto +244.35 14.5 lineto +closepath stroke +0 0 0 edgecolor +14 /Times-Roman set_font +211.59 21.8 moveto 25 (TCP) alignedtext +grestore +% EchoServer +gsave +1 setlinewidth +0 0 0 nodecolor +422.18 18 51.99 18 ellipse_path stroke +0 0 0 nodecolor +14 /Times-Roman set_font +390.18 14.3 moveto 64 (EchoServer) alignedtext +grestore +% SUT->EchoServer +gsave +1 setlinewidth +0 0 0 edgecolor +newpath 319.44 18 moveto +331.77 18 345.9 18 359.63 18 curveto +stroke +0 0 0 edgecolor +newpath 319.22 14.5 moveto +309.22 18 lineto +319.22 21.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 319.22 14.5 moveto +309.22 18 lineto +319.22 21.5 lineto +closepath stroke +0 0 0 edgecolor +newpath 360.01 21.5 moveto +370.01 18 lineto +360.01 14.5 lineto +closepath fill +1 setlinewidth +solid +0 0 0 edgecolor +newpath 360.01 21.5 moveto +370.01 18 lineto +360.01 14.5 lineto +closepath stroke +0 0 0 edgecolor +14 /Times-Roman set_font +327.18 21.8 moveto 25 (TCP) alignedtext +grestore +endpage +showpage +grestore +%%PageTrailer +%%EndPage: 1 +%%Trailer +end +restore +%%EOF diff --git a/a3/graphs.viz b/a3/graphs.viz index b021f6e..5a523b1 100644 --- a/a3/graphs.viz +++ b/a3/graphs.viz @@ -45,4 +45,4 @@ digraph PythonDriverClose { "q5" -> "q6" [label = "FIN!"] /*stuur FIN! met naar GAST*/ "q6" -> "q7" [label = "ACK?"] /*krijg simpele ACK van GAST*/ "q7" -> "q8" [label = "ACK SEQ=p!"] /*stuur ACK met seqnummer aan SUT*/ -} \ No newline at end of file +} diff --git a/a3/setup.dot b/a3/setup.dot deleted file mode 100644 index fe9273f..0000000 --- a/a3/setup.dot +++ /dev/null @@ -1,8 +0,0 @@ -digraph Connection { - "Closed" -> "Listen" [label = "Listen?"] - "Listen" -> "Syn Received'" [label = "SYN?"] - "Syn Received'" -> "Syn Received" [label = "SYN+ACK!"] - "Syn Received" -> "Established" [label = "ACK?"] - "Syn Received" -> "Listen" [label = "RST?"] - "Syn Received'" -> "Listen" [label = "RST?"] -} -- 2.20.1