package com.blazemeter.jmeter.threads.arrivals; import kg.apc.emulators.EmulatorJmeterEngine; import kg.apc.emulators.TestJMeterUtils; import org.apache.jmeter.testelement.property.CollectionProperty; import org.apache.jmeter.testelement.property.StringProperty; import org.apache.jmeter.threads.ListenerNotifier; import org.apache.jorphan.collections.ListedHashTree; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; import org.junit.BeforeClass; import org.junit.Test; import java.util.LinkedHashSet; public class FreeFormArrivalsThreadStarterTest { private static final Logger log = LoggingManager.getLoggerForClass(); @BeforeClass public static void setUp() throws Exception { TestJMeterUtils.createJmeterEnv(); } @Test public void testSchedule() throws Exception { CollectionProperty sched = new CollectionProperty(FreeFormArrivalsThreadGroup.SCHEDULE, new LinkedHashSet<>()); sched.addProperty(getRow(1, 10, 30)); sched.addProperty(getRow(0, 0, 5)); sched.addProperty(getRow(10, 1, 15)); FreeFormArrivalsThreadGroup atg = new FreeFormArrivalsThreadGroup(); atg.setProperty(sched); FreeFormArrivalsThreadStarterEmul obj = new FreeFormArrivalsThreadStarterEmul(atg); for (int n = 0; n < 60; n++) { log.info("Rate " + n + ": " + obj.getCurrentRate()); obj.addRollingTime(1000); } } private CollectionProperty getRow(int i, int i1, int i2) { CollectionProperty row = new CollectionProperty(); row.addProperty(new StringProperty("", String.valueOf(i))); row.addProperty(new StringProperty("", String.valueOf(i1))); row.addProperty(new StringProperty("", String.valueOf(i2))); return row; } private class FreeFormArrivalsThreadStarterEmul extends FreeFormArrivalsThreadStarter { public FreeFormArrivalsThreadStarterEmul(FreeFormArrivalsThreadGroup atg) { super(0, new ListenerNotifier(), new ListedHashTree(), new EmulatorJmeterEngine(), atg); startTime = System.currentTimeMillis() / 1000; rollingTime = System.currentTimeMillis(); } public void addRollingTime(int i) { rollingTime += i; } } }