Project

General

Profile

root / trunk / tests / common.py @ 632

1
import ConfigParser
2
import os
3
import threading
4
import shutil
5

    
6
from haizea.core.configfile import HaizeaConfig
7
from haizea.core.scheduler.slottable import ResourceReservation, SlotTable
8
from haizea.core.leases import Lease, Timestamp, Duration
9
from haizea.core.manager import Manager
10

    
11
class BaseTest(object):
12
    def __init__(self):
13
        pass
14

    
15
    def load_configfile(self, configfile):
16
        file = open (configfile, "r")
17
        c = ConfigParser.ConfigParser()
18
        c.readfp(file)
19
        return c
20

    
21

    
22
class BaseSimulatorTest(BaseTest):
23
    def __init__(self):
24
        pass
25

    
26
    def set_tracefile(self, tracefile):
27
        self.config.set("tracefile", "tracefile", tracefile)
28

    
29
    def test_preemption(self):
30
        self.set_tracefile("preemption.lwf")
31
        haizea = Manager(HaizeaConfig(self.config))
32
        haizea.start()
33
        
34
    def test_preemption_prematureend(self):
35
        self.set_tracefile("preemption_prematureend.lwf")
36
        haizea = Manager(HaizeaConfig(self.config))
37
        haizea.start()
38
        
39
    def test_preemption_prematureend2(self):
40
        self.set_tracefile("preemption_prematureend2.lwf")
41
        haizea = Manager(HaizeaConfig(self.config))
42
        haizea.start()
43
        
44
    def test_reservation(self):
45
        self.set_tracefile("reservation.lwf")
46
        haizea = Manager(HaizeaConfig(self.config))
47
        haizea.start()
48
        
49
    def test_reservation_prematureend(self):
50
        self.set_tracefile("reservation_prematureend.lwf")
51
        haizea = Manager(HaizeaConfig(self.config))
52
        haizea.start()
53
        
54
    def test_migrate(self):
55
        self.set_tracefile("migrate.lwf")
56
        haizea = Manager(HaizeaConfig(self.config))
57
        haizea.start()
58
        
59
    def test_reuse1(self):
60
        self.set_tracefile("reuse1.lwf")
61
        haizea = Manager(HaizeaConfig(self.config))
62
        haizea.start()
63
        
64
    def test_reuse2(self):
65
        self.set_tracefile("reuse2.lwf")
66
        haizea = Manager(HaizeaConfig(self.config))
67
        haizea.start()
68
        
69
    def test_wait(self):
70
        self.set_tracefile("wait.lwf")
71
        haizea = Manager(HaizeaConfig(self.config))
72
        haizea.start()
73
        
74
        
75
class BaseOpenNebulaTest(BaseTest):
76
    def __init__(self):
77
        pass
78

    
79
    def do_test(self, db):
80
        shutil.copyfile(db, "one.db")
81
        haizea = Manager(HaizeaConfig(self.config))
82
        haizea.start()
83
        os.remove("one.db")
84
    
85

    
86
class BaseXMLRPCTest(BaseTest):
87
    def __init__(self):
88
        self.haizea_thread = None
89

    
90
    def start(self):
91
        self.haizea = Manager(HaizeaConfig(self.config))
92
        self.haizea_thread = threading.Thread(target=self.haizea.start)
93
        self.haizea_thread.start()
94
        
95
    def stop(self):
96
        self.haizea.stop()
97
        self.haizea_thread.join()
98
        
99
        
100
def create_ar_lease(lease_id, submit_time, start, end, preemptible, requested_resources):
101
    start = Timestamp(start)
102
    duration = Duration(end - start.requested)
103
    lease = Lease.create_new(submit_time = submit_time, 
104
                  requested_resources = requested_resources, 
105
                  start = start, 
106
                  duration = duration,
107
                  deadline = None, 
108
                  preemptible = preemptible, 
109
                  software = None)
110
    
111
    lease.id = lease_id
112
    
113
    return lease
114

    
115
def create_reservation_from_lease(lease, mapping, slottable):
116
    start = lease.start.requested
117
    end = start + lease.duration.requested
118
    res = dict([(mapping[vnode],r) for vnode,r in lease.requested_resources.items()])
119
    rr = ResourceReservation(lease, start, end, res)
120
    slottable.add_reservation(rr)
121

    
122
def create_tmp_slottable(slottable):
123
    tmp_slottable = SlotTable(slottable.resource_types)
124
    tmp_slottable.nodes = slottable.nodes
125
    tmp_slottable.reservations_by_start = slottable.reservations_by_start[:]
126
    tmp_slottable.reservations_by_end = slottable.reservations_by_end[:]
127

    
128
    return tmp_slottable