Skip to content

Commit bb5e39e

Browse files
committed
Finish Chapter 2
1 parent c9debe2 commit bb5e39e

3 files changed

Lines changed: 107 additions & 18 deletions

File tree

src/appendices/bibliography.tex

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,22 @@
4242
title={SQLite},
4343
url={https://sqlite.org/}
4444
}
45+
46+
\bib{csmith}{article}{
47+
author={Yang, Xuejun},
48+
author={Chen, Yang},
49+
author={Eide, Eric},
50+
author={Regehr, John},
51+
title={Finding and understanding bugs in C compilers},
52+
date={2011-06},
53+
publisher={Association for Computing Machinery},
54+
address={New York, NY, USA},
55+
volume={46},
56+
number={6},
57+
issn={0362-1340},
58+
url={https://doi.org/10.1145/1993316.1993532},
59+
journal={SIGPLAN Not.},
60+
pages={283--294},
61+
}
4562
\end{biblist}
4663
\end{bibdiv}

src/chapters/chapter-2.tex

Lines changed: 89 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,27 +9,98 @@ \chapter{Szoftver architektútra}
99

1010
\section{A projekt felépítés}
1111

12-
Ebben a fejezetben röviden ismertetem a szoftverkomponenseket amelyek felépítik a \textit{SuperSet} elosztott teszt
13-
keretrendszert alkamazást. Mélyebb működésükre, konkrét implementációs részleteikre, és az azokat alátámasztó
14-
indoklásokora a komponensek saját fejezeteiben fogok kitérni.
12+
Ebben a fejezetben röviden ismertetem a szoftverkomponenseket amelyek felépítik a \textit{SuperSet} elosztott teszt
13+
keretrendszert alkamazást. Mélyebb működésükre, konkrét implementációs részleteikre, és az azokat alátámasztó
14+
indoklásokora a komponensek saját fejezeteiben fogok kitérni.
1515

16-
A teszt keretrendszer hét fő szoftver komponensből áll amelyek két \emph{nem} diszjunkt halmazba sorolhatók.
16+
A teszt keretrendszer hét fő szoftver komponensből áll amelyek két \emph{nem} diszjunkt halmazba sorolhatók.
1717

18-
Az első halmaz a lokális futtatásért felelős szoftver komponenseket tartalmazza. Ebbe a halmazba tartozik a
19-
\textit{run.py} fájl által implementált \textit{SuperSet} szoftver komponens, amely névadója lett a projektnek.
18+
Az első halmaz a lokális futtatásért felelős szoftver komponenseket tartalmazza. Ebbe a halmazba tartozik a
19+
\textit{run.py} fájl által implementált \textit{SuperSet} szoftver komponens, amely névadója lett a projektnek.
2020

21-
A második halmaz az elosztott futtatáshoz szükséges szoftver komponenseket tartalmazza. Ide tartozik a
22-
\textit{client.py} fájl által implementált \textit{SuperSetConsumer} és a \textit{server.py} által implementált
23-
\textit{SuperSetProducer} szoftver komponensek.
21+
A második halmaz az elosztott futtatáshoz szükséges szoftver komponenseket tartalmazza. Ide tartozik a
22+
\textit{client.py} fájl által implementált \textit{SuperSetConsumer} és a \textit{server.py} által implementált
23+
\textit{SuperSetProducer} szoftver komponensek.
2424

25-
A két halmaz metszetében azok a szoftver komponensek szerepelnek amelyek elengedhetetlenek mind az elosztott, mind a
26-
lokális futtatáshoz. Ezek a komponensek a \textit{Gekko}, a \textit{ConfigManager}, a \textit{SystemUnderTest}
27-
(továbbiakban \textit{Sut}), illetve a program kimenet szabványos formára hozásáért felelős \textit{Reporter}.
25+
A két halmaz metszetében azok a szoftver komponensek szerepelnek amelyek elengedhetetlenek mind az elosztott, mind
26+
a lokális futtatáshoz. Ezek a komponensek a \textit{Gekko}, a \textit{ConfigManager}, a \textit{SystemUnderTest}
27+
(továbbiakban \textit{Sut}), illetve a program kimenet szabványos formára hozásáért felelős \textit{Reporter}.
2828

29-
\subsection{A \textit{SuperSet} szoftver komponens}
29+
A felvázolt struktúrát ábrázolja az alábbi Venn-diagram \ref{fig:kompdiag}.
3030

31-
A \textit{SuperSet} szoftver komponens a lokális futtatásért felelős fő komponens. Feladata a \textit{ConfigManager}
32-
szoftver komponens által előállított teszt csomagok futtatása, valamint a \textit{Gekko} szoftver komponens által
33-
előállított \textit{fuzz} típusú teszt csomagok futtatása is. Továbbá a \textit{ConfigManagertől} megkapja a tesztekre
34-
érvényes beállításokat is, azok kapcsolatatival és kizárásaival, így megalkotja a futtatási mátrixot. Kimenetét egy
35-
\textit{SQLite} \cite{sqlite} adatbázisban tárolja.
31+
\begin{figure}
32+
\centering
33+
\begin{tikzpicture}
34+
\begin{scope} [fill opacity=.3]
35+
\draw (-5,5) rectangle (6,-3);
36+
\draw[fill=red, draw=black] (-1.5,1) circle (3);
37+
\draw[fill=blue, draw=black] (1.5,1) ellipse (4 and 3);
38+
39+
\node[fill opacity=.6] at (-2,4.5) {\LARGE\textbf{Lokális}};
40+
\node[fill opacity=.6] at (2.5,4.5) {\LARGE\textbf{Elosztott}};
41+
42+
\node[fill opacity=.8] at (-3.5,1) {\textit{SuperSet}};
43+
44+
\node[fill opacity=.8] at (3.3,2) {\textit{SuperSetProducer}};
45+
\node[fill opacity=.8] at (3.3,0) {\textit{SuperSetConsumer}};
46+
47+
\node[fill opacity=.8] at (-0.4,2.6) {\textit{Gekko}};
48+
\node[fill opacity=.8] at (-0.4,1.6) {\textit{Reporter}};
49+
\node[fill opacity=.8] at (-0.4,0.6) {\textit{SystemUnderTest}};
50+
\node[fill opacity=.8] at (-0.4,-0.4) {\textit{ConfigManager}};
51+
\end{scope}
52+
\end{tikzpicture}
53+
\caption{\label{fig:kompdiag} Szoftver komponens csoport diagram}
54+
\end{figure}
55+
56+
\subsection{A \textit{SuperSet} szoftver komponens}
57+
58+
A \textit{SuperSet} szoftver komponens a lokális futtatásért felelős fő komponens. Feladata a
59+
\textit{ConfigManager} szoftver komponens által előállított teszt csomagok futtatása, valamint a \textit{Gekko}
60+
szoftver komponens által előállított \textit{fuzz} típusú teszt csomagok futtatása is. Továbbá a
61+
\textit{ConfigManagertől} megkapja a tesztekre érvényes beállításokat is, azok kapcsolatatival és kizárásaival,
62+
így megalkotja a futtatási mátrixot. Kimenetét egy \textit{SQLite} \cite{sqlite} adatbázisban tárolja.
63+
64+
\subsection{A \textit{SuperSetProducer} és a \textit{SuperSetConsumer} szoftver komponensek}
65+
66+
Ez a két komponens felelős az elosztott működésért.
67+
68+
A \textit{SuperSetProducer} a szerver alkalmazás által kezelt sorba fogja rakni a kért tesztcsomagokat.
69+
Gyakorlatilag a \textit{SuperSet} szoftver komponens által végzett munka első részét végzi, tehát a
70+
\textit{Gekko} és a \textit{ConfigManager} szoftver komponensekkel kommunikál így előállítja a végső futtatási
71+
konfigurációt.
72+
73+
A \textit{SuperSetConsumer} a kliens alkalmazások oldalán van jelen. A szervertől kapott tesztcsomagokat osztja
74+
fel, futtatja le a teszt eseteket, majd aggregálja az eredményeket és visszaküldi a szerver alkalmazásnak.
75+
76+
\subsection{A \textit{Gekko} szoftver komponens}
77+
78+
A \textit{Gekko} szoftver komponens dinamikusan generál egy előre megadott mennyiségű \textit{fuzz} típusú
79+
teszt csomagot. A komponens neve az angol \emph{Generate-Convert} szókapcsolatból ered. Ez a szókapcsolat utal
80+
a működésére is. A \textit{Gekko} első lépésben egy \textit{fuzz} teszt generáló programot hív, amelynek a
81+
kiementét a második lépésben a keretrendszer által használt formátumra hozza. A \textit{Gekko} jelenleg a
82+
\textit{Csmith} \cite{csmith} programot használja, azonban könnyen bővíthető más genráló programokkal is.
83+
84+
\subsection{A \textit{ConfigManager} szoftver komponens}
85+
86+
A \textit{ConfigManager} szoftver komponens felelős a keretrendszer számára elérhetővé tenni a futás
87+
konfigurációs fájlnak a tartalmát. Ez a komponens képes a konfigurációs fájlokból \textit{Python} primitív és
88+
aggregált típusokat előállítani. A különböző konfigurációs értékekhez futás időben elérhető típusokat rendel,
89+
így a konfigurációs fájlból olvasott nyers sztringek értelmezése személyre szabható. Ezzel a mechanizmussal
90+
különböző fordítóprogramok igényeihez alakítható a konfigurációs fájl, akár teljesen különböző
91+
\textit{domain-specifikus nyelv} is implementálható.
92+
93+
\subsection{A \textit{Sut} szoftver komponens}
94+
95+
A \textit{Sut} szoftver komponens a tesztelt fordítóprogram futtatási parancsait definiálja. Három tesztelési
96+
mód létezik, \emph{fordítási}, \emph{szerkesztési}, és \emph{futtatási}, ez utóbbi mód lehetőséget ad
97+
\emph{keresztfordító programok} kimeneti fájljainak futtatására is. A komponens lehetőséget ad mind a három mód
98+
parancsainak módosítására. A \textit{Sut} komponenseket egy bővítmény rendszer tölti be, így akár az
99+
alkalmazáson kívülről is van lehetőség a tesztelési módok személyre szabására.
100+
101+
\subsection{A \textit{Reporter} szoftver komponens}
102+
103+
A \textit{Reporter} szoftver komponens készít a \textit{SuperSet} komponens kimeneti \textit{SQLite}
104+
adatbázisából, riportokat. Két mód létezik az első humán olvasható \textit{HTML} riportot készít, a második a
105+
standard \textit{JUnit XML} formátumot használja. Ez utóbbi formátum más alkalmazások által is felismerhető így
106+
lehető teszi az eredmények vizualizálását harmadik féltől származó szoftverekben is.

src/thesis.tex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
\usepackage{hyperref}
99
\usepackage{minted}
1010
\usemintedstyle{emacs}
11+
\usepackage{tikz}
1112

1213
\usepackage{chngcntr}
1314
\counterwithout{figure}{chapter}

0 commit comments

Comments
 (0)