def generate_and_compare(*args, **kargs): ts = generate_taskset(*args, **kargs) (res_inf, ts_inf) = pfp_sched_test_msrp_inflate(ts) (res_ilp, ts_ilp) = pfp_sched_test_msrp_ilp(ts) global ts_count, schedulable_count ts_count += 1 if res_ilp: schedulable_count +=1 keep = False if not res_ilp and res_inf: # ILP should not say 'no' when inflation-based analysis says 'yes' print 'TS%d - FAIL: ILP -> no, but INF -> yes' % ts_count keep = True if res_ilp and res_inf: for i in range(len(ts)): if ts_inf[i].response_time < ts_ilp[i].response_time: # ILP should not never be more pessimistic print 'TS%d T%d: ILP -> %d, but INF -> %d' % \ (ts_count, i + 1, ts_inf[i].response_time, ts_ilp[i].response_time) keep = True if keep: ser.write(ts, "ts-%07d.xml" % ts_count)
def generate_taskset_files(util_name, period_name, cap, number): generator = mkgen(NAMED_UTILIZATIONS[util_name], NAMED_PERIODS[period_name]) generated_sets = [] for i in range(number): taskset = generator(max_util=cap, time_conversion=ms2us) filename = "{0}_{1}_{2}_{3}".format(util_name, period_name, cap, i) write(taskset, filename) generated_sets.append(filename) return generated_sets
def test_serialize_taskset(self): s.write(self.ts, self.f) self.f.seek(0) xs = s.load(self.f) self.assertIsInstance(xs, m.TaskSystem) self.assertEqual(len(xs), len(self.ts)) for x, t in zip(xs, self.ts): self.assertEqual(x.cost, t.cost) self.assertEqual(x.deadline, t.deadline) self.assertEqual(x.period, t.period) self.assertEqual(x.id, t.id)
def test_serialize_taskset(self): s.write(self.ts, self.f) self.f.seek(0) xs = s.load(self.f) self.assertIsInstance(xs, m.TaskSystem) self.assertEqual(len(xs), len(self.ts)) for x,t in zip(xs, self.ts): self.assertEqual(x.cost, t.cost) self.assertEqual(x.deadline, t.deadline) self.assertEqual(x.period, t.period) self.assertEqual(x.id, t.id)
def generate_taskset_files(util_name, period_name, cap, number): generator = mkgen(NAMED_UTILIZATIONS[util_name], NAMED_PERIODS[period_name]) generated_sets = [] for i in range(number): taskset = generator(max_util=cap, time_conversion=ms2us) filename = "{0}_{1}_{2}_{3}".format(util_name, period_name, cap, i) write(taskset, filename) generated_sets.append(filename) return generated_sets
def generate_lock_taskset_files(util_name, period_name, cap, cslength, nres, pacc, number): generator = mkgen(NAMED_UTILIZATIONS[util_name], NAMED_PERIODS[period_name]) generated_sets = [] for i in range(number): taskset = generator(max_util=cap, time_conversion=ms2us) resources.initialize_resource_model(taskset) for task in taskset: for res_id in range(nres): if random.random() < pacc: nreqs = random.randint(1, 5) length = CSLENGTH[cslength] for j in range(nreqs): task.resmodel[res_id].add_request(length()) filename = "{0}_{1}_{2}_{3}_{4}_{5}_{6}".format( util_name, period_name, cap, cslength, nres, pacc, i) write(taskset, filename) generated_sets.append(filename) return generated_sets
def generate_lock_taskset_files(util_name, period_name, cap, cslength, nres, pacc, number): generator = mkgen(NAMED_UTILIZATIONS[util_name], NAMED_PERIODS[period_name]) generated_sets = [] for i in range(number): taskset = generator(max_util=cap, time_conversion=ms2us) resources.initialize_resource_model(taskset) for task in taskset: for res_id in range(nres): if random.random() < pacc: nreqs = random.randint(1, 5) length = CSLENGTH[cslength] for j in range(nreqs): task.resmodel[res_id].add_request(length()) filename = "{0}_{1}_{2}_{3}_{4}_{5}_{6}".format( util_name, period_name, cap, cslength, nres, pacc, i) write(taskset, filename) generated_sets.append(filename) return generated_sets