aboutsummaryrefslogtreecommitdiffstats
path: root/example/generator.py
blob: 41a4ed2c9358172926581552fed6b8a0538cb43d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#Necessary includes and stuff

from schedcat.model.serialize import write
from schedcat.generator.tasksets import mkgen, \
                                        NAMED_UTILIZATIONS, \
                                        NAMED_PERIODS
from schedcat.util.time import ms2us
import schedcat.model.resources as resources
import os
import random

CSLENGTH = { 'short'  : lambda: random.randint(1,   15),
             'medium' : lambda: random.randint(1,  100),
             'long'   : lambda: random.randint(5, 1280), }

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