Login
Login-Name Passwort


 
Newsletter
Werbung

Mi, 5. Februar 2014, 16:30

Software::Entwicklung

cwrap vereinfacht Tests von vernetzten Systemen

Das Samba-Projekt hat Version 1.0.0 von cwrap vorgestellt, einer Sammlung von Werkzeugen, mit denen man auf einem einzelnen Rechner Client-Server-Systeme testen kann, ohne auf Virtualisierung zurückzugreifen.

cwrap ist eine Sammlung von derzeit drei Bibliotheken, die in der Lage sind, Funktionen aus der Standard-C-Bibliothek durch spezielle Varianten zu ersetzen. Diese modifizierten Funktionen lassen sich für jeden zu testenden Prozess spezifisch konfigurieren. Im Zusammenspiel lassen sich damit recht komplexe Netzwerk-Topologien und Client-Server-Systeme testen, ohne dass man separate Rechner oder virtuelle Maschinen benötigt. Stattdessen laufen alle für den Test benötigten Programme auf einem einzelnen Rechner, wobei sie bis auf die Netzwerkverbindung weitgehend voneinander isoliert sind.

Im Rahmen der Samba-Entwicklung entstanden bereits 2005 erste Vorläufer von cwrap, die zum Beispiel für das Testen von SMB- und anderen Protokollimplementatioen und die mit make test automatisch ablaufenden Tests verwendet wurden. Jetzt wurden die Komponenten unter dem Projektnamen cwrap zusammengefasst und vervollständigt, so dass sie auch für Anwender außerhalb des Samba-Projekts nutzbar sind. cwrap wird vom Samba-Team als so nützlich für andere Projekte eingeschätzt, dass es sogar seine eigene Domain cwrap.org spendiert bekam. Der Hauptverantwortliche für cwrap im Samba-Team ist Andreas Schneider.

Die drei Bestandteile von cwrap sind socket_wrapper, nss_wrapper und uid_wrapper. socket_wrapper bildet Netzwerkverbindungen (IPv4 und IPv6) auf Unix-Sockets ab. Es emuliert über diese rein lokale Kommunikation die IP-Sockets und IP-Adressen und ermöglicht es auch, die Kommunikation aufzuzeichnen und mit Werkzeugen wie Wireshark zu analysieren.

nss_wrapper erfüllt gleich mehrere Funktionen. Es stellt frei konfigurierbare Informationen über Benutzer und Gruppen zur Verfügung, emuliert die DNS-Namensauflösung über eine frei definierbare Hosts-Datei und einen frei definierbaren Hostnamen und kann NSS-Module laden und testen.

Ein einfaches Beispiel für den Aufruf von nss_wrapper ist

LD_PRELOAD=libnss_wrapper.so NSS_WRAPPER_HOSTNAME=test.example.org <Programm>

Mit dieser Anweisung erhält das gestartete Programm, wenn es den Rechnernamen abfragt, die Antwort test.example.org.

uid_wrapper gaukelt einem Prozess vor, beliebige User- und Group-IDs annehmen zu können, einschließlich User-ID 0. Dazu werden die einschlägigen Systemaufrufe emuliert, so dass eine Anwendung sich beliebige User- und Group-IDs geben kann oder gleich der Meinung ist, als Root gestartet worden zu sein.

cwrap ist, im Gegensatz zu einer ebenfalls möglichen Lösung mit Netzwerk- und Benutzer-Namensräumen, unabhängig vom Kernel und soll unter Linux ebenso laufen wie unter BSD oder Solaris.

Werbung
Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung