# vim: set fileencoding=utf-8 : import random, yaml, sys from model import WorkerSlotModel def main (args): numSlots = args.slots numWorker = args.worker minDatesPerStudent = 1 maxDatesPerStudent = 3 worker = {} slots = {} for i in range (numSlots): slots[i] = {'max': args.slotLimit, 'min': 0} prio = list (range (1, numSlots+1)) for i in range (numWorker): keys = slots.keys () random.shuffle (keys) s = random.randint (minDatesPerStudent, maxDatesPerStudent) worker[i] = {'prio': dict (zip (keys[:s], prio[:s])), 'slots': {'min': 1, 'max': 1}} data = WorkerSlotModel (slots, worker, {'minSlots': 0, 'maxSlots': len (slots)}) data.dump (sys.stdout) def addParser (subparsers): parser = subparsers.add_parser ('generate', help='Generate random testcase') parser.add_argument('--slots', '-s', type=int, default=5) parser.add_argument('--worker', '-w', type=int, default=60) parser.add_argument('--slot-limit', '-l', dest='slotLimit', type=int, default=12, help='Max number of worker per slot') parser.set_defaults (func=main)