feat: Multiple Executions for PsPingPlugin#434
feat: Multiple Executions for PsPingPlugin#434deyanp wants to merge 2 commits intoPragmaticFlow:devfrom
Conversation
|
@AntyaDev , I have 2 additional questions:
|
|
@deyanp look, Ping is just a plugin that tests physical latency. |
| RequestCountFailed: int | ||
| RoundtripTimeMin: int64 | ||
| RoundtripTimeMax: int64 | ||
| RoundtripTimeAvg: float |
There was a problem hiding this comment.
Let's simplify it :)
Let's have only RoundtripTime where you will use avg time
There was a problem hiding this comment.
yes, but do u understand that if you have > 2 ms you can stop testing
There was a problem hiding this comment.
and I don't see a big pint to have min, max here, and ok, fail
it's PING not something critical
There was a problem hiding this comment.
Well, I saw the warning you have built in, and was wondering why so. My serverside request duration is between 70 and 100ms in the best case and depending on the load goes up to 300ms per request. Why would I be bothered by 50ms pings? As long as they are stable, I can safely subtract 50ms from the results of my executions, and I am fine ... e.g.:
There was a problem hiding this comment.
Can you at least make it possible for having External Pluguns, not part of the NBomber Solution? Currently this seems to be impossibke, due to a dependency on an internal module ...
There was a problem hiding this comment.
I meant NBomber.Extensions.InternalExtensions
There was a problem hiding this comment.
not sure that I understand the problem.
There was a problem hiding this comment.
I cannot currently extract the PsPingPlugin and have outside of the NBomber project due to this dependency ... if I could then I would have my version of PsPingPlugin as I need it, and you can have the cut-down version without min/max/stdev and Executions config.
There was a problem hiding this comment.
sure, I will take a look later at it.
if you want send PR
| Hosts = hosts |> Array.map Uri | ||
| Timeout = 1_000 | ||
| } | ||
| Executions = 4 |
There was a problem hiding this comment.
let's simplify it
let's don't have it configurable but rather use it as a constant value
let's have 3 only invocations not 4
There was a problem hiding this comment.
I need to have this configurable, and to be able to increase the value, as sometimes there is a very high variability in the psping values (see my previous reply) ...
There was a problem hiding this comment.
Maybe we should run it at the start of test plus and end of the test to capture a bigger diapason?
There was a problem hiding this comment.
on the other hand, I think all this brings an accidental complexity.
This is not the primary purpose of NBomber to correctly measure PING
There was a problem hiding this comment.
Hi @deyanp
I have created a new project NBomber.Contracts
https://github.com/PragmaticFlow/NBomber/tree/v3/src/NBomber.Contracts
There was a problem hiding this comment.
Hi @AntyaDev , not sure what that brings, is it in relation to the discussion about Plugins depending on some InternalExtensions?
It turned out I just need these, so I copy-pasted them in my local project and managed to decouply the PsPingPlugin from the NBomber project:
namespace Framework.NBomber.Extensions
module InternalExtensions =
let inline isNotNull (value) =
not(isNull value)
module Option =
let ofRecord (value: 'T) =
let boxed = box(value)
if isNotNull(boxed) then Some value
else None
and
module internal Framework.NBomber.Domain.Stats.Statistics
open System
module Constants =
let StatsRounding = 2
module Converter =
let inline round (digits: int) (value: float) = Math.Round(value, digits)
I have adjusted a bit the code so that there are also a few "warmup" pings at the beginning, as otherwise I was getting some crazy ping durations ... Still getting such for Azure though, not sure why, even though I am pinging from 1 AKS cluster another AKS cluster both the same vnet and region (the legendary 2ms are not achievable ;). Same setup in GCP is much more stable for some reason ...
There was a problem hiding this comment.
The point with NBomber.Contracts is that to develop any plugin; you need to add reference on NBomber.Contracts instead of the complete NBomber projects. In this way, you don't create cycle references. In other words, you fully decoupled.
There was a problem hiding this comment.
Regarding 2ms and customization around warmup - from my perspective is a good sign that something went wrong.
But ok, I explained it already several times :)
…p in between, added WarmUpExecutions
ab0f7ed to
c3a4899
Compare
c5dde49 to
8caddac
Compare
612e45d to
7454ffd
Compare
4678a91 to
f2fbc64
Compare
9960ae0 to
824134b
Compare
60b2d02 to
16d6057
Compare
cee3bec to
7295146
Compare
4ca4c86 to
fc702e8
Compare
cdedaac to
c6d5c6e
Compare
2efc8d7 to
377a3c9
Compare
5a9d254 to
1626e74
Compare



@AntyaDev check this out (especially the naming of colums/values in PsPingPluginStatistics)