From dabe9300fb780c7feb21e56c3cd3ba0fd4bd5f5a Mon Sep 17 00:00:00 2001 From: Refik Hadzialic Date: Fri, 21 Oct 2011 12:22:08 +0200 Subject: Report writing! --- notFinishedCode/Report/.test.tex.kate-swp | Bin 352 -> 0 bytes notFinishedCode/Report/test.aux | 82 ++++++++++++----------- notFinishedCode/Report/test.log | 106 ++++++++++++++++-------------- notFinishedCode/Report/test.pdf | Bin 943055 -> 1043275 bytes notFinishedCode/Report/test.tex | 16 ++++- notFinishedCode/Report/test.tex.backup | 43 ++++++------ notFinishedCode/Report/test.tex~ | 13 +++- notFinishedCode/Report/test.toc | 55 ++++++++-------- 8 files changed, 175 insertions(+), 140 deletions(-) delete mode 100644 notFinishedCode/Report/.test.tex.kate-swp (limited to 'notFinishedCode') diff --git a/notFinishedCode/Report/.test.tex.kate-swp b/notFinishedCode/Report/.test.tex.kate-swp deleted file mode 100644 index a32c8ac..0000000 Binary files a/notFinishedCode/Report/.test.tex.kate-swp and /dev/null differ diff --git a/notFinishedCode/Report/test.aux b/notFinishedCode/Report/test.aux index 807e626..04c796f 100644 --- a/notFinishedCode/Report/test.aux +++ b/notFinishedCode/Report/test.aux @@ -9,61 +9,65 @@ \citation{python} \@writefile{toc}{\contentsline {section}{\numberline {2}Requirements}{4}} \@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces }}{4}} -\@writefile{toc}{\contentsline {section}{\numberline {3}Database design}{6}} -\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces }}{6}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Logical and algorithmic requirements}{4}} +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces }}{5}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Software requirements}{5}} +\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Hardware requirements}{6}} +\@writefile{toc}{\contentsline {section}{\numberline {3}Database design}{7}} +\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces }}{7}} \citation{mysqlManual} \citation{wiki} \citation{wiki} -\@writefile{toc}{\contentsline {section}{\numberline {4}Software design}{7}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Database access}{7}} -\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces }}{7}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Controlling the cell phones}{7}} -\citation{socket} -\citation{wiki} +\@writefile{toc}{\contentsline {section}{\numberline {4}Software design}{8}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Database access}{8}} \@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces }}{8}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Client and Server class}{8}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Controlling the cell phones}{8}} +\citation{socket} \citation{wiki} \@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces }}{9}} -\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces }}{9}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Client and Server class}{9}} \citation{wiki} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Ping class}{10}} +\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces }}{10}} \@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces }}{10}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.5}Data logging}{10}} -\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces }}{10}} -\@writefile{toc}{\contentsline {subsection}{\numberline {4.6}SSH Class}{10}} -\citation{beagleDataSheet} -\@writefile{toc}{\contentsline {section}{\numberline {5}Hardware design}{11}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}BeagleBoard}{11}} +\citation{wiki} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Ping class}{11}} +\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces }}{11}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.5}Data logging}{11}} \@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces }}{11}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Cell phones}{12}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Cables for the cell phones}{12}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Server}{12}} +\@writefile{toc}{\contentsline {subsection}{\numberline {4.6}SSH Class}{11}} +\citation{beagleDataSheet} +\@writefile{toc}{\contentsline {section}{\numberline {5}Hardware design}{12}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}BeagleBoard}{12}} +\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces }}{12}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Cell phones}{13}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Cables for the cell phones}{13}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Server}{13}} \citation{spin} \citation{spin} \citation{wiki} -\@writefile{toc}{\contentsline {section}{\numberline {6}Communication protocol}{13}} -\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Handler side}{13}} -\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces }}{13}} -\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces }}{13}} -\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces }}{13}} -\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Verification of the protocol}{14}} +\@writefile{toc}{\contentsline {section}{\numberline {6}Communication protocol}{14}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.1}Handler side}{14}} +\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces }}{14}} +\@writefile{lof}{\contentsline {figure}{\numberline {12}{\ignorespaces }}{14}} +\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces }}{14}} +\@writefile{toc}{\contentsline {subsection}{\numberline {6.2}Verification of the protocol}{15}} \citation{sshTunnel} -\@writefile{toc}{\contentsline {section}{\numberline {7}Security and safety of the system}{15}} -\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Encryption of the communication channels}{15}} -\@writefile{lof}{\contentsline {figure}{\numberline {13}{\ignorespaces }}{15}} +\@writefile{toc}{\contentsline {section}{\numberline {7}Security and safety of the system}{16}} +\@writefile{toc}{\contentsline {subsection}{\numberline {7.1}Encryption of the communication channels}{16}} +\@writefile{lof}{\contentsline {figure}{\numberline {14}{\ignorespaces }}{16}} \citation{https} -\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Security on the web site}{16}} +\@writefile{toc}{\contentsline {subsection}{\numberline {7.2}Security on the web site}{17}} \citation{https} \citation{https} -\@writefile{toc}{\contentsline {section}{\numberline {8}Web page}{20}} -\@writefile{toc}{\contentsline {subsection}{\numberline {8.1}Communication between the web page and the test software}{20}} -\@writefile{toc}{\contentsline {subsection}{\numberline {8.2}Results on the web page}{20}} +\@writefile{toc}{\contentsline {section}{\numberline {8}Web page}{21}} +\@writefile{toc}{\contentsline {subsection}{\numberline {8.1}Communication between the web page and the test software}{21}} +\@writefile{toc}{\contentsline {subsection}{\numberline {8.2}Results on the web page}{21}} \citation{pChart} -\@writefile{lof}{\contentsline {figure}{\numberline {14}{\ignorespaces }}{21}} -\@writefile{toc}{\contentsline {section}{\numberline {9}How to use and start the system}{22}} -\@writefile{toc}{\contentsline {subsection}{\numberline {9.1}Required libraries}{22}} -\@writefile{toc}{\contentsline {subsection}{\numberline {9.2}Configuring hardware}{22}} -\@writefile{toc}{\contentsline {section}{\numberline {10}Conclusion}{23}} +\@writefile{lof}{\contentsline {figure}{\numberline {15}{\ignorespaces }}{22}} +\@writefile{toc}{\contentsline {section}{\numberline {9}How to use and start the system}{23}} +\@writefile{toc}{\contentsline {subsection}{\numberline {9.1}Required libraries}{23}} +\@writefile{toc}{\contentsline {subsection}{\numberline {9.2}Configuring hardware}{23}} +\@writefile{toc}{\contentsline {section}{\numberline {10}Conclusion}{24}} \bibcite{network}{1} \bibcite{python}{2} \bibcite{mysqlManual}{3} @@ -74,4 +78,4 @@ \bibcite{https}{8} \bibcite{pChart}{9} \bibcite{beagleDataSheet}{10} -\newlabel{LastPage}{{}{24}} +\newlabel{LastPage}{{}{25}} diff --git a/notFinishedCode/Report/test.log b/notFinishedCode/Report/test.log index e754a2b..4ceae69 100644 --- a/notFinishedCode/Report/test.log +++ b/notFinishedCode/Report/test.log @@ -1,4 +1,4 @@ -This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=pdflatex 2011.9.27) 21 OCT 2011 12:00 +This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=pdflatex 2011.9.27) 21 OCT 2011 12:21 entering extended mode %&-line parsing enabled. **test.tex @@ -271,20 +271,17 @@ Class scrartcl Info: You've told me to use the font selection of the element Class scrartcl Info: You've told me to use the font selection of the element (scrartcl) `sectioning' that is an alias of element `disposition' (scrartcl) on input line 3. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <10.95> on input line 4. Class scrartcl Info: You've told me to use the font selection of the element (scrartcl) `sectioning' that is an alias of element `disposition' -(scrartcl) on input line 4. -Class scrartcl Info: You've told me to use the font selection of the element -(scrartcl) `sectioning' that is an alias of element `disposition' -(scrartcl) on input line 5. -LaTeX Font Info: External font `cmex10' loaded for size -(Font) <10.95> on input line 6. +(scrartcl) on input line 7. Class scrartcl Info: You've told me to use the font selection of the element (scrartcl) `sectioning' that is an alias of element `disposition' -(scrartcl) on input line 12. +(scrartcl) on input line 8. Class scrartcl Info: You've told me to use the font selection of the element (scrartcl) `sectioning' that is an alias of element `disposition' -(scrartcl) on input line 17. +(scrartcl) on input line 15. Class scrartcl Info: You've told me to use the font selection of the element (scrartcl) `sectioning' that is an alias of element `disposition' (scrartcl) on input line 20. @@ -297,6 +294,9 @@ Class scrartcl Info: You've told me to use the font selection of the element Class scrartcl Info: You've told me to use the font selection of the element (scrartcl) `sectioning' that is an alias of element `disposition' (scrartcl) on input line 29. +Class scrartcl Info: You've told me to use the font selection of the element +(scrartcl) `sectioning' that is an alias of element `disposition' +(scrartcl) on input line 32. ) \tf@toc=\write4 \openout4 = `test.toc'. @@ -307,94 +307,98 @@ Class scrartcl Info: You've told me to use the font selection of the element File: BigPicture_new1.png Graphic file (type png) - [4 + + +File: activity_diagram.png Graphic file (type png) - <./BigPicture_new1.png>] [5] - + [4 + + <./BigPicture_new1.png>] [5 <./activity_diagram.png>] [6] File: DBRelationship.png Graphic file (type png) - -[6 <./DBRelationship.png (PNG copy)>] - + + [7 <./DBRelationship.png (PNG copy)>] + File: dbClass.png Graphic file (type png) - + File: serialPort.png Graphic file (type png) -[7 <./dbClass.png (PNG copy)>] +[8 <./dbClass.png (PNG copy)>] LaTeX Font Info: External font `cmex10' loaded for size -(Font) <9> on input line 165. +(Font) <9> on input line 175. LaTeX Font Info: External font `cmex10' loaded for size -(Font) <5> on input line 165. +(Font) <5> on input line 175. - + File: serverClass.png Graphic file (type png) - + File: ClientClass.png Graphic file (type png) -[8 <./serialPort.png (PNG copy)>] +[9 <./serialPort.png (PNG copy)>] File: ping.png Graphic file (type png) - [9 <./serverClass.png (PNG copy)> <./ClientClass.png (PNG copy)> -] + [10 <./serverClass.png (PNG copy)> <./ClientClass.png (PNG copy) +>] File: logging.png Graphic file (type png) - [10 <./ping.png (PNG copy)> <./logging.png (PNG copy)>] - + [11 <./ping.png (PNG copy)> <./logging.png (PNG copy)>] + File: bb.jpg Graphic file (type jpg) - [11 + [12 - <./bb.jpg>] [12] - + <./bb.jpg>] [13] + File: protocolCommunicationHandler.png Graphic file (type png) - File: protocolCommunicationcControllerReceiver.png Graphic file (type png) - + File: protocolCommunicationcControllerCaller.png Graphic file (type png) - [13 + [14 <./protocolCommunicationHandler.png (PNG copy)> <./protocolCommunicationcContr ollerReceiver.png (PNG copy)> <./protocolCommunicationcControllerCaller.png (PN -G copy)>] [14] - +G copy)>] [15] + File: sshTunnel.png Graphic file (type png) - [15 + [16 - <./sshTunnel.png (PNG copy)>] [16] [17] -LaTeX Font Info: Try loading font information for OMS+cmr on input line 447. + <./sshTunnel.png (PNG copy)>] [17] [18] +LaTeX Font Info: Try loading font information for OMS+cmr on input line 457. (/usr/share/texmf-texlive/tex/latex/base/omscmr.fd File: omscmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions ) LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <9> not available -(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 447. - [18] [19] [20] +(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 457. + [19] [20] [21] LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <12> not available -(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 519. +(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 529. - + File: resultsImage.png Graphic file (type png) -[21 <./resultsImage.png (PNG copy)>] [22] [23] -LaTeX Font Info: Try loading font information for T1+cmtt on input line 549. +[22 <./resultsImage.png (PNG copy)>] [23] [24] +LaTeX Font Info: Try loading font information for T1+cmtt on input line 559. (/usr/share/texmf-texlive/tex/latex/base/t1cmtt.fd File: t1cmtt.fd 1999/05/25 v2.5h Standard LaTeX font definitions ) -AED: lastpage setting LastPage [24] (./test.aux) ) +AED: lastpage setting LastPage [25] (./test.aux) ) Here is how much of TeX's memory you used: - 4930 strings out of 495061 - 68324 string characters out of 1182621 + 4935 strings out of 495061 + 68443 string characters out of 1182621 255280 words of memory out of 3000000 - 8039 multiletter control sequences out of 15000+50000 + 8043 multiletter control sequences out of 15000+50000 18484 words of font info for 43 fonts, out of 3000000 for 9000 28 hyphenation exceptions out of 8191 - 36i,11n,45p,752b,1285s stack positions out of 5000i,500n,10000p,200000b,50000s + 36i,10n,45p,752b,1285s stack positions out of 5000i,500n,10000p,200000b,50000s -Output written on test.pdf (24 pages, 943055 bytes). +Output written on test.pdf (25 pages, 1043275 bytes). PDF statistics: - 669 PDF objects out of 1000 (max. 8388607) + 676 PDF objects out of 1000 (max. 8388607) 0 named destinations out of 1000 (max. 500000) - 76 words of extra memory for PDF output out of 10000 (max. 10000000) + 81 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/notFinishedCode/Report/test.pdf b/notFinishedCode/Report/test.pdf index f47f2c5..bf54729 100644 Binary files a/notFinishedCode/Report/test.pdf and b/notFinishedCode/Report/test.pdf differ diff --git a/notFinishedCode/Report/test.tex b/notFinishedCode/Report/test.tex index 0622296..0f29a39 100644 --- a/notFinishedCode/Report/test.tex +++ b/notFinishedCode/Report/test.tex @@ -103,7 +103,7 @@ Before we had started working on our project, we had to analyze the overall netw Gradually we implemented a bit-by-bit of the final software. Every single step was accompanied by testing and validation procedures. At the end we connected all the ``black-boxes'' into one big piece of software. We have fulfilled our requests and goals and made a fully working and operable test software. Despite developing a working software, all the way along we thought about the simplicity of the usage of the software. In the following chapters we will describe in more detail our approach and how each subsystem works. \clearpage \section{Requirements} % chapter 2 -At the start of the project the requirements were not completely known but as the time passed we redefined our goals. +At the start of the project the requirements were not completely known but as the had time passed we redefined our requirements and goals. The first and the most important part at the start was to define the key goals of our team project. It was to build a test software system which could tell the operator user what is not properly working in our local University telecommunication network. Konrad and Dennis suggested us to look at figure 1 and depending on it to build our test software. @@ -115,16 +115,26 @@ Konrad and Dennis suggested us to look at figure 1 and depending on it to build Our first objective was to see what could we test without having access to the system. We installed various communication programs to see what others have done. After gaining access to the communication software we had decided to build most of the test software ourselves. Libraries, which were used, were only the ones we could not develop ourself because of the time-span of our team project. +\subsection{Logical and algorithmic requirements} +\par Another requirement was to draw a use case diagram and a simple test case diagram so that we could better identify all the problems we had to deal but also to easier follow the development of our test software. +\begin{figure}[ht!] + \centering + \includegraphics[width=100mm]{activity_diagram.png} + \caption[]{Simple algorithmic overview of a test case} +\end{figure} +\subsection{Software requirements} \par Afterward we had to choose the programming language. Since we had the freedom of choice, between the three suggested programming languages Java, C++ and Python, we made a joint decision to use Python as the main programming language in our team project. One of the requirements was to finish the team project in time, therefore our decision to use Python is justified. Using Python we could work faster and integrate our subsystems more effectively \cite{python}. Our programming language of choice is multi-platform, therefore our test software would be easy portable to other operating systems. \par Likewise we had to decide how our test software will work. One of the requirements by Dennis and Konrad was to make the software capable of being run from the terminal. -The next requirement was to make a good looking GUI so that even an operator user without Linux experience could handle the tests. +The next requirement was to make an appealing GUI so that even an user without advanced Linux experience could handle the software and read out the results. \par In addition it was required to log all the past test. Later on a machine learning algorithm or some other intelligence could be applied to deduce some error behavior of the system (e.g. an intelligent algorithm could find that part of the system fail in a combined manner). To accomplish the logging of all the tests we had to use a database system. We decided to use MySQL since it is open source and well supported. However, one should know that the test results are only stored into the database in case the test was started from the web site. -\par Another requirement was to draw a use case diagram so that we could better identify + +\subsection{Hardware requirements} +\par Beside the software requirements we had hardware requirements as well. \newpage \section{Database design} At the start our database of choice was MySQL. diff --git a/notFinishedCode/Report/test.tex.backup b/notFinishedCode/Report/test.tex.backup index 3edb31b..0622296 100644 --- a/notFinishedCode/Report/test.tex.backup +++ b/notFinishedCode/Report/test.tex.backup @@ -98,14 +98,14 @@ Prof. Dr. Gerhard Schneider\\ \vspace{1\baselineskip} Supervisors: \\ Konrad Mai % first chapter \section{Introduction and Motivation} % chapter 1 -\large In the following report, the authors will try to give you a brief insight into our team project. The goal of our project was to develop a mechanism for automatic testing of our University Telecommunication network. The Telecommunication network of University of Freiburg consists of: our own internal GSM and telephone network systems; GSM redirecting device (if one initiates a call to one of the four external GSM networks, it redirects the calls to: T-mobile, 02, Vodaphone or E-Plus); a SIP gateway for landline calls inside of Germany (sipgate.de) and international calls. Since we did not have access to internal servers, our strategy was to exploit the existing systems and infer the results out of our findings. +\large In the following report, the authors will try to give you a brief insight into our team project. The goal of our project was to develop a mechanism for automatic testing of our University Telecommunication network. The Telecommunication network of University of Freiburg consists of: our own internal GSM and telephone network systems; GSM redirecting device (if one initiates a call to one of the four external GSM networks, it redirects the calls to: T-mobile, 02, Vodaphone or E-Plus); a SIP gateway for land-line calls inside of Germany (sipgate.de) and international calls. Since we did not have access to internal servers, our strategy was to exploit the existing systems and infer the results out of our findings. Before we had started working on our project, we had to analyze the overall network to come up with test cases that contain the highest information content. The next step in our procedure was to implement our ideas into a working piece of software. Gradually we implemented a bit-by-bit of the final software. Every single step was accompanied by testing and validation procedures. At the end we connected all the ``black-boxes'' into one big piece of software. We have fulfilled our requests and goals and made a fully working and operable test software. Despite developing a working software, all the way along we thought about the simplicity of the usage of the software. In the following chapters we will describe in more detail our approach and how each subsystem works. \clearpage \section{Requirements} % chapter 2 At the start of the project the requirements were not completely known but as the time passed we redefined our goals. The first and the most important part at the start was to define the key goals of our team project. It was to build a -test software system which could tell the operator user what is not preoperly working in our local University telecommunication network. +test software system which could tell the operator user what is not properly working in our local University telecommunication network. Konrad and Dennis suggested us to look at figure 1 and depending on it to build our test software. \begin{figure}[ht!] \centering @@ -118,10 +118,13 @@ were only the ones we could not develop ourself because of the time-span of our \par Afterward we had to choose the programming language. Since we had the freedom of choice, between the three suggested programming languages Java, C++ and Python, we made a joint decision to use Python as the main programming language in our team project. One of the requirements was to finish the team project in time, therefore our decision to use Python is justified. Using Python we could work faster and integrate our subsystems more effectively \cite{python}. -Our programming language of choice is multiplatform, therefore our test software would be easy portable to other operating systems. +Our programming language of choice is multi-platform, therefore our test software would be easy portable to other operating systems. \par Likewise we had to decide how our test software will work. One of the requirements by Dennis and Konrad was to make the software capable of being run from the terminal. -The next requirement was to make a good looking GUI so that even an operator user without Linux experience could handle the tests. -\par +The next requirement was to make a good looking GUI so that even an operator user without Linux experience could handle the tests. +\par In addition it was required to log all the past test. Later on a machine learning algorithm or some other intelligence could be applied to deduce some error behavior of the system +(e.g. an intelligent algorithm could find that part of the system fail in a combined manner). To accomplish the logging of all the tests we had to use a database system. +We decided to use MySQL since it is open source and well supported. However, one should know that the test results are only stored into the database in case the test was started from the web site. +\par Another requirement was to draw a use case diagram so that we could better identify \newpage \section{Database design} At the start our database of choice was MySQL. @@ -136,7 +139,7 @@ When the \section{Software design} % section 2.1 \subsection{Database access} % subsection 2.1.1 Accessing the database is of critical value to our project, therefore we had developed our own class that limits the access to the database. In the process of developing our own class we used the MySQLdb library in Python \cite{mysqlManual}. -The database class has two working modes, a normal working mode and a debugging mode. The difference between these two modes is in the output information. In case the error handling function raises an error and it is unknown, if the debug mode is set a complete backtrace of the error will be printed out. A developer can change the mode by setting the variable \emph{debugMode=1}. The class diagram can be seen in the following figure. +The database class has two working modes, a normal working mode and a debugging mode. The difference between these two modes is in the output information. In case the error handling function raises an error and it is unknown, if the debug mode is set a complete back-trace of the error will be printed out. A developer can change the mode by setting the variable \emph{debugMode=1}. The class diagram can be seen in the following figure. \begin{figure}[ht!] \centering \includegraphics[width=100mm]{dbClass.png} @@ -145,7 +148,7 @@ The database class has two working modes, a normal working mode and a debugging The method names are self-explanatory and do not require extra explanations. All the outputs produced by the class can be found on the project wiki page \cite{wiki}. \subsection{Controlling the cell phones} Our first version of the developed program code for controlling the cell phones used predefined timed values -to send commands instead of using a state controlled approach to confirm that every command was successfuly received and executed by the cell phone. +to send commands instead of using a state controlled approach to confirm that every command was successfully received and executed by the cell phone. It meant we had to make an enormous number of assumptions. In comparison to our second approach, to build a state controlled cell phone control class, our first approach was inferior and slower. The state controlled method connected two cell phones, on the same base station, up to 15 times faster than the timed approach. \begin{figure}[ht!] @@ -153,7 +156,7 @@ our first approach was inferior and slower. The state controlled method connecte \includegraphics[width=80mm]{serialPort.png} \caption[]{GSM class diagram for controlling the cell phones} \end{figure} -One can easyly apply the class just by correctly defining the parameters: port address, baud rate and timeout. The former two are self-explanatory and the timeout parameter is used to define when the alarm function should raise a timeout exception. +One can easily apply the class just by correctly defining the parameters: port address, baud rate and timeout. The former two are self-explanatory and the timeout parameter is used to define when the alarm function should raise a timeout exception. A timeout exception gets raised when the cell phone does not respond (i.e. when the cell phone enters a deadlock or delayed state.) We had used the serial port library inside of Python although we use USB cables to connect to our cell phones. One should be aware that our USB cables create a virtual serial port. More details on class design and an example can be found on our project wiki \cite{wiki}. \subsection{Client and Server class} @@ -210,7 +213,7 @@ Source Community. \begin{figure}[ht!] \centering \includegraphics[width=130mm]{bb.jpg} - \caption[]{BeagleBoard, a linux-on-chip board where our controller software runs the GSM device } + \caption[]{BeagleBoard, a Linux-on-chip board where our controller software runs the GSM device } \end{figure} It has been equipped with a minimum set of features to allow the user to experience the power of the OMAP3530 and is not intended as a full development @@ -234,14 +237,14 @@ Due to the fact that we had used 5 cell phones on a single computer, the best so Konrad bought 5 cables for 5 Siemens S55 cell phones. All of the cables have an USB2Serial chip converter inside of them. Once they were plugged into the USB port, Ubuntu automatically recognized the cables and installed the drivers. The virtual serial ports were created and could be found on \emph{/dev/ttyUSBx}, where $x$ is the automatically assigned number for the port. -Some of the cables had the cability to charge the Siemens S55 phones. +Some of the cables had the capability to charge the Siemens S55 phones. Konrad had opened several cables to solder the power supplies to some contacts and the problem was solved for all of the cables. \subsection{Server} -We were given an old Pentium 3 computer where we installed Ubuntu Linux. Configured the Appache web server and MySQL. +We were given an old Pentium 3 computer where we installed Ubuntu Linux. Configured the Apache web server and MySQL. \clearpage \section{Communication protocol} -\subsection{Hanlder side} +\subsection{Handler side} \begin{figure}[ht!] \centering \includegraphics[width=130mm]{protocolCommunicationHandler.png} @@ -313,7 +316,7 @@ It is of vital importance that only as few as possible people have access to our All the time, while we were working on the project, we were made aware of this issue by Denis and Konrad. We decided to use asymmetric key cryptography, where each side has two keys (private and public.) In the next sections we will explain in more details how we applied the methods. \subsection{Encryption of the communication channels} -At first we thoought to encrypt the data before sending them but since none of us was an expert on encryption standards the idea was rejected. Alongside the fact that none of us had been an expert in the field of cryptography, we were neither experts in the field of internet programming. One could find maybe a way to disable our server software with various hacking methods (e.g. +At first we thought to encrypt the data before sending them but since none of us was an expert on encryption standards the idea was rejected. Alongside the fact that none of us had been an expert in the field of cryptography, we were neither experts in the field of Internet programming. One could find maybe a way to disable our server software with various hacking methods (e.g. trying to open the port until the system runs out of memory and in our case the system which we used on the handler side was a BeagleBoard with ARM architecture running on a single chip TI OMAP processor, refer to the picture in figure 1.) We had to eliminate even the slightest possible threat in return for spending more time for debugging the test software system. Despite we were aware of all these facts, we had to choose one of the plenty implemented encryption standards on Linux. Denis and Konrad suggested using the SSH Tunneling method. @@ -324,8 +327,8 @@ Denis and Konrad suggested using the SSH Tunneling method. \caption[]{SSH Tunnel, all the communication inside the tunnel is encrypted } \end{figure} -Using the SSH Tunnel port forwading method we could hide the real port we had used for our socket connection. On the other hand we could force the socket to accept only local connections (i.e. from the machine where the handler software was running.) -The SSH Tunnel port forwarind method creates an encrypted tunnel between the two computers and then it creates two ports, one on the local and remote computer. All the data sent through the port on the local machine appear on the port at the remote machine. \newline The first problem we faced was that SSH required the username and password everytime we tried to make an SSH connection. We could avoid this problem by copying the public key from our server (where our test software runs) to the BeagleBoard \cite{sshTunnel}. +Using the SSH Tunnel port forwarding method we could hide the real port we had used for our socket connection. On the other hand we could force the socket to accept only local connections (i.e. from the machine where the handler software was running.) +The SSH Tunnel port forwarding method creates an encrypted tunnel between the two computers and then it creates two ports, one on the local and remote computer. All the data sent through the port on the local machine appear on the port at the remote machine. \newline The first problem we faced was that SSH required the username and password every time we tried to make an SSH connection. We could avoid this problem by copying the public key from our server (where our test software runs) to the BeagleBoard \cite{sshTunnel}. This can be performed by executing the following commands in the terminal shell. One has to create first the private and public keys on the local machine(i.e. server computer, where the test software runs): @@ -336,7 +339,7 @@ jsmith@local-host$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/jsmith/.ssh/id_rsa):[Enter key] Enter passphrase (empty for no passphrase): [Press enter key] -Enter same passphrase again: [Pess enter key] +Enter same passphrase again: [Press enter key] Your identification has been saved in /home/jsmith/.ssh/id_rsa. Your public key has been saved in /home/jsmith/.ssh/id_rsa.pub. The key fingerprint is: @@ -424,7 +427,7 @@ refik@ubuntu:/etc/apache2/sites-available$ sudo cp default default_original refik@ubuntu:/etc/apache2/sites-available$ sudo cp default-ssl default-ssl_original refik@ubuntu:/etc/apache2/sites-available$ sudo vim default-ssl \end{lstlisting} -\par Only the begining of the file is listed here and we have modified the line starting with \emph{DocumentRoot} +\par Only the beginning of the file is listed here and we have modified the line starting with \emph{DocumentRoot} from \emph{DocumentRoot /var/www} to \emph{DocumentRoot /var/www-ssl} (i.e. we had to redefine the location of our SSL directory.) \begin{lstlisting} @@ -542,11 +545,11 @@ If one of the fields is red it means the subsystem is not online or cannot be se %bibliography start \begin{thebibliography}{9} -\bibitem{network} \emph{Projects based on RZ-GSM}, accessed on 20.06.2011, available at +\bibitem{network} \emph{Projects based on RZ-GSM}, accessed on 10.06.2011, available at \url{http://lab.ks.uni-freiburg.de/projects/gsm/wiki}. -\bibitem{python} \emph{Projects based on RZ-GSM}, accessed on 20.06.2011, available at -\url{http://lab.ks.uni-freiburg.de/projects/gsm/wiki}. +\bibitem{python} \emph{Python Programming Language - Official Website}, accessed on 10.06.2011, available at +\url{http://www.python.org/}. \bibitem{mysqlManual} \emph{MySQLdb User's Guide}, accessed on 05.06.2011, available at \\ \url{http://mysql-python.sourceforge.net/MySQLdb.html}. diff --git a/notFinishedCode/Report/test.tex~ b/notFinishedCode/Report/test.tex~ index cb5b00f..06aa99e 100644 --- a/notFinishedCode/Report/test.tex~ +++ b/notFinishedCode/Report/test.tex~ @@ -103,7 +103,7 @@ Before we had started working on our project, we had to analyze the overall netw Gradually we implemented a bit-by-bit of the final software. Every single step was accompanied by testing and validation procedures. At the end we connected all the ``black-boxes'' into one big piece of software. We have fulfilled our requests and goals and made a fully working and operable test software. Despite developing a working software, all the way along we thought about the simplicity of the usage of the software. In the following chapters we will describe in more detail our approach and how each subsystem works. \clearpage \section{Requirements} % chapter 2 -At the start of the project the requirements were not completely known but as the time passed we redefined our goals. +At the start of the project the requirements were not completely known but as the had time passed we redefined our requirements and goals. The first and the most important part at the start was to define the key goals of our team project. It was to build a test software system which could tell the operator user what is not properly working in our local University telecommunication network. Konrad and Dennis suggested us to look at figure 1 and depending on it to build our test software. @@ -115,6 +115,14 @@ Konrad and Dennis suggested us to look at figure 1 and depending on it to build Our first objective was to see what could we test without having access to the system. We installed various communication programs to see what others have done. After gaining access to the communication software we had decided to build most of the test software ourselves. Libraries, which were used, were only the ones we could not develop ourself because of the time-span of our team project. +\subsection{Logical and algorithmic requirements} +\par Another requirement was to draw a use case diagram and a simple test case diagram so that we could better identify all the problems we had to deal but also to easier follow the development of our test software. +\begin{figure}[ht!] + \centering + \includegraphics[width=100mm]{activity_diagram.png} + \caption[]{Simple algorithmic overview of a test case} +\end{figure} +\subsection{Software requirements} \par Afterward we had to choose the programming language. Since we had the freedom of choice, between the three suggested programming languages Java, C++ and Python, we made a joint decision to use Python as the main programming language in our team project. One of the requirements was to finish the team project in time, therefore our decision to use Python is justified. Using Python we could work faster and integrate our subsystems more effectively \cite{python}. @@ -124,6 +132,9 @@ The next requirement was to make a good looking GUI so that even an operator use \par In addition it was required to log all the past test. Later on a machine learning algorithm or some other intelligence could be applied to deduce some error behavior of the system (e.g. an intelligent algorithm could find that part of the system fail in a combined manner). To accomplish the logging of all the tests we had to use a database system. We decided to use MySQL since it is open source and well supported. However, one should know that the test results are only stored into the database in case the test was started from the web site. + +\subsection{Hardware requirements} +\par Beside the software requirements we had hardware requirements as well. \newpage \section{Database design} At the start our database of choice was MySQL. diff --git a/notFinishedCode/Report/test.toc b/notFinishedCode/Report/test.toc index 2afe324..6764041 100644 --- a/notFinishedCode/Report/test.toc +++ b/notFinishedCode/Report/test.toc @@ -1,29 +1,32 @@ \select@language {english} \contentsline {section}{\numberline {1}Introduction and Motivation}{3} \contentsline {section}{\numberline {2}Requirements}{4} -\contentsline {section}{\numberline {3}Database design}{6} -\contentsline {section}{\numberline {4}Software design}{7} -\contentsline {subsection}{\numberline {4.1}Database access}{7} -\contentsline {subsection}{\numberline {4.2}Controlling the cell phones}{7} -\contentsline {subsection}{\numberline {4.3}Client and Server class}{8} -\contentsline {subsection}{\numberline {4.4}Ping class}{10} -\contentsline {subsection}{\numberline {4.5}Data logging}{10} -\contentsline {subsection}{\numberline {4.6}SSH Class}{10} -\contentsline {section}{\numberline {5}Hardware design}{11} -\contentsline {subsection}{\numberline {5.1}BeagleBoard}{11} -\contentsline {subsection}{\numberline {5.2}Cell phones}{12} -\contentsline {subsection}{\numberline {5.3}Cables for the cell phones}{12} -\contentsline {subsection}{\numberline {5.4}Server}{12} -\contentsline {section}{\numberline {6}Communication protocol}{13} -\contentsline {subsection}{\numberline {6.1}Handler side}{13} -\contentsline {subsection}{\numberline {6.2}Verification of the protocol}{14} -\contentsline {section}{\numberline {7}Security and safety of the system}{15} -\contentsline {subsection}{\numberline {7.1}Encryption of the communication channels}{15} -\contentsline {subsection}{\numberline {7.2}Security on the web site}{16} -\contentsline {section}{\numberline {8}Web page}{20} -\contentsline {subsection}{\numberline {8.1}Communication between the web page and the test software}{20} -\contentsline {subsection}{\numberline {8.2}Results on the web page}{20} -\contentsline {section}{\numberline {9}How to use and start the system}{22} -\contentsline {subsection}{\numberline {9.1}Required libraries}{22} -\contentsline {subsection}{\numberline {9.2}Configuring hardware}{22} -\contentsline {section}{\numberline {10}Conclusion}{23} +\contentsline {subsection}{\numberline {2.1}Logical and algorithmic requirements}{4} +\contentsline {subsection}{\numberline {2.2}Software requirements}{5} +\contentsline {subsection}{\numberline {2.3}Hardware requirements}{6} +\contentsline {section}{\numberline {3}Database design}{7} +\contentsline {section}{\numberline {4}Software design}{8} +\contentsline {subsection}{\numberline {4.1}Database access}{8} +\contentsline {subsection}{\numberline {4.2}Controlling the cell phones}{8} +\contentsline {subsection}{\numberline {4.3}Client and Server class}{9} +\contentsline {subsection}{\numberline {4.4}Ping class}{11} +\contentsline {subsection}{\numberline {4.5}Data logging}{11} +\contentsline {subsection}{\numberline {4.6}SSH Class}{11} +\contentsline {section}{\numberline {5}Hardware design}{12} +\contentsline {subsection}{\numberline {5.1}BeagleBoard}{12} +\contentsline {subsection}{\numberline {5.2}Cell phones}{13} +\contentsline {subsection}{\numberline {5.3}Cables for the cell phones}{13} +\contentsline {subsection}{\numberline {5.4}Server}{13} +\contentsline {section}{\numberline {6}Communication protocol}{14} +\contentsline {subsection}{\numberline {6.1}Handler side}{14} +\contentsline {subsection}{\numberline {6.2}Verification of the protocol}{15} +\contentsline {section}{\numberline {7}Security and safety of the system}{16} +\contentsline {subsection}{\numberline {7.1}Encryption of the communication channels}{16} +\contentsline {subsection}{\numberline {7.2}Security on the web site}{17} +\contentsline {section}{\numberline {8}Web page}{21} +\contentsline {subsection}{\numberline {8.1}Communication between the web page and the test software}{21} +\contentsline {subsection}{\numberline {8.2}Results on the web page}{21} +\contentsline {section}{\numberline {9}How to use and start the system}{23} +\contentsline {subsection}{\numberline {9.1}Required libraries}{23} +\contentsline {subsection}{\numberline {9.2}Configuring hardware}{23} +\contentsline {section}{\numberline {10}Conclusion}{24} -- cgit v1.2.3-55-g7522