Statistical Aggregate report Intreprtation - testing

It might be a trivial question but please share your experience with me.
I am using Jmeter in GUI mode and added an add on "Statistical Aggregate report" Listener.
But I am unable to interpret the Graph I am getting from this Listener.How could it be useful for the performance testing. What sort of information I am getting ?
Thanks in advance

Suppose you've better study theoretical info about performance/load-testing artifacts and metrics first and than decide which listeners/graphs are necessary for your testing.
You could also look onto jmeter-plugins graphs - they are in many cases more informative/descriptive than jmeter's ones.
UPDATED:
Statistical Aggregate Report listener is kind of combination of Graph Results and Aggregate Report listeners into one chart where you get statistic for 2 important performance characteristics measurements - throughput (hits/sec) + Avg. Response Time (msec) - across the test execution time.
See both listeners descriptions for details about characteristics they are measuring:
The throughput number represents the actual number of requests/minute
the server handled. This calculation includes any delays you added to
your test and JMeter's own internal processing time. The advantage of
doing the calculation like this is that this number represents
something real - your server in fact handled that many requests per
minute, and you can increase the number of threads and/or decrease the
delays to discover your server's maximum throughput.
Roughly:
response time = "time to last byte"
latency = "time to first byte"
throughput = number of requests / time unit
For programming realization I'd better look into source code available.

I found an issue will be occurred with the third party Listener plugin "Statistical Aggregate Report" while we clear the Test Results in JMeter
Stack Trace :
ERROR - jmeter.JMeter: Uncaught exception: java.lang.AbstractMethodError
at org.apache.jmeter.gui.action.Clear.doAction(Clear.java:76)
at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:81)
at org.apache.jmeter.gui.action.ActionRouter.access$000(ActionRouter.java:40)
at org.apache.jmeter.gui.action.ActionRouter$1.run(ActionRouter.java:63)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

Related

Cursor leak on Google Play Services

I've been trying to track a cursor leak on my code and this is the only thing that strict mode is giving me. Anyone have any idea what piece of Google Play Services is causing it?
Thanks.
E/StrictMode: Finalizing a Cursor that has not been deactivated or closed. database = /data/user/0/mypackage/databases/google_app_measurement_local.db, table = null, query = select count(1) from messages
`android.database.sqlite.DatabaseObjectNotClosedException: Application did` not close the cursor or database object that was opened here
at android.database.sqlite.SQLiteCursor.<init>(SQLiteCursor.java:98)
at
android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:50)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1318)
at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1257)
at com.google.android.gms.internal.zzatv.zza(Unknown Source)
at com.google.android.gms.internal.zzatv.zza(Unknown Source)
at com.google.android.gms.internal.zzaul.zzc(Unknown Source)
at com.google.android.gms.internal.zzauj.zzb(Unknown Source)
at com.google.android.gms.internal.zzauj.zza(Unknown Source)
at com.google.android.gms.internal.zzauj$8.run(Unknown Source)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at com.google.android.gms.internal.zzaud$zzd.run(Unknown Source)

Q: How Can I use data flow with ActiveMQ in Esper?

I am Learning Esper, and I want to learn about Data flow more.
I used ActiveMQ, so I want to using data flow and EsperIO to connect ActiveMQ.
I know about AMQP using EsperIO and ActiveMQ, so I hope that is work.
but my source is got error and they didn't find ActiveMQ. So, How I can Connect with ActiveMQ and EsperIO via Data Flow EPL clause?
bellows, my Error text :
Exception in thread "Thread-1" java.lang.NoClassDefFoundError: Lcom/rabbitmq/client/Connection;
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Unknown Source)
at java.lang.Class.getDeclaredFields(Unknown Source)
at com.espertech.esper.util.JavaClassHelper.findFieldInternal(JavaClassHelper.java:1799)
at com.espertech.esper.util.JavaClassHelper.findAnnotatedFields(JavaClassHelper.java:1784)
at com.espertech.esper.dataflow.core.DataFlowServiceImpl.injectObjectProperties(DataFlowServiceImpl.java:338)
at com.espertech.esper.dataflow.core.DataFlowServiceImpl.instantiateOperator(DataFlowServiceImpl.java:320)
at com.espertech.esper.dataflow.core.DataFlowServiceImpl.instantiateOperators(DataFlowServiceImpl.java:294)
at com.espertech.esper.dataflow.core.DataFlowServiceImpl.instantiateInternal(DataFlowServiceImpl.java:226)
at com.espertech.esper.dataflow.core.DataFlowServiceImpl.instantiate(DataFlowServiceImpl.java:126)
at com.espertech.esper.dataflow.core.DataFlowServiceImpl.instantiate(DataFlowServiceImpl.java:113)
at Esper.EventReciveThread.run(EventReciveThread.java:40)
at java.lang.Thread.run(Unknown Source)
and bellows, is my EPL code :
"create dataflow writeAMQP EventBusSource -> outstream<Event>{} AMQPSink(outstream){host:'localhost', queueName: 'testQueue', collector:{class:'ObjectToAMQPCollectorSerializable'}}

OWL 2 Reasoners and custom datatypes not working

I am trying to run the Protege Reasoner, there are two reasoner available Fact++ and HermiT 1.3.7.
I tried to run the both but their is window comes and suddenly goes. It's difficult to see that one so I use the screen recorder to get that but it doesn't contain any information.
There is no error message or log message I can found.
The reasoner is not being started.
I tried to use the option Export inferred axioms as ontology and then I get the expected error message "No Reasoner intialized"
Please suggest.
EDIT 1:
Error log due to the new data type defined:
org.semanticweb.owlapi.reasoner.ReasonerInternalException: Unsupported datatype
'http://www.semanticweb.org/q49f318b/ontologies/2014/6/untitled-ontology-6#perce
ntage'
at uk.ac.manchester.cs.factplusplus.FaCTPlusPlus.getBuiltInDataType(Nati
ve Method)
at uk.ac.manchester.cs.factplusplus.owlapiv3.FaCTPlusPlusReasoner.toData
TypePointer(Unknown Source)
at uk.ac.manchester.cs.factplusplus.owlapiv3.FaCTPlusPlusReasoner$AxiomT
ranslator$DeclarationVisitorEx.visit(Unknown Source)
at uk.ac.manchester.cs.factplusplus.owlapiv3.FaCTPlusPlusReasoner$AxiomT
ranslator$DeclarationVisitorEx.visit(Unknown Source)
at uk.ac.manchester.cs.owl.owlapi.OWLDatatypeImpl.accept(OWLDatatypeImpl
.java:338)
at uk.ac.manchester.cs.factplusplus.owlapiv3.FaCTPlusPlusReasoner$AxiomT
ranslator.visit(Unknown Source)
at uk.ac.manchester.cs.factplusplus.owlapiv3.FaCTPlusPlusReasoner$AxiomT
ranslator.visit(Unknown Source)
at uk.ac.manchester.cs.owl.owlapi.OWLDeclarationAxiomImpl.accept(OWLDecl
arationAxiomImpl.java:128)
at uk.ac.manchester.cs.factplusplus.owlapiv3.FaCTPlusPlusReasoner.loadAx
iom(Unknown Source)
at uk.ac.manchester.cs.factplusplus.owlapiv3.FaCTPlusPlusReasoner.loadRe
asonerAxioms(Unknown Source)
at uk.ac.manchester.cs.factplusplus.owlapiv3.FaCTPlusPlusReasoner.<init>
(Unknown Source)
at uk.ac.manchester.cs.factplusplus.owlapiv3.FaCTPlusPlusReasonerFactory
.createReasoner(Unknown Source)
at uk.ac.manchester.cs.factplusplus.owlapiv3.FaCTPlusPlusReasonerFactory
.createReasoner(Unknown Source)
at org.protege.editor.owl.model.inference.ReasonerUtilities.createReason
er(ReasonerUtilities.java:21)
at org.protege.editor.owl.model.inference.OWLReasonerManagerImpl$Classif
icationRunner.ensureRunningReasonerInitialized(OWLReasonerManagerImpl.java:398)
at org.protege.editor.owl.model.inference.OWLReasonerManagerImpl$Classif
icationRunner.run(OWLReasonerManagerImpl.java:354)
at java.lang.Thread.run(Thread.java:745)
Ontology in use:
http://pastebin.com/L0heDLBy
The stack trace confirms that FaCT++ does not allow custom datatypes to be specified - this is currently a known limitation. I don't know about HermiT but there's a good chance the problem is the same.
Pellet used to have more flexible datatype treatment, you can try installing it and use it instead of HermiT or FaCT++

HSQLDB object name already exists

I'm trying to set up an HSQL database for testing, using version 2.2.9, Hibernate 3.6.9, and Spring 3.1.2. We had been using a local postgresql database but are making a switch for testing. I have 40-50 test classes with 200+ tests in total. Each test class works fine if run individually from eclipse. When I use Maven to compile and test everything I have test errors. At some point it seems to be trying to run my init.sql script again and create tables again. I'm getting this as my final cause:
Caused by: org.hsqldb.HsqlException: object name already exists: DUAL_ASSET_ASSETID_SEQ
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.SchemaObjectSet.checkAdd(Unknown Source)
at org.hsqldb.SchemaManager.checkSchemaObjectNotExists(Unknown Source)
at org.hsqldb.StatementSchema.setOrCheckObjectName(Unknown Source)
at org.hsqldb.StatementSchema.getResult(Unknown Source)
at org.hsqldb.StatementSchema.execute(Unknown Source)
at org.hsqldb.Session.executeCompiledStatement(Unknown Source)
at org.hsqldb.Session.executeDirectStatement(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source) ... 52 more
I tried using 'IF NOT EXISTS' when creating that table but when I go to create the sequence I'm getting the same error. So it's trying to do more than just that one table, and I can't use 'IF NOT EXISTS' on a CREATE SEQUENCE statement so I'm stuck there.
Is there any reason why my data seems to be loaded again? I'm also occasionally getting this error:
2012-10-16 10:55:48,489 [Thread-0] WARN
org.springframework.jdbc.datasource.embedded.HsqlEmbeddedDatabaseConfigurer:shutdown:46 - Could not shutdown embedded database java.sql.SQLException: Database lock acquisition failure: attempt to connect while db opening /closing
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
at org.springframework.jdbc.datasource.SimpleDriverDataSource.getConnectionFromDriver(SimpleDriverDataSource.java:140)
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149)
at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119)
at org.springframework.jdbc.datasource.embedded.AbstractEmbeddedDatabaseConfigurer.shutdown(AbstractEmbeddedDatabaseConfigurer.java:40)
at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory.shutdownDatabase(EmbeddedDatabaseFactory.java:152)
at org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactoryBean.destroy(EmbeddedDatabaseFactoryBean.java:65)
at org.springframework.beans.factory.support.DisposableBeanAdapter.destroy(DisposableBeanAdapter.java:211)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:498)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingleton(DefaultSingletonBeanRegistry.java:474)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:442)
at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1071)
at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1045)
at org.springframework.context.support.AbstractApplicationContext$1.run(AbstractApplicationContext.java:963) Caused by: org.hsqldb.HsqlException: Database lock acquisition failure: attempt to connect while db opening /closing at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
at org.hsqldb.DatabaseManager.newSession(Unknown Source) ... 16 more
The current version of HSQLDB allows CREATE SEQUENCE IF NOT EXISTS statements.
Alternatively for tests, you can simply drop the whole contents of the PUBLIC schema before creating any objects.
DROP SCHEMA PUBLIC CASCADE

No X11 DISPLAY variable was set, but this program performed an operation which requires it

I have some tests that recently failed with the following reason: No X11 DISPLAY variable was set, but this program performed an operation which requires it.
Here's the complete stack trace:
testGetDialog(simple.marauroa.application.core.IAddApplicationDialogProviderTest) Time elapsed: 112 sec <<< ERROR!
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
at java.awt.Window.<init>(Window.java:431)
at java.awt.Frame.<init>(Frame.java:403)
at java.awt.Frame.<init>(Frame.java:368)
at javax.swing.SwingUtilities$SharedOwnerFrame.<init>(SwingUtilities.java:1733)
at javax.swing.SwingUtilities.getSharedOwnerFrame(SwingUtilities.java:1810)
at javax.swing.JDialog.<init>(JDialog.java:253)
at javax.swing.JDialog.<init>(JDialog.java:187)
at javax.swing.JDialog.<init>(JDialog.java:135)
at simple.marauroa.application.core.IAddApplicationDialogProviderTest$IAddApplicationDialogProviderImpl.getDialog(IAddApplicationDialogProviderTest.java:97)
at simple.marauroa.application.core.IAddApplicationDialogProviderTest.testGetDialog(IAddApplicationDialogProviderTest.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:68)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:30)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
In the mentioned line of code is just this:
return new JDialog();
I guess is related to the Jenkins environment not having something enabled. How can this get fixed?
I can disable that test, but why should I?
You need to run your build inside a virtual (headless) graphical environment, using XVNC (or XVFB). See wiki.cloudbees.com/bin/view/DEV/Testing+GUI+applications.
Edit 20/01/2016:
The link above no longer takes you to a page with relevant information. This link shows the page as it was at the time: https://web.archive.org/web/20120717015714/http://wiki.cloudbees.com/bin/view/DEV/Testing+GUI+applications
You might also consider refactoring your code a bit to use a mock service so that tests do not need to load AWT. This will likely make tests faster and more reliable, as well as minimizing the chance that they will fail in novel environments such as a CI server.