package com.blazemeter.jmeter.control;
import org.apache.jmeter.gui.util.PowerTableModel;
import org.apache.jmeter.sampler.DebugSampler;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jorphan.logging.LoggingManager;
import org.apache.log.Logger;
import org.junit.Assert;
import org.junit.Test;
import java.util.Arrays;
public class WeightedSwitchControllerTest {
private static final Logger log = LoggingManager.getLoggerForClass();
@Test
public void testGeneric() {
WeightedSwitchController obj = new WeightedSwitchController();
obj.addTestElement(getSampler("0"));
obj.addTestElement(getSampler("1"));
obj.addTestElement(getSampler("2"));
obj.addTestElement(getSampler("5"));
PowerTableModel mdl = new PowerTableModel(new String[]{"name", WeightedSwitchController.WEIGHTS}, new Class[]{String.class, String.class});
mdl.addRow(new String[]{"0", "0"});
mdl.addRow(new String[]{"1", "1"});
mdl.addRow(new String[]{"2", "2"});
mdl.addRow(new String[]{"5", "5"});
obj.setData(mdl);
for (int n = 0; n < 800; n++) {
Sampler s = obj.next();
log.info("Sampler: " + s.getName());
Assert.assertNotNull(s);
Assert.assertNull(obj.next());
Assert.assertNotEquals(s.getName(), "0");
}
}
private DebugSampler getSampler(String s) {
DebugSampler debugSampler = new DebugSampler();
debugSampler.setName(s);
return debugSampler;
}
@Test
public void testComb() {
long[] sums = new long[]{0L, 0L};
long[] prio = new long[]{2, 3};
long[] choices = new long[]{0, 0};
for (int i = 0; i < 100; i++) {
// inc counts
for (int k = 0; k < sums.length; k++) {
sums[k] += prio[k];
}
if (sums[0] >= sums[1]) {
// 2
sums[0] -= prio[0];
choices[0]++;
} else {
// 3
sums[1] -= prio[1];
choices[1]++;
}
// minimize nums
long min;
if (sums[0] >= sums[1]) {
min = sums[1];
} else {
min = sums[0];
}
for (int z = 0; z < sums.length; z++) {
sums[z] -= min;
}
}
System.out.print(Arrays.toString(choices));
}
}