Project

General

Profile

root / branches / 1.1 / tests / common.py @ 847

1
import ConfigParser
2
import threading
3

    
4
from haizea.core.configfile import HaizeaConfig
5
from haizea.core.scheduler.slottable import ResourceReservation, SlotTable
6
from haizea.core.leases import Lease, Timestamp, Duration
7
from haizea.core.manager import Manager
8
from haizea.common.utils import reset_lease_id_counter
9

    
10
PREEMPTION_TRACE = "preemption.lwf"
11
PREEMPTION_PREMATUREEND_TRACE = "preemption_prematureend.lwf"
12
PREEMPTION_PREMATUREEND2_TRACE = "preemption_prematureend2.lwf"
13
RESERVATION_TRACE = "reservation.lwf"
14
RESERVATION_PREMATUREEND_TRACE = "reservation_prematureend.lwf"
15
MIGRATE_TRACE = "migrate.lwf"
16
REUSE1_TRACE = "reuse1.lwf"
17
REUSE2_TRACE = "reuse2.lwf"
18
PIGGYBACKING_TRACE = "piggybacking.lwf"
19
WAIT_TRACE = "wait.lwf"
20

    
21
def load_configfile(configfile):
22
    f = open (configfile, "r")
23
    c = ConfigParser.ConfigParser()
24
    c.readfp(f)
25
    return c
26

    
27
def load_tracefile(config, tracefile):
28
    config.set("tracefile", "tracefile", tracefile)
29
    Manager.reset_singleton()
30
    reset_lease_id_counter()
31
    return Manager(HaizeaConfig(config))
32

    
33
def verify_done(haizea, ids):
34
    for id in ids:
35
        lease = haizea.scheduler.completed_leases.get_lease(id)
36
        
37
        assert lease.get_state() == Lease.STATE_DONE
38
        
39
        if lease.deadline != None:
40
            assert lease.end <= lease.deadline
41
            
42
        if lease.duration.known != None:
43
            duration = lease.duration.known
44
        else:
45
            duration = lease.duration.requested
46
            
47
        assert duration == lease.duration.actual
48

    
49
def verify_rejected(haizea, ids):
50
    for id in ids:
51
        lease = haizea.scheduler.completed_leases.get_lease(id)
52
        
53
        assert lease.get_state() == Lease.STATE_REJECTED
54
            
55
def verify_rejected_by_user(haizea, ids):
56
    for id in ids:
57
        lease = haizea.scheduler.completed_leases.get_lease(id)
58
        
59
        assert lease.get_state() == Lease.STATE_REJECTED_BY_USER
60
    
61
def create_haizea_thread(config):
62
    Manager.reset_singleton()
63
    haizea = Manager(HaizeaConfig(self.config))
64
    return haizea, threading.Thread(target=self.haizea.start)
65
        
66
#def stop(self):
67
#    self.haizea.stop()
68
#    self.haizea_thread.join()
69
        
70
        
71
def create_ar_lease(lease_id, submit_time, start, end, preemptible, requested_resources):
72
    start = Timestamp(start)
73
    duration = Duration(end - start.requested)
74
    lease = Lease.create_new(submit_time = submit_time, 
75
                  user_id = None,
76
                  requested_resources = requested_resources, 
77
                  start = start, 
78
                  duration = duration,
79
                  deadline = None, 
80
                  preemptible = preemptible, 
81
                  software = None)
82
    
83
    lease.id = lease_id
84
    
85
    return lease
86

    
87
def create_reservation_from_lease(lease, mapping, slottable):
88
    start = lease.start.requested
89
    end = start + lease.duration.requested
90
    res = dict([(mapping[vnode],r) for vnode,r in lease.requested_resources.items()])
91
    rr = ResourceReservation(lease, start, end, res)
92
    slottable.add_reservation(rr)
93

    
94
def create_tmp_slottable(slottable):
95
    tmp_slottable = SlotTable(slottable.resource_types)
96
    tmp_slottable.nodes = slottable.nodes
97
    tmp_slottable.reservations_by_start = slottable.reservations_by_start[:]
98
    tmp_slottable.reservations_by_end = slottable.reservations_by_end[:]
99

    
100
    return tmp_slottable