def test_schedule_matches_expected_target_throughput(self): target_throughput = random.randint(10, 1000) # this scheduler does not make use of the task, thus we won't specify it here s = scheduler.DeterministicScheduler( task=None, target_throughput=target_throughput) assert_throughput(s, target_throughput, f"target throughput=[{target_throughput}] ops/s")
def test_schedule_matches_expected_target_throughput(self): clients = random.randint(1, 16) target_throughput = random.randint(10, 1000) s = scheduler.DeterministicScheduler({ "target-throughput": target_throughput, "clients": clients }) self.assertRateEquals( s, clients / target_throughput, "%d clients with %d target throughput" % (clients, target_throughput))
def main(): def n(data, sched): curr = data[-1] if len(data) > 0 else 0 data.append(sched.next(curr)) tnd = [0] tnp = [0] yn = [0] sd = scheduler.DeterministicScheduler({"target-interval": 1}) sp = scheduler.PoissonScheduler({"target-interval": 1}) # generate data for a little bit longer time frame... for i in range(0, 20): n(tnd, sd) n(tnp, sp) yn.append(0) fig, axs = plt.subplots(2, 1, sharex=True) fig.subplots_adjust(left=0.08, right=0.98, hspace=0.5) axes = plt.gca() # ... but only show the first ten seconds which makes for a nicer picture axes.set_xlim([0, 10]) ax = axs[0] ax.plot(tnd, yn, "o-") ax.set_title("Deterministic schedule") ax = axs[1] ax.set_title("Poisson schedule") ax.plot(tnp, yn, "o-") plt.xlabel("time [s]") if len(sys.argv) == 2: output_file_path = sys.argv[1] print("Saving output to [%s]" % output_file_path) plt.savefig(output_file_path, bbox_inches="tight") plt.show()
def test_schedule_unlimited(self): # no params -> no limit s = scheduler.DeterministicScheduler({}) self.assertRateEquals(s, 0)