Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden

Liferay Performance Testing

Möchte man einen Lasttest gegen ein Liferay Portal durch­füh­ren, kommt man schnell an die Stelle, dass man eine Anmeldung am Portal durch­füh­ren muss. Aufgrund des CSRF-Schutzes von Liferay reicht es aber nicht, ein­fach einen POST Request mit den Zugangsdaten gegen das Login Portlet abzu­set­zen. Man bekommt dann fol­gende Exeption:

com.liferay.portal.security.auth.PrincipalException: Invalid authen­ti­ca­tion token

Nun hat man ver­schie­dene Möglichkeiten, um dem Problem zu begegnen:

  1. Man setzt in der Datei portal-ext.properties die Property auth.token.check.enabled auf false und star­tet Liferay neu. Danach wird die Token-Prüfung übersprungen.
  2. Man imple­men­tiert einen Autologin Hook, der dafür sorgt, dass man auto­ma­tisch ange­mel­det wird.
  3. Man extra­hiert den Sicherkeits-Token aus der Response des Login Portlets und inte­griert den Token in den Login Request.

Die dritte Möglichkeit bie­tet sich an, wenn man keine Anpassungen am Portal vor­neh­men möchte und soll im Folgenden am Beispiel von JMeter näher erläu­tert werden.

Vorraussetzungen für die Liferay Sessions ist ein Cookie Manager. Zusätzlich benö­tigt man für den Loginvorgang einen Runonce Controller. Dem Runonce Controller fügt man zwei HTTP Requests und einen Regular Expression Extractor hinzu. Im ers­ten Request ruft man das Login Portlet auf. Folgender Pfad kann dafür ver­wen­det werden:

/web/guest/?p_p_id=58&p_p_state=maximized&_58_struts_action=%2Flogin%2Flogin

Der Extractor wird wie im Screenshot ersicht­lich konfiguriert:

Nun kann man den Parameter "auth­token" für den zwei­ten Login Request ver­wen­den. Der Pfad für den Request lautet:

/web/guest/?p_auth=${authtoken}&p_p_id=58&p_p_lifecycle=1&p_p_state=maximized&_58_struts_action=%2Flogin%2Flogin

Die POST Parameter las­sen sich dem nächs­ten Sceenshot ent­neh­men. Die Namen der Parameter lauten:

  • _58_login
  • _58_password
  • _58_rememberMe

Die Parameter "_58_login" und "_58_password" sind mit den vor­han­de­nen Zugangsdaten zu füllen.

Das Ergebnis des Loginvorgangs lässt sich im Results Tree prü­fen. Ein erfolg­rei­ches Login zeigt sich an dem Vorhandensein der Dockbar in der Response:

blank

Nach dem erfolg­rei­chen Login kann man nun wie gewohnt die Portalseiten im ange­mel­de­ten Zustand auf Performance testen.

Related Posts

Pin It on Pinterest