Re: [Grinder-development] tower - missing translation

Philip Aston <[email protected]> Tue, 21 Apr 2015 21:11:23 +0100
Newsgroups gmane.comp.java.grinder.user
Message-ID <[email protected]>
cc'ing grinder-use for the record.

There's no simple way to calculate TPS from response time. I'm guessing
that you think the TPS is too low, given the peak values?

The TPS reported in the summary is calculated over the duration of the
recording period. You can see this more clearly when controlling the
recording with the Swing console. I suspect the problem is that you are
not stopping the recording with the load, so all of the TPS values will
just decline. See
http://grinder.sourceforge.net/g3/console-service.html#Obtaining+the+results

- Phil

On 21/04/15 20:09, Darren Ball wrote:
> Hi Philip,
>
> Looks like this did solve the issue.
> Outside of this, there seems to be one other issue in the statistical
> calculations IMO.
>
> I have the following recorded data (below).  Given the mean time for
> the tests in MS, and looking at the TPS, the calculation does not seem
> correct.
> My tests are throttling my application with hundreds of calls a sec,
> but the TPS reflects something that seems inaccurate?  The Peak TPS
> seems off as well.  I am looking at per test statistics.
>
> Am I incorrect in my view of how these are supposed to work?
>
>
>
> {
>     "status": {
>         "sample-count": 13999,
>         "state": "Recording",
>         "description": "Collecting samples: 13999"
>     },
>     "columns": [
>         "Tests",
>         "Errors",
>         "Mean Test Time (ms)",
>         "Test Time Standard Deviation (ms)",
>         "TPS",
>         "Peak TPS"
>     ],
>     "tests": [
>         {
>             "test": 1,
>             "description": "ListCSCApp",
>             "statistics": [
>                 1811,
>                 0,
>                 16.932633903920486,
>                 18.30901962211711,
>                 0.11540469098721226,
>                 74
>             ]
>         },
>         {
>             "test": 2,
>             "description": "GetCSCApp",
>             "statistics": [
>                 1810,
>                 0,
>                 24.992265193370166,
>                 11.041105810598534,
>                 0.11534096669621986,
>                 74
>             ]
>         },
>         {
>             "test": 3,
>             "description": "ListCSCAppTables",
>             "statistics": [
>                 1811,
>                 0,
>                 25.128658199889564,
>                 10.923634896825913,
>                 0.11540469098721226,
>                 74
>             ]
>         }
>     ],
>     "totals": [
>         5432,
>         0,
>         22.350699558173783,
>         14.382227755468788,
>         0.34615034867064437,
>         222
>     ]
> }
>
> On Tue, Apr 21, 2015 at 12:52 PM, Philip Aston <[email protected]
> <mailto:[email protected]>> wrote:
>
>     OK, good to hear.
>
>     - Phil
>
>
>     On 20/04/15 20:26, Darren Ball wrote:
>>     Looks like it might have solved it. FYI.  Running an extended
>>     series to see.
>>     Thanks for the fix.
>>
>>     On Mon, Apr 20, 2015 at 3:05 PM, Darren Ball
>>     <[email protected] <mailto:[email protected]>> wrote:
>>
>>         Hi Philip,
>>         I think this is also a problem (below).  It seems that locale
>>         is set to nothing in this case and this is causing a
>>         translation in tower to throw an exception.
>>         It only happens when the agents are connecting for
>>         statistical reporting?  Rebuilding to see if your changes fix
>>         this, but I think this is slightly different.
>>
>>         -Darren
>>
>>>         Stack trace:
>>>         2015-04-18 03:12:04,104 INFO  console: The Grinder 3.12-SNAPSHOT
>>>         2015-04-18 03:12:08,092 DEBUG
>>>         net.grinder.console.web.livedata: (push :process-state) 0
>>>         2015-04-18 03:12:08,105 DEBUG
>>>         net.grinder.console.web.livedata: (push :threads) 0
>>>         2015-04-18 03:12:08,288 DEBUG
>>>         net.grinder.console.web.livedata: (push :statistics) 0
>>>         2015-04-18 03:12:08,290 DEBUG
>>>         net.grinder.console.web.livedata: (push :sample) 0
>>>         2015-04-18 03:12:08,313 DEBUG
>>>         net.grinder.console.service.bootstrap_impl: Starting HTTP
>>>         server at 0.0.0.0:6373 <http://0.0.0.0:6373/>
>>>         2015-04-18 03:12:23,532 DEBUG
>>>         net.grinder.console.service.app: request :put /properties ->
>>>         200 (53.28 ms)
>>>         2015-04-18 03:12:29,923 INFO  console: Agent i-70cc4286
>>>         [Connected]
>>>         2015-04-18 03:12:30,007 DEBUG
>>>         net.grinder.console.web.livedata: (push :process-state) 1
>>>         2015-04-18 03:12:30,010 DEBUG
>>>         net.grinder.console.web.livedata: (push :threads) 1
>>>         2015-04-18 03:12:30,986 DEBUG
>>>         net.grinder.console.web.livedata: (push :process-state) 2
>>>         2015-04-18 03:12:30,988 DEBUG
>>>         net.grinder.console.web.livedata: (push :threads) 2
>>>         2015-04-18 03:12:37,953 DEBUG
>>>         net.grinder.console.service.app: request :post
>>>         /files/distribute -> 200 (10.33 ms)
>>>         2015-04-18 03:12:38,974 DEBUG
>>>         net.grinder.console.web.livedata: (push :process-state) 3
>>>         2015-04-18 03:12:38,975 DEBUG
>>>         net.grinder.console.web.livedata: (push :threads) 3
>>>         2015-04-18 03:12:51,746 DEBUG
>>>         net.grinder.console.service.app: request :post
>>>         /agents/start-workers -> 200 (21.76 ms)
>>>         2015-04-18 03:13:01,427 INFO  console: Agent i-70cc4286
>>>         [Connected] { Worker i-70cc4286-0 [Ready] }
>>>         2015-04-18 03:13:01,502 DEBUG
>>>         net.grinder.console.web.livedata: (push :process-state) 4
>>>         2015-04-18 03:13:01,503 DEBUG
>>>         net.grinder.console.web.livedata: (push :threads) 4
>>>         2015-04-18 03:13:03,926 INFO  console: Agent i-70cc4286
>>>         [Connected]
>>>         2015-04-18 03:13:04,002 DEBUG
>>>         net.grinder.console.web.livedata: (push :process-state) 5
>>>         2015-04-18 03:13:04,003 DEBUG
>>>         net.grinder.console.web.livedata: (push :threads) 5
>>>         2015-04-18 03:13:12,606 DEBUG
>>>         net.grinder.console.web.livedata: (push :statistics) 1
>>>         2015-04-18 03:13:12,608 DEBUG
>>>         net.grinder.console.web.livedata: (push :sample) 1
>>>         2015-04-18 03:13:12,945 INFO  console: Agent i-70cc4286
>>>         [Connected] { Worker i-70cc4286-0 [Running (1/1 thread)] }
>>>         2015-04-18 03:13:12,983 INFO  console: Collecting samples: 1
>>>         Exception in thread "Timer-0" java.lang.Exception: Invalid
>>>         locale: 
>>>         at taoensso.tower$fn__1103.invoke(tower.clj:38)
>>>         at clojure.lang.AFn.applyToHelper(AFn.java:161)
>>>         at clojure.lang.AFn.applyTo(AFn.java:151)
>>>         at clojure.core$apply.invoke(core.clj:617)
>>>         at clojure.core$memoize$fn__5049.doInvoke(core.clj:5735)
>>>         at clojure.lang.RestFn.invoke(RestFn.java:408)
>>>         at taoensso.tower$fmt_msg.doInvoke(tower.clj:177)
>>>         at clojure.lang.RestFn.applyTo(RestFn.java:142)
>>>         at clojure.core$apply.invoke(core.clj:619)
>>>         at taoensso.tower$format_msg.doInvoke(tower.clj:542)
>>>         at clojure.lang.RestFn.applyTo(RestFn.java:137)
>>>         at clojure.core$apply.invoke(core.clj:619)
>>>         at
>>>         net.grinder.translation.translate$t.doInvoke(translate.clj:52)
>>>         at clojure.lang.RestFn.invoke(RestFn.java:439)
>>>         at
>>>         net.grinder.console.service.web$eval4444$fn__4445.invoke(web.clj:69)
>>>         at clojure.lang.MultiFn.invoke(MultiFn.java:231)
>>>         at
>>>         net.grinder.console.service.web$render_process_table$iter__4482__4486$fn__4487$iter__4504__4508$fn__4509.invoke(web.clj:109)
>>>         at clojure.lang.LazySeq.sval(LazySeq.java:42)
>>>         at clojure.lang.LazySeq.seq(LazySeq.java:60)
>>>         at clojure.lang.RT.seq(RT.java:484)
>>>         at clojure.core$seq.invoke(core.clj:133)
>>>         at clojure.core$apply.invoke(core.clj:617)
>>>         at
>>>         net.grinder.console.service.web$render_process_table$iter__4482__4486$fn__4487.invoke(web.clj:105)
>>>         at clojure.lang.LazySeq.sval(LazySeq.java:42)
>>>         at clojure.lang.LazySeq.seq(LazySeq.java:60)
>>>         at clojure.lang.RT.seq(RT.java:484)
>>>         at clojure.core$seq.invoke(core.clj:133)
>>>         at clojure.core$apply.invoke(core.clj:617)
>>>         at
>>>         net.grinder.console.service.web$render_process_table.invoke(web.clj:90)
>>>         at
>>>         net.grinder.console.service.web$create_app$push_process_data__4912.invoke(web.clj:352)
>>>         at
>>>         net.grinder.console.model.processes$add_listener$fn__2111.invoke(processes.clj:116)
>>>         at clojure.lang.ARef.notifyWatches(ARef.java:98)
>>>         at clojure.lang.Atom.reset(Atom.java:101)
>>>         at clojure.core$reset_BANG_.invoke(core.clj:2178)
>>>         at
>>>         net.grinder.console.model.processes$initialise$reify__2016.update(processes.clj:48)
>>>         at
>>>         net.grinder.console.communication.ProcessStatusImplementation$3.inform(ProcessStatusImplementation.java:157)
>>>         at
>>>         net.grinder.console.communication.ProcessStatusImplementation$3.inform(ProcessStatusImplementation.java:155)
>>>         at
>>>         net.grinder.util.ListenerSupport.apply(ListenerSupport.java:104)
>>>         at
>>>         net.grinder.console.communication.ProcessStatusImplementation.update(ProcessStatusImplementation.java:154)
>>>         at
>>>         net.grinder.console.communication.ProcessStatusImplementation.access$000(ProcessStatusImplementation.java:51)
>>>         at
>>>         net.grinder.console.communication.ProcessStatusImplementation$1.run(ProcessStatusImplementation.java:103)
>>>         at java.util.TimerThread.mainLoop(Timer.java:555)
>>>         at java.util.TimerThread.run(Timer.java:505)
>>>         2015-04-18 03:13:13,107 DEBUG
>>>         net.grinder.console.web.livedata: (push :statistics) 2
>>>         2015-04-18 03:13:13,108 DEBUG
>>>         net.grinder.console.web.livedata: (push :sample) 2
>>>         ^C2015-04-18 03:13:41,966 INFO  console: missing
>>>         translation: {0}
>>>
>>>
>>>         There are other times this works for a period and then
>>>         croaks, as in this, where it does not happen until 90+
>>>         samples in.
>>>
>>>         2015-04-18 02:46:11,878 DEBUG
>>>         net.grinder.console.web.livedata: (push :statistics) 86
>>>         2015-04-18 02:46:11,879 DEBUG
>>>         net.grinder.console.web.livedata: (push :sample) 86
>>>         2015-04-18 02:46:12,880 INFO  console: Collecting samples: 86
>>>         2015-04-18 02:46:12,995 DEBUG
>>>         net.grinder.console.web.livedata: (push :statistics) 87
>>>         2015-04-18 02:46:12,996 DEBUG
>>>         net.grinder.console.web.livedata: (push :sample) 87
>>>         2015-04-18 02:46:13,996 INFO  console: Collecting samples: 87
>>>         2015-04-18 02:46:14,114 DEBUG
>>>         net.grinder.console.web.livedata: (push :statistics) 88
>>>         2015-04-18 02:46:14,116 DEBUG
>>>         net.grinder.console.web.livedata: (push :sample) 88
>>>         2015-04-18 02:46:15,118 INFO  console: Collecting samples: 88
>>>         2015-04-18 02:46:15,238 DEBUG
>>>         net.grinder.console.web.livedata: (push :statistics) 89
>>>         2015-04-18 02:46:15,239 DEBUG
>>>         net.grinder.console.web.livedata: (push :sample) 89
>>>         2015-04-18 02:46:16,240 INFO  console: Collecting samples: 89
>>>         2015-04-18 02:46:16,357 DEBUG
>>>         net.grinder.console.web.livedata: (push :statistics) 90
>>>         2015-04-18 02:46:16,358 DEBUG
>>>         net.grinder.console.web.livedata: (push :sample) 90
>>>         2015-04-18 02:46:17,358 INFO  console: Collecting samples: 90
>>>         2015-04-18 02:46:17,475 DEBUG
>>>         net.grinder.console.web.livedata: (push :statistics) 91
>>>         2015-04-18 02:46:17,476 DEBUG
>>>         net.grinder.console.web.livedata: (push :sample) 91
>>>         2015-04-18 02:46:18,477 INFO  console: Collecting samples: 91
>>>         2015-04-18 02:46:18,598 DEBUG
>>>         net.grinder.console.web.livedata: (push :statistics) 92
>>>         2015-04-18 02:46:18,599 DEBUG
>>>         net.grinder.console.web.livedata: (push :sample) 92
>>>         2015-04-18 02:46:18,638 INFO  console: Agent i-70cc4286
>>>         [Connected] { Worker i-70cc4286-1 [Running (1/1 thread)] }
>>>         Exception in thread "Timer-0" java.lang.Exception: Invalid
>>>         locale: 
>>>         at taoensso.tower$fn__1103.invoke(tower.clj:38)
>>>         at clojure.lang.AFn.applyToHelper(AFn.java:161)
>>>         at clojure.lang.AFn.applyTo(AFn.java:151)
>>>         at clojure.core$apply.invoke(core.clj:617)
>>>         at clojure.core$memoize$fn__5049.doInvoke(core.clj:5735)
>>>         at clojure.lang.RestFn.invoke(RestFn.java:408)
>>>
>>>
>>>         Environment (both nodes)
>>>         [grinder@grinderconsole ~]$ env | grep UTF
>>>         LC_ALL=en_US.UTF-8
>>>         LANG=en_US.UTF-8
>>>         LANGUAGE=en_US.UTF-8
>>>         [grinder@grinderconsole ~]$ locale
>>>         LANG=en_US.UTF-8
>>>         LC_CTYPE="en_US.UTF-8"
>>>         LC_NUMERIC="en_US.UTF-8"
>>>         LC_TIME="en_US.UTF-8"
>>>         LC_COLLATE="en_US.UTF-8"
>>>         LC_MONETARY="en_US.UTF-8"
>>>         LC_MESSAGES="en_US.UTF-8"
>>>         LC_PAPER="en_US.UTF-8"
>>>         LC_NAME="en_US.UTF-8"
>>>         LC_ADDRESS="en_US.UTF-8"
>>>         LC_TELEPHONE="en_US.UTF-8"
>>>         LC_MEASUREMENT="en_US.UTF-8"
>>>         LC_IDENTIFICATION="en_US.UTF-8"
>>>         LC_ALL=en_US.UTF-8
>>>
>>>
>>>         [grinder@grinderagent1 ~]$ env | grep UTF
>>>         LC_ALL=en_US.UTF-8
>>>         LANG=en_US.UTF-8
>>>         LANGUAGE=en_US.UTF-8
>>>         [grinder@grinderagent1 ~]$ locale
>>>         LANG=en_US.UTF-8
>>>         LC_CTYPE="en_US.UTF-8"
>>>         LC_NUMERIC="en_US.UTF-8"
>>>         LC_TIME="en_US.UTF-8"
>>>         LC_COLLATE="en_US.UTF-8"
>>>         LC_MONETARY="en_US.UTF-8"
>>>         LC_MESSAGES="en_US.UTF-8"
>>>         LC_PAPER="en_US.UTF-8"
>>>         LC_NAME="en_US.UTF-8"
>>>         LC_ADDRESS="en_US.UTF-8"
>>>         LC_TELEPHONE="en_US.UTF-8"
>>>         LC_MEASUREMENT="en_US.UTF-8"
>>>         LC_IDENTIFICATION="en_US.UTF-8"
>>>         LC_ALL=en_US.UTF-8
>>
>>
>>         On Mon, Apr 20, 2015 at 2:18 PM, Philip Aston
>>         <[email protected] <mailto:[email protected]>> wrote:
>>
>>             Thanks for the report.
>>
>>             I've pushed a fix - let me know whether this works.
>>
>>             Building a SNAPSHOT from the tip of the source tree is
>>             always going to be adventurous. But I understand you are
>>             doing so to use the later version of Jython.
>>
>>             - Phil
>>
>>
>>             On 20/04/15 16:15, Darren Ball wrote:
>>>             I am getting this error, and after talking to the owner
>>>             of Tower, he is suggesting that this is something broken
>>>             in grinder:
>>>
>>>             [grinder@ip-10-82-151-23 ~]$ ./console_headless_start2.sh 
>>>
>>>             2015-04-20 14:46:26,607 INFO  console: The Grinder
>>>             3.12-SNAPSHOT
>>>
>>>             2015-Apr-20 14:46:26 +0000 ip-10-82-151-23.localdomain
>>>             DEBUG [taoensso.tower] - Missing translation {:locales
>>>             [#<Locale en_US>], :scope nil, :ks
>>>             [:console.term/finished], :dev-mode? true, :ns clojure.core}
>>>
>>>
>>>
>>>             Anyone know why tower is reacting this way or how to fix
>>>             this?
>>>
>>>             Darren
>>>
>
>

------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF

_______________________________________________
grinder-use mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/grinder-use