aboutsummaryrefslogtreecommitdiffstats
path: root/example/generator.py
diff options
context:
space:
mode:
authorJeremy Erickson <jerickso@cs.unc.edu>2013-11-25 16:00:17 -0500
committerBjoern Brandenburg <bbb@mpi-sws.org>2013-11-26 18:14:57 -0500
commiteff718df52ffeb21bff6b59a5584e5b641887832 (patch)
tree2bcafa03fb5688e112c019095c9d23eca02a7bc5 /example/generator.py
parent972ff75fcdddf59db00b50e8a28414cf0894cc24 (diff)
Add example code and related end-to-end tests.
Diffstat (limited to 'example/generator.py')
-rw-r--r--example/generator.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/example/generator.py b/example/generator.py
new file mode 100644
index 0000000..41a4ed2
--- /dev/null
+++ b/example/generator.py
@@ -0,0 +1,48 @@
1#Necessary includes and stuff
2
3from schedcat.model.serialize import write
4from schedcat.generator.tasksets import mkgen, \
5 NAMED_UTILIZATIONS, \
6 NAMED_PERIODS
7from schedcat.util.time import ms2us
8import schedcat.model.resources as resources
9import os
10import random
11
12CSLENGTH = { 'short' : lambda: random.randint(1, 15),
13 'medium' : lambda: random.randint(1, 100),
14 'long' : lambda: random.randint(5, 1280), }
15
16def generate_taskset_files(util_name, period_name, cap, number):
17 generator = mkgen(NAMED_UTILIZATIONS[util_name],
18 NAMED_PERIODS[period_name])
19 generated_sets = []
20 for i in range(number):
21 taskset = generator(max_util=cap, time_conversion=ms2us)
22 filename = "{0}_{1}_{2}_{3}".format(util_name,
23 period_name, cap, i)
24 write(taskset, filename)
25 generated_sets.append(filename)
26 return generated_sets
27
28def generate_lock_taskset_files(util_name, period_name, cap,
29 cslength, nres, pacc, number):
30 generator = mkgen(NAMED_UTILIZATIONS[util_name],
31 NAMED_PERIODS[period_name])
32 generated_sets = []
33 for i in range(number):
34 taskset = generator(max_util=cap, time_conversion=ms2us)
35 resources.initialize_resource_model(taskset)
36 for task in taskset:
37 for res_id in range(nres):
38 if random.random() < pacc:
39 nreqs = random.randint(1, 5)
40 length = CSLENGTH[cslength]
41 for j in range(nreqs):
42 task.resmodel[res_id].add_request(length())
43 filename = "{0}_{1}_{2}_{3}_{4}_{5}_{6}".format(
44 util_name, period_name, cap, cslength, nres, pacc,
45 i)
46 write(taskset, filename)
47 generated_sets.append(filename)
48 return generated_sets