Made corrections
This commit is contained in:
22
kapitel4.tex
22
kapitel4.tex
@@ -9,7 +9,7 @@
|
||||
|
||||
\section{Aufgaben}
|
||||
|
||||
Die \ac{API} ist die Schnittstelle des Service und außen stehenden Technologien wie der Anexia Engine.
|
||||
Die \ac{API} ist die Schnittstelle des Service und außenstehenden Technologien wie der Anexia Engine.
|
||||
Ihre Hauptaufgabe besteht darin, eine strukturierte Interaktionsmöglichkeit zu bieten, die es internen Benutzern über Systeme wie der Anexia Engine ermöglicht, \ac{BGP}-Routen mit zugehörigen \ac{BGP}-Communities in das Netzwerk zu injizieren.
|
||||
Dies geschieht durch die Annahme von \ac{JSON}-Anfragen, die spezifische Informationen enthalten, nämlich IPv4- oder IPv6-Präfixe und die entsprechenden \ac{BGP}-Communities.
|
||||
Die \ac{API} führt eine umfassende Validierung der eingehenden Daten durch, um sicherzustellen, dass die bereitgestellten Informationen korrekt und im erwarteten Format vorliegen.
|
||||
@@ -246,7 +246,7 @@ def generate_bird_files(v4_routes, v6_routes, pybird, pybird6):
|
||||
|
||||
\newpage
|
||||
|
||||
Die Methode \verb|bird_config|, welche um eine gute Struktur zu wahren zu einer gesonderten Datei und Klasse angehört, ruft die \verb|get_communities| Methode der Route Dataclass auf, um die Routen in einer von Bird lesbares Format zu wandeln.
|
||||
Die Methode \verb|bird_config|, welche um eine gute Struktur zu wahren zu einer gesonderten Datei und Klasse angehört, ruft die \verb|get_communities| Methode der Route Dataclass auf, um die Routen in ein von Bird lesbares Format zu wandeln.
|
||||
Hier wurde das Prinzip des `Separation of Concerns` nicht eingehalten.
|
||||
Im Idealfall sollte die Routenlogik und Birdlogik vollkommen voneinander getrennt sein.
|
||||
Durch die Aufteilung des Codes in abgegrenzte Bereiche wird der Code übersichtlicher und leichter verständlich.
|
||||
@@ -533,7 +533,7 @@ def create_heartbeat(consul, injector_id):
|
||||
return session_id
|
||||
\end{lstlisting}
|
||||
|
||||
Nach dem initialen Anlegen des Heartbeateintrages wird dieser alle fünf Sekunden erneuert und sicherzustellen, dass die \ac{TTL} des Eintrages nicht abläuft.
|
||||
Nach dem initialen Anlegen des Heartbeateintrages wird dieser alle fünf Sekunden erneuert um sicherzustellen, dass die \ac{TTL} des Eintrages nicht abläuft.
|
||||
|
||||
\subsection{Emergency-Mode} %TODO RNDMISC-363
|
||||
|
||||
@@ -544,7 +544,7 @@ Der Emergency-Mode fungiert als eine Art Sicherheitsvorkehrung, die sicherstellt
|
||||
Der Namensteil `Mode` lässt vermuten, dass es sich um einen tatsächlichen Operationsmodus handelt.
|
||||
Dies ist allerdings nicht ganz korrekt.
|
||||
Der Emergency-Mode ist eher als Funktionalitätserweiterung zu sehen und kann selbst dann aktiviert werden, wenn die Kommunikation zwischen \ac{API} und Injector intakt ist.
|
||||
Dies ist insbesondere nützlich, wenn dringende Änderungen an den Routingeinstellungen erforderlich sind, die nicht auf die normale Kommunikation warten können.
|
||||
%Dies ist insbesondere nützlich, wenn dringende Änderungen an den Routingeinstellungen erforderlich sind, die nicht auf die normale Kommunikation warten können.
|
||||
Um Zugriff auf die Kommandozeile zu erhalten, muss ein Nutzer sich über \ac{SSH} auf den Injector einloggen.
|
||||
Firmeninterne Automatismen stellen sicher, dass nur befugte Nutzer Zugriff auf das System haben.
|
||||
|
||||
@@ -636,7 +636,7 @@ Zur Vermeidung des Dirty read Problems, welches in der Vorlesung Datenbanken erl
|
||||
So kann ein zweiter Prozess das Emergency File erst lesen, wenn der erste Prozess den Schreibvorgang abgeschlossen hat.
|
||||
Dies dient nicht nur zur Mehrbenutzersynchronisation von mehreren Menschen, sondern hauptsächlich, dass der Hauptprozess nicht versucht das Emergency File zu lesen, während ein Operator mittels des Emergency Mode Änderungen vornimmt.
|
||||
|
||||
Da Python, beziehungsweise die benutze \ac{JSON} Bibliothek Probleme damit hatte verschachtelte \ac{JSON}s zu de- und enkodieren, wurde eine weitere Dataclass angelegt.
|
||||
Da Python, beziehungsweise die benutzte \ac{JSON} Bibliothek Probleme damit hatte verschachtelte \ac{JSON}s zu de- und enkodieren, wurde eine weitere Dataclass angelegt.
|
||||
Diese Dataclass dient nur als Container, um eine Liste an Routenobjekten anzulegen.
|
||||
|
||||
\begin{lstlisting}[language=python,
|
||||
@@ -772,9 +772,9 @@ Dieser Abschnitt erläutert die Bedeutung und den Prozess des Unit-Testings für
|
||||
|
||||
Die Verwendung von Unit-Tests bietet mehrere Vorteile.
|
||||
Sie ermöglichen die frühzeitige Erkennung von Fehlern und Unstimmigkeiten im Code.
|
||||
Darüber hinaus dienen sie als Form der Dokumentation und unterstützen Refactoring-Bemühungen, um sicherzustellen, dass Änderungen den erwarteten Verhalten nicht beeinträchtigen.
|
||||
Darüber hinaus dienen sie als Form der Dokumentation und unterstützen Refactoring-Bemühungen, um sicherzustellen, dass Änderungen das erwarteten Verhalten nicht beeinträchtigen.
|
||||
Unit-Tests schaffen Vertrauen in die Software, da sie Fehler und Probleme offenlegen, bevor sie zu potenziell schwerwiegenden Problemen werden können.
|
||||
Im Fall des Route Injection Service wurde das pytest als Testwerkzeug eingesetzt.
|
||||
Im Fall des Route Injection Service wurde pytest als Testwerkzeug eingesetzt.
|
||||
Die Testabdeckung ist von zentraler Bedeutung, da sie sicherstellt, dass jeder relevante Teil des Codes getestet wird.
|
||||
Über den gesamten Route Injection Service wurde hier eine Codeabdeckung von 97\% erreicht.
|
||||
Die Automatisierung von Unit-Tests gewährleistet, dass Tests konsistent und wiederholbar durchgeführt werden können.
|
||||
@@ -787,8 +787,8 @@ Unit Testing ist ein fortlaufender Prozess, der die Qualität und Stabilität de
|
||||
Die regelmäßige Aktualisierung und Erweiterung der Test Suite ist unerlässlich, um sicherzustellen, dass der Service den sich ändernden Anforderungen gerecht wird und robust bleibt.
|
||||
Insgesamt trägt das Unit Testing maßgeblich zur Zuverlässigkeit und Leistungsfähigkeit des Route Injection Service bei.
|
||||
|
||||
Die Überprüfung der Funktionalität einer einzelnen Methode ist eines der Hauptaufgaben von Unit-Testing.
|
||||
Da viele Methoden jedoch voneinander oder anderen Komponenten abhängig sind, müssen diese über `Mockings` ersetzt werden.
|
||||
Die Überprüfung der Funktionalität einer einzelnen Methode ist eine der Hauptaufgaben von Unit-Testing.
|
||||
Da viele Methoden jedoch voneinander oder anderen Komponenten abhängig sind, müssen diese über `Mocks` ersetzt werden.
|
||||
Mittels der Python `unittest` Bibliothek ist dies sehr einfach möglich.
|
||||
|
||||
\newpage
|
||||
@@ -831,11 +831,11 @@ class TestRespondStateToConsul(TestCase):
|
||||
)
|
||||
\end{lstlisting}
|
||||
|
||||
Die Mockings werden hier als Decorator übergeben, da die Methode anderen Methoden des Injectors aufruft und externe Abhängigkeiten wie die Consul oder Pybird Bibliothek besitzt.
|
||||
Die Mocks werden hier als Decorator übergeben, da die Methode anderen Methoden des Injectors aufruft und externe Abhängigkeiten wie die Consul oder Pybird Bibliothek besitzt.
|
||||
|
||||
\textbf{Arrange (Vorbereiten):}
|
||||
|
||||
In Zeile 8--21 werden die Rückgabewerte der Mockings und Parameter der zu überprüfenden Methode festgelegt.
|
||||
In Zeile 8--21 werden die Rückgabewerte der Mocks und Parameter der zu überprüfenden Methode festgelegt.
|
||||
|
||||
\textbf{Act (Ausführen):}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user