Wie installiert man utPLSQL?

Im ersten Teil dieser Blogreihe haben wir erkärt, was utPLSQL ist und warum man damit Testen sollte. In diesem Teil der Blogserie zeigen wir, wie man es installiert.

Die Installation:

Voraussetzung:

  • PowerShell 3.0 oder höher
  • .NET 4.0 Framework oder höher
  • Oracle Datenbankversionen: 11g R2, 12c, 12c R2, 18c, 19c

Allgemeines:

Die Installation von utPLSQL ist sehr einfach gehalten. Es gibt hier zwei Möglichkeiten, utPLSQL zu installieren. Bei der Headless-Installation wird lediglich ein Skript ausgeführt, alle Objekte werden in diesem Schritt auf einmal installiert. Bei der Standard-Installation führt man hingegen drei Skripte hintereinander aus, hier hat man ein wenig mehr Übersicht über die Installation.

utPLSQL sollte immer in einem separaten Schema installiert werden. Dieses Schema sollte dann ausschließlich für utPLSQL erstellt werden. Sowohl die Logik für die zu testenden Prozesse als auch die Tests selber sollten in separaten Schemata installiert sein.

Vorbereitung:

Bevor man überhaupt mit der Installation beginnen kann, müssen zunächst die benötigten Skripte heruntergeladen werden. Dafür führt man das folgende Powershell-Skript aus:

$archiveName = 'utPLSQL.zip'
$latestRepo = Invoke-WebRequest https://api.github.com/repos/utPLSQL/utPLSQL/releases/latest
$repo = $latestRepo.Content | Convertfrom-Json
$urlList = $repo.assets.browser_download_url
Add-Type -assembly "system.io.compression.filesystem"
foreach ($i in $urlList) {
   $fileName = $i.substring($i.LastIndexOf("/") + 1)
   if ( $fileName.substring($fileName.LastIndexOf(".") + 1) -eq 'zip' ) {
      Invoke-WebRequest $i -OutFile $archiveName
      $fileLocation = Get-ChildItem | where {$_.Name -eq $archiveName}
      if ($fileLocation) {
         [io.compression.zipfile]::ExtractToDirectory($($fileLocation.FullName),$($fileLocation.DirectoryName))
      }
   }
}

Listing 1

Dieses Skript generiert ein Verzeichnis an demselben Ort, wo man das Skript ausgeführt hat, in dem sich alle Skripte befinden, die für die Installation von utPLSQL benötigt werden.

WICHTIG: Die Skripte sollten weder in den Verzeichnissen verschoben werden noch gelöscht werden, da die Installation sonst nicht erfolgreich durchgeführt werden kann.

Headless-Installation:

Hat man sich für die Headless-Installation entschieden, braucht man lediglich ein Skript für die gesamte utPLSQL-Installation auszuführen.  Hierbei wird zunächst ein Schema erstellt, in das utPLSQL installiert wird. Als nächstes werden alle benötigten Objekte und deren Grants erstellt. Zum Schluss bekommt der User Public alle Rechte für diese Schema. Zunächst sollte man aber sicherstellen, dass der User, welcher das Skript ausführt, auch die entsprechenden Rechte besitzt:

  • Das Skript muss als SYSDBA ausgeführt werden
  • Grant für DBMS_LOCK (für Versionen unter 18c)
  • Grant für DBMS_CRYPTO
  • Grant ADMINISTER DATABASE TRIGGER

Der User Sys besitzt zum Beispiel all diese Rechte und kann für die Installation verwendet werden.

Als nächstes sollte man sich zwischen zwei Installationsmöglichkeiten entscheiden. Man kann die Installation mit oder ohne die Installation von Triggern ausführen. Es wird geraten, die Installation mit Triggern auszuführen, da utPLSQL dadurch schneller läuft. Diese Trigger sorgen dafür, dass bei jeder Ausführung von utPLSQL nur die neuen Tests und Annotationen analysiert werden, aber nicht das ganze System.

Wenn man sich für die Installation ohne Trigger entschieden hat, wird folgendes Skript ausgeführt:

Install_headless.sql

Beispiel:

sqlplus sys/sys_pass@db as sysdba @install_headless.sql

Bei der Installation mit Triggern wird folgendes Skript ausgeführt:

Install_headles_with_trigger.sql

Beispiel:

sqlplus sys/sys_password@database as sysdba @create_utPLSQL_owner.sql ut3 ut3 users  

Bei beiden Skripten gibt es die Möglichkeit, Parameter zu übergeben, so können Schema-Name, Passwort und Tablespace definiert werden. Wird dies nicht definiert, werden die Default-Werte für die Installation verwendet:

  • Username, um den Owner von utPLSQL zu erstellen; default: ut3
  • Passwort für den utPLSQL-Owner; default: XNtxj8eEgA6X6b6f
  • Tablespace für die Profilerdaten; default: users

Installation in mehreren Schritten:

Schritt1: Erstellen eines Datenbankschemas für utPLSQL

Theoretisch könnte dieser Schritt ausgelassen werden und die utPLSQL-Objekte könnten in ein bereits bestehendes Schema installiert werden. Es wird allerdings dazu geraten, ein separates Schema für utPLSQL zu erstellen, damit man einfach die entsprechenden Rechte granten kann und alle dazugehörigen Objekte getrennt von der Projektlogik in einem Schema aufzufinden sind. Auf diese Weise werden Anwendungslogik und Testlogik strikt voneinander getrennt.

Mit dem Ausführen des folgenden Skriptes wird ein neues Datenbankschema erstellt. Alle benötigten Grants werden ebenfalls vergeben:

sqlplus sys/sys_password@database as sysdba @create_utPLSQL_owner.sql ut3 ut3 users 

Dabei müssen die folgenden Parameter übergeben werden:

  • Username für das neue Schema
  • Passwort für das Schema
  • Name des Tablespace, der für das Schema verwendet werden soll

Schritt 2: Installation von utPLSQL:

In dem zuvor erstellten Schema wird nun das utPLSQL Framework installiert. Beim Aufruf des Skripts muss dabei der Schemaname angegeben werden, den man im vorherigen Schritt definiert hat:

sqlplus admin/admins_password@database @install.sql ut3

Schritt 3: Installation der DDL Trigger:

Auch bei der Standardinstallation gilt das gleiche, wie zuvor schon bei der Headless-Installation erwähnte. Die DDL Trigger können, müssen aber nicht installiert werden. Es wird aber geraten, diese zu installieren. Bei der Standard-Installation kann dieser Schritt auch jederzeit nachgeholt werden. Aber es bietet sich an, diesen Schritt sofort bei der Installation mit auszuführen.

Um die Trigger zu installieren, muss folgendes Skript als SYSDBA im zuvor erstellten Schema ausgeführt werden:

sqlplus admin/admins_password@database @install_ddl_trigger.sql ut3

Schritt 4: Zugriffsrechte zum utPLSQL Framework für andere User:

Zunächst, bevor man überhaupt irgendwelche Rechte auf das utPLSQL-Schema erteilt, sollte man sich Gedanken machen, wem man Zugriff auf dieses Schema erlauben möchte.

Möchte man nur bestimmten Usern den Zugriff auf dieses Schema erlauben, müssen zwei Skripte ausgeführt werden. Als erstes muss das Skript zum Erstellen der Grants ausgeführt werden mit Angabe der Information, welchem Schema man die Rechte granten möchte:

create_user_grants.sql

Beispiel:

sqlplus ut3_user/ut3_password@database @create_user_grants.sql ut3 hr

Möchte man das utPLSQL-Schema für mehrere User granten, so muss dieses Skript für jeden dieser User ausgeführt werden.

Anschließend müssen die Synonyme erstellt werden. Auch hier muss das Skript für jeden User, der die Rechte bekommen soll, separat ausgeführt werden:

create_user_synonyms.sql

Beispiel:

sqlplus user/user_password@database @create_user_synonyms.sql ut3 hr

Möchte man keine Einschränkungen vornehmen bei den Zugriffsrechten und jedem User den Zugriff erlauben, so kann man direkt mit einem Skript alle benötigten Rechte erteilen:

create_synonyms_and_grants_for_public.sql

Beispiel:

sqlplus admin/admins_password@database @create_synonyms_and_grants_for_public.sql ut3  

Das Vergeben der Rechte sollte gut überlegt sein, deswegen sollte die Variante, die Rechte einzeln zu vergeben bevorzugt werden, da man sonst schnell den Überblick verlieren kann, wer welche Rechte erteilt bekommen hat und somit vielleicht ein User Rechte auf das utPLSQL-Schema hat, welcher diese nicht bekommen sollte.

Updaten auf eine andere Version:

Es gibt für utPLSQL leider kein richtiges Updateverfahren. Die einzige Möglichkeit, auf eine neue Version zu wechseln, ist eine komplette Deinstallation der alten Version und eine Installation der neuen Version.

Um alle Objekte der aktuellen utPLSQL-Version zu deinstallieren, muss das folgende Skript ausgeführt werden:

uninstall_all.sql

Hierbei bleibt das Schema bestehen. Es werden lediglich die Objekte, welche zuvor installiert wurden, deinstalliert.

Um zu erfahren, welche Version von utPLSQL man gerade auf seiner Datenbank installiert hat, kann folgende Abfrage ausgeführt werden:

select substr(ut.version(),1,60) as ut_version from dual;

Wenn man weitere Informationen zu der installierten utPLSQL-Version erhalten möchte, kann man die folgende Abfrage ausführen:

Select xmlserialize( content xmltype(ut_run_info()) as clob indent size = 2 )
  from dual;
Abbildung 1: Installation von utPLSQL
Abbildung 1: Installation von utPLSQL

Quellen:


utPLSQL – Blogserie Teil 1:

https://www.mt-itsolutions.com/blog/know-how/softwareentwicklung/utplsql-eine-einleitung/

utPLSQL – Blogserie Teil 3:

https://www.mt-itsolutions.com/blog/know-how/softwareentwicklung/utplsql-das-testen/

Jetzt teilen auf:

Jetzt kommentieren