Hi @kite, sorry for the late reply
I would really recommend to find out what the distribution between the 2 roles is… and between the three actions … in particular, I would examine with the idea that there are really 6 actions and they are with the following distribution (for the purposes of the example )
A - 10%
B - 20%
C - 30%
D - 20%
E - 5%
F - 15%
As proposed in How to distribute VU's across different scenarios with k6 and particular this comment you can do
export default function() {
let userDistro = Math.floor(Math.random() * 100);
switch (true) {
case (userDistro <= 10):
// action A
break;
case (userDistro > 10 && userDistro <= 30):
// action B
break;
case (userDistro > 30 && userDistro <= 60):
// action C
break;
case (userDistro > 60 && userDistro <= 80):
// action D
break;
case (userDistro > 80 && userDistro <= 85):
// action E
break;
case (userDistro > 85 && userDistro <= 100):
// action F
break;
default:
// This really shouldn't be happing
}
sleep(1);
};
And with 10000 iterations over 100 vus I get:
A....................: 1063 1874.221718/s
B....................: 1993 3513.945327/s
C....................: 2949 5199.510673/s
D....................: 2037 3591.523649/s
E....................: 510 899.20327/s
F....................: 1448 2553.032029/s
which seems pretty close to what we want
If you run the above script with the actual actions and enough VUs (more than 6 for example ) you will get different VUs running a different action in parallel
You can read more about how VUs work in k6 here