See <https://builds.apache.org/job/JMeter-trunk/7512/display/redirect?page=changes>
Changes: [sitnikov.vladimir] Move Gradle plugin versions to gradle.properties, upgrade release [sitnikov.vladimir] Add NoRouteToHostException as known valid outcome of ------------------------------------------ [...truncated 206.77 KB...] No errors present in the logfile <https://builds.apache.org/job/JMeter-trunk/ws/bin/Http4ImplPreemptiveBasicAuth.log> (the file is empty) > Task :src:dist:distTar > Task :src:dist-check:batchHttp4ImplPreemptiveBasicAuthJava Creating summariser <summary> Created the tree successfully using <https://builds.apache.org/job/JMeter-trunk/ws/bin/testfiles/Http4ImplPreemptiveBasicAuth.jmx> Starting standalone test @ Wed Oct 16 15:38:08 UTC 2019 (1571240288250) Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445 > Task :src:dist:distTarSha512 > Task :src:dist:distTarSourceSha512 > Task :src:dist-check:batchHttp4ImplPreemptiveBasicAuthJava summary = 12 in 00:00:05 = 2.6/s Avg: 126 Min: 69 Max: 629 Err: 0 (0.00%) Tidying up ... @ Wed Oct 16 15:38:13 UTC 2019 (1571240293599) ... end of run No errors present in the logfile <https://builds.apache.org/job/JMeter-trunk/ws/bin/Http4ImplPreemptiveBasicAuth.log> (the file is empty) > Task :src:dist-check:batchJDBC_TESTS Creating summariser <summary> Created the tree successfully using <https://builds.apache.org/job/JMeter-trunk/ws/bin/testfiles/JDBC_TESTS.jmx> Starting standalone test @ Wed Oct 16 15:38:16 UTC 2019 (1571240296055) Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445 > Task :src:dist:distZip > Task :src:dist:distZipSha512 > Task :src:dist-check:batchJDBC_TESTS summary = 27 in 00:00:01 = 27.3/s Avg: 12 Min: 0 Max: 293 Err: 0 (0.00%) Tidying up ... @ Wed Oct 16 15:38:18 UTC 2019 (1571240298252) ... end of run WARNING: the task was configured to ignore errors in the output log Logfile contents (errors during the test, see <https://builds.apache.org/job/JMeter-trunk/ws/bin/JDBC_TESTS.log)>: 2019-10-16 15:38:18,227 ERROR o.a.j.t.JMeterThread: Error while processing sampler: 'JDBC_With_Failing_PreProcessor'. java.lang.IllegalArgumentException: Variable Name must not be null in JDBC PreProcessor at org.apache.jmeter.protocol.jdbc.processor.AbstractJDBCProcessor.process(AbstractJDBCProcessor.java:45) ~[ApacheJMeter_jdbc.jar:5.2-SNAPSHOT] at org.apache.jmeter.protocol.jdbc.processor.JDBCPreProcessor.process(JDBCPreProcessor.java:33) ~[ApacheJMeter_jdbc.jar:5.2-SNAPSHOT] at org.apache.jmeter.threads.JMeterThread.runPreProcessors(JMeterThread.java:941) ~[ApacheJMeter_core.jar:5.2-SNAPSHOT] at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:542) ~[ApacheJMeter_core.jar:5.2-SNAPSHOT] at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:490) [ApacheJMeter_core.jar:5.2-SNAPSHOT] at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:257) [ApacheJMeter_core.jar:5.2-SNAPSHOT] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191] 2019-10-16 15:38:18,238 ERROR o.a.j.t.JMeterThread: Error while processing sampler: 'JDBC_With_Failing_PostProcessor'. java.lang.IllegalArgumentException: Variable Name must not be null in JDBC PostProcessor at org.apache.jmeter.protocol.jdbc.processor.AbstractJDBCProcessor.process(AbstractJDBCProcessor.java:45) ~[ApacheJMeter_jdbc.jar:5.2-SNAPSHOT] at org.apache.jmeter.protocol.jdbc.processor.JDBCPostProcessor.process(JDBCPostProcessor.java:33) ~[ApacheJMeter_jdbc.jar:5.2-SNAPSHOT] at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:931) ~[ApacheJMeter_core.jar:5.2-SNAPSHOT] at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:569) ~[ApacheJMeter_core.jar:5.2-SNAPSHOT] at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:490) [ApacheJMeter_core.jar:5.2-SNAPSHOT] at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:257) [ApacheJMeter_core.jar:5.2-SNAPSHOT] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_191] 2019-10-16 15:38:18,239 WARN o.a.j.p.j.p.AbstractJDBCProcessor: SQL Problem in JDBC PreProcessor: java.sql.SQLSyntaxErrorException: unexpected token: USERS 2019-10-16 15:38:18,248 WARN o.a.j.p.j.p.AbstractJDBCProcessor: SQL Problem in JDBC PostProcessor: java.sql.SQLSyntaxErrorException: unexpected token: USERS > Task :src:dist-check:batchJMS_TESTS Creating summariser <summary> Created the tree successfully using <https://builds.apache.org/job/JMeter-trunk/ws/bin/testfiles/JMS_TESTS.jmx> Starting standalone test @ Wed Oct 16 15:38:20 UTC 2019 (1571240300336) Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445 summary + 16 in 00:00:11 = 1.5/s Avg: 365 Min: 1 Max: 2003 Err: 0 (0.00%) Active: 1 Started: 1 Finished: 0 > Task :src:dist:distZipSource > Task :src:dist-check:batchJMS_TESTS summary + 11 in 00:00:19 = 0.6/s Avg: 822 Min: 0 Max: 3000 Err: 0 (0.00%) Active: 0 Started: 1 Finished: 1 summary = 27 in 00:00:29 = 0.9/s Avg: 551 Min: 0 Max: 3000 Err: 0 (0.00%) Tidying up ... @ Wed Oct 16 15:38:50 UTC 2019 (1571240330164) ... end of run No errors present in the logfile <https://builds.apache.org/job/JMeter-trunk/ws/bin/JMS_TESTS.log> (the file is empty) > Task :src:dist-check:batchOS_TESTS Creating summariser <summary> Created the tree successfully using <https://builds.apache.org/job/JMeter-trunk/ws/bin/testfiles/OS_TESTS.jmx> Starting standalone test @ Wed Oct 16 15:38:53 UTC 2019 (1571240333270) Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445 summary = 3 in 00:00:02 = 1.8/s Avg: 342 Min: 12 Max: 1002 Err: 0 (0.00%) Tidying up ... @ Wed Oct 16 15:38:55 UTC 2019 (1571240335160) ... end of run No errors present in the logfile <https://builds.apache.org/job/JMeter-trunk/ws/bin/OS_TESTS.log> (the file is empty) > Task :src:dist-check:batchResponseDecompression Creating summariser <summary> Created the tree successfully using <https://builds.apache.org/job/JMeter-trunk/ws/bin/testfiles/ResponseDecompression.jmx> Starting standalone test @ Wed Oct 16 15:38:57 UTC 2019 (1571240337170) Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445 summary = 2 in 00:00:02 = 1.3/s Avg: 361 Min: 267 Max: 455 Err: 0 (0.00%) Tidying up ... @ Wed Oct 16 15:38:59 UTC 2019 (1571240339243) ... end of run No errors present in the logfile <https://builds.apache.org/job/JMeter-trunk/ws/bin/ResponseDecompression.log> (the file is empty) [server] Created remote object: UnicastServerRef2 [liveRef: [endpoint:[asf937.gq1.ygridcore.net:44075,SSLRMIServerSocketFactory(host=asf937.gq1.ygridcore.net/67.195.81.175, keyStoreLocation=rmi_keystore.jks, type=JKS, trustStoreLocation=rmi_keystore.jks, type=JKS, alias=rmi),SSLRMIClientSocketFactory(keyStoreLocation=rmi_keystore.jks, type=JKS, trustStoreLocation=rmi_keystore.jks, type=JKS, alias=rmi)](local),objID:[-309cde46:16dd538ee48:-7fff, 1439208714502831668]]][server] [server] Problem creating registry: java.rmi.server.ExportException: Listen failed on port: 37520; nested exception is: [server] java.io.IOException: Could not bind to asf937.gq1.ygridcore.net/67.195.81.175 using port 37520[server] [server] Continuing... [server] Server failed to start: java.rmi.RemoteException: Cannot start. See server log file.; nested exception is: [server] java.rmi.ConnectException: Connection refused to host: asf937.gq1.ygridcore.net; nested exception is: [server] java.net.ConnectException: Connection refused (Connection refused) [server] An error occurred: Cannot start. See server log file.; nested exception is: [server] java.rmi.ConnectException: Connection refused to host: asf937.gq1.ygridcore.net; nested exception is: [server] java.net.ConnectException: Connection refused (Connection refused) > Task :src:dist-check:batchServerBatchTestLocal Creating summariser <summary> Created the tree successfully using <https://builds.apache.org/job/JMeter-trunk/ws/bin/testfiles/BatchTestLocal.jmx> Configuring remote engine: asf937.gq1.ygridcore.net:37520 Connection refused to host: asf937.gq1.ygridcore.net; nested exception is: java.net.ConnectException: Connection refused (Connection refused) Failed to configure asf937.gq1.ygridcore.net:37520 Stopping remote engines Remote engines have been stopped Error in NonGUIDriver java.lang.RuntimeException: Following remote engines could not be configured:[asf937.gq1.ygridcore.net:37520] An error occurred: Error in NonGUIDriver Following remote engines could not be configured:[asf937.gq1.ygridcore.net:37520] > Task :src:dist-check:batchServerBatchTestLocal FAILED checksum-dependency elapsed time: 37805ms, configurations processed: 378 SHA-512 computation time: 2824ms (goes in parallel, it might exceed wall-clock time), files processed: 73, processed: 7MiB, skipped: 3995MiB PGP signature resolution time: 2746ms (wall-clock), resolution requests: 225, signatures resolved: 235 PGP key resolution time: 19979ms (wall-clock), resolution requests: 225, download time: 0ms (goes in parallel, it might exceed wall-clock time), keys downloaded: 0 PGP signature verification time: 57483ms (goes in parallel, it might exceed wall-clock time), files processed: 691, processed: 602MiB, skipped: 3358MiB FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':src:dist-check:batchServerBatchTestLocal'. > Process 'command '/usr/local/asfpackages/java/jdk1.8.0_191/bin/java'' > finished with non-zero exit value 1 * Try: Run with --info or --debug option to get more log output. Run with --scan to get full insights. * Exception is: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':src:dist-check:batchServerBatchTestLocal'. at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:166) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.accept(ExecuteActionsTaskExecuter.java:163) at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:191) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:156) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:62) at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:108) at org.gradle.api.internal.tasks.execution.ResolveBeforeExecutionOutputsTaskExecuter.execute(ResolveBeforeExecutionOutputsTaskExecuter.java:67) at org.gradle.api.internal.tasks.execution.ResolveAfterPreviousExecutionStateTaskExecuter.execute(ResolveAfterPreviousExecutionStateTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:94) at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46) at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:95) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57) at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56) at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416) at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406) at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158) at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36) at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52) at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336) at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193) at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56) Caused by: org.gradle.process.internal.ExecException: Process 'command '/usr/local/asfpackages/java/jdk1.8.0_191/bin/java'' finished with non-zero exit value 1 at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:409) at org.gradle.process.internal.DefaultJavaExecAction.execute(DefaultJavaExecAction.java:40) at org.gradle.api.tasks.JavaExec.exec(JavaExec.java:121) at org.apache.jmeter.buildtools.batchtest.BatchTest.exec(BatchTest.kt:178) at org.apache.jmeter.buildtools.batchtest.BatchTestServer.exec(BatchTestServer.kt:138) at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:103) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:49) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:42) at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:717) at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:684) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$5.run(ExecuteActionsTaskExecuter.java:476) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402) at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394) at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250) at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158) at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92) at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:461) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:444) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:93) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:237) at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$1(ExecuteStep.java:33) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:33) at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26) at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:58) at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:35) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48) at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:33) at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:39) at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73) at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54) at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:35) at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51) at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:45) at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:31) at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:208) at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:70) at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:45) at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49) at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:43) at org.gradle.internal.execution.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:32) at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38) at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24) at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96) at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:54) at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76) at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36) at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26) at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:90) at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:48) at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:69) at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:47) at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33) at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:140) ... 34 more * Get more help at https://help.gradle.org Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0. Use '--warning-mode all' to show the individual deprecation warnings. See https://docs.gradle.org/5.6.2/userguide/command_line_interface.html#sec:command_line_warnings BUILD FAILED in 7m 13s 354 actionable tasks: 241 executed, 113 up-to-date See the profiling report at: file://<https://builds.apache.org/job/JMeter-trunk/ws/build/reports/profile/profile-2019-10-16-15-32-29.html> A fine-grained performance profile is available: use the --scan option. Build step 'Invoke Gradle script' changed build result to FAILURE Build step 'Invoke Gradle script' marked build as failure Xvfb stopping Archiving artifacts [Fast Archiver] Compressed 628.38 MB of artifacts by 19.5% relative to #7511 Recording test results
