diff options
author | Jeremy Erickson <jerickso@cs.unc.edu> | 2013-11-25 16:00:17 -0500 |
---|---|---|
committer | Bjoern Brandenburg <bbb@mpi-sws.org> | 2013-11-26 18:14:57 -0500 |
commit | eff718df52ffeb21bff6b59a5584e5b641887832 (patch) | |
tree | 2bcafa03fb5688e112c019095c9d23eca02a7bc5 /example/generator.py | |
parent | 972ff75fcdddf59db00b50e8a28414cf0894cc24 (diff) |
Add example code and related end-to-end tests.
Diffstat (limited to 'example/generator.py')
-rw-r--r-- | example/generator.py | 48 |
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 | |||
3 | from schedcat.model.serialize import write | ||
4 | from schedcat.generator.tasksets import mkgen, \ | ||
5 | NAMED_UTILIZATIONS, \ | ||
6 | NAMED_PERIODS | ||
7 | from schedcat.util.time import ms2us | ||
8 | import schedcat.model.resources as resources | ||
9 | import os | ||
10 | import random | ||
11 | |||
12 | CSLENGTH = { 'short' : lambda: random.randint(1, 15), | ||
13 | 'medium' : lambda: random.randint(1, 100), | ||
14 | 'long' : lambda: random.randint(5, 1280), } | ||
15 | |||
16 | def 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 | |||
28 | def 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 | ||