Software Performance Engineering Research @ SUT Prof John Grundy Dean, Software & Electrical Eng
Outline - Previous / existing projects - Possible areas for R&D collaboration / collaboration support - Possible ways to engage with students / inspire next generation of performance engineers / IT professionals
SPE Research (Mostly John G s ; some other related) - Inspiration - SoftarchMTE - ArgoMTE - MaramaMTE - StressCloud - Enterprise Environment Emulation - Possible R&D projects
My interest in SPE - Performance engineering 4GL/Informix systems (late 80s!) - Teaching large-scale software engineering (90s) - CSIRO research into Middleware Technology Evaluation (late 90s / begin 00s) - Business process automation company consulting - Large utility software company consulting - Large Health IT company consulting
SoftArchMTE - Empirically test planed architecture (or re-engineered architecture) vs simulation / benchmarking - Model architecture of complex enterprise system - Model load tests - Generate client and server automatic generation of rapid prototype apps code & scripts - Deploy code/scripts to hosts - Run tests - Collected results and visualise - Change models, re-generate, re-run, compare results
Early version of Java Petshop reference app modelled
Code gen j2ee_videowebapp.xml (1) <?xml version="1.0" encoding="utf-8"?> <AppServer> <Name>j2ee_videoWebApp</Name> <Type>j2ee</Type> <RemoteObj> <Name>videoSearch</Name> <Type>jsp</Type> <StatesReturned> <State Table="video">id</State> <State Table="video">name</State> <State Table="video">description</State> <State Table="video">status</State> <State Table="video">stock</State>.. </RemoteObj> </AppServer>. Jsp.xsl <xsl:template match="remoteobj"> <xsl:for-each select="statesreturned/state"> <xsl:value-of select="."/><![cdata[<input type=text name="]]><xsl:value-of select="."/><![cdata[" size="115" value="]]><%=mybean_<xsl:value-of select="../../name"/>.get<xsl:value-of select="."/>()%>" </xsl:for-each>.. </form> </body> </html> ]]> </xsl:template> </xsl:stylesheet> Option Explicit Dim strserver, port strserver = "130.216.36.173" port = 80 Sub Main() call SendRequest1() call SendRequest2() call SendRequest1() call SendRequest2() End Sub Main (4) Sub SendRequest1() Dim oconnection, orequest, oresponse, oheaders, strstatuscode, strpath If fenabledelays = True then Test.Sleep (0) Set oconnection = Test.CreateConnection(strServer, port, false)... strpath = "/j2ee_videowebapp/videosearch.jsp" orequest.path = strpath... End Sub videosearch.jsp <html>.. id<input type=text name="id" size="115" value="<%=mybean_videosearch.getid()%>"> name<input type=text name="name" size="115" value="<%=mybean_videosearch.getname()%>"> description<input type=text name="description" size="115" value="<%=mybean_videosearch.getdescription()%>"> status<input type=text name="status" size="115" value="<%=mybean_videosearch.getstatus()%>"> stock<input type=text name="stock" size="115" value="<%=mybean_videosearch.getstock()%>"> </form> </body> </html> (2) (3)
Compile/Deploy/Run Tests Swinburne Gen, deploy, thrash, monitor Web app server Client Database 2. Deploy generated test-bed files to client, server host machines 1. Generate.jsp/.asp,.java/.c,.bat,.sql,.war etc files Database J2EE web application 3. Instruct Application Centre Test to perform tests ACT + client descriptor SoftArch/MTE/Thin 4. Display and Analyse results
Examples of Test Results via ACT Swinburne MS ACT visualisations (sorry these are 10 years old! J )
Extensions / replacements - ArgoMTE integrated into Argo/UML tool (vs stand-alone SoftArch/MTE tool) - MaramaMTE Eclipse-integrated (EMF/GEF) tool - Load modelling using stochastic form charts - probabalistic model of client load (and server-server/db load) - Generated JMeter scripts for (some) load testing - Web crawling / API crawling to synthesize load models - StressCloud latest Eclipse GMF-based tool for cloud energy/ performance testing
Swinburne Marama/MTE in use (7-8 years old pictures) Meta-model abstractions: Clients, Servers, Databases Remote objects, tables Requests, services Calls, containment, uses Operations, parameters, ports, machines, Inputs, Transitions SCIENCE TECHNOLOGY INNOVATION <jmetertestplan version="1.2" properties="1.8"> <hashtree> <TestPlan guiclass="testplangui" testclass="testplan" testname="test Plan" enabled="true"> <stringprop name="testplan.user_define_classpath"></stringprop> <stringprop name="testplan.comments"></stringprop> <boolprop name="testplan.functional_mode">false</boolprop> <boolprop name="testplan.serialize_threadgroups">false</boolprop> <elementprop name="testplan.user_defined_variables" elementtype="arguments" guiclass="argumentspanel" testclass="arguments" testname="user Defined Variables" enabled="true"> <collectionprop name="arguments.arguments"> <elementprop name="server" elementtype="argument"> <stringprop name="argument.value">localhost</stringprop> <stringprop name="argument.name">server</stringprop> <stringprop name="argument.metadata">=</stringprop> </elementprop> <elementprop name="port" elementtype="argument"> <stringprop name="argument.value">8000</stringprop> <stringprop name="argument.name">port</stringprop> <stringprop name="argument.metadata">=</stringprop> </elementprop> <elementprop name="next_page" elementtype="argument"> <stringprop name="argument.value">page_index</stringprop> <stringprop name="argument.name">next_page</stringprop> <stringprop name="argument.metadata">=</stringprop> </elementprop> </collectionprop> </elementprop> </TestPlan> <hashtree> <ThreadGroup guiclass="threadgroupgui" testclass="threadgroup" testname="page flow" enabled="true"> <stringprop name="threadgroup.ramp_time">1</stringprop> <boolprop name="threadgroup.scheduler">false</boolprop> <stringprop name="threadgroup.on_sample_error">continue</stringprop> <longprop name="threadgroup.start_time">1076438592000</longprop> <elementprop name="threadgroup.main_controller" elementtype="loopcontroller" guiclass="loopcontrolpanel" testclass="loopcontroller" testname="loop Controller" enabled="true"> <boolprop name="loopcontroller.continue_forever">false</boolprop> <stringprop name="loopcontroller.loops">1</stringprop> </elementprop> <stringprop name="threadgroup.num_threads">5</stringprop> <stringprop name="threadgroup.duration"></stringprop> <stringprop name="threadgroup.delay"></stringprop> <longprop name="threadgroup.end_time">1076438592000</longprop> </ThreadGroup> <hashtree> BUSINESS DESIGN
StressCloud - Part of ARC Discovery project - Energy and performance testing tool for virtualised systems (targeted to cloud) Cloud Server VirtualMachine Apache Tomcat VirtualMachine Apache Tomcat - Eclipse IDE modeller architecture, load model, app model (or real app) Load Test Web Service MS SQL Server... Load Test Web Service MS SQL Server - Generate, run Jmeter tests Router - Monitor VM stats PowerNode GreenWave Gateway Monitor and Load Generator StressCloud - Monitor physical machine energy usage
Generate Performance etc tests 13
Enterprise Emulation Tool - Part of ARC Linkage w CA Labs - Want to emulate large-scale deployment environment possibly 000s systems e.g. for testing CA identify manager system, PeopleSoft ERM system, Twitter server, legacy mainframe clients, - Record interaction traces e.g. LDAP binary protocol, PS SOAP messages, Twitter JSON, Mainframe text msgs - When get request message, use clustering/distance functions/translation functions to synthesize response
Swinburne
R&D Possibilities w us - Evaluate SPE tools you and us; yours and ours! - Set up SPE lab / platform / testing tools e.g. for cloud, enterprise application performance engineering - Identify new tools / extensions / improvements -> R&D engineers, PhD, Post-docs, other student projects in collaboration with you - Best practice usage of SPE tools for others to learn from - Industry experience reports of SPE approaches, tools - Other ideas?? - Co-funding: NICTA / SUT software innovation lab; Vic govt innovation fund & R&D vouchers ; PhD schols (NICTA, SUT, Govt, company) ; student interns (Vic Govt, NICTA, SUT, company)
Other collaboration opportunities - Guest lecture - Teach a unit / part of a unit - Host student projects - Host student site visits - Meet & greet w staff and students - Co-supervise R&D students, PhDs, R&D engineers, postdocs - Other ideas??