TestQueue   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 45
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 45
rs 10
c 0
b 0
f 0
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 12 2
B test_constructor() 0 31 3
1
from nose.tools import assert_equal
2
from numpy.testing import assert_array_equal
3
4
from smartdispatch.queue import Queue
5
from smartdispatch import get_available_queues
6
import smartdispatch
7
8
import os
9
import unittest
10
11
12
class TestQueue(unittest.TestCase):
13
    def setUp(self):
14
        self.cluster_name = "skynet"
15
        self.name = "9000@hal"
16
        self.walltime = "10:00"
17
        self.cores = 42
18
        self.gpus = 42
19
        self.mem_per_node = 32
20
        self.modules = ["cuda", "python"]
21
22
        smartdispatch_dir, _ = os.path.split(smartdispatch.__file__)
23
        config_dir = os.path.join(smartdispatch_dir, 'config')
24
        self.known_clusters = [os.path.splitext(config_file)[0] for config_file in os.listdir(config_dir)]
25
26
    def test_constructor(self):
27
        queue = Queue(self.name, self.cluster_name, self.walltime, self.cores, self.gpus, self.mem_per_node, self.modules)
28
        assert_equal(queue.name, self.name)
29
        assert_equal(queue.cluster_name, self.cluster_name)
30
        assert_equal(queue.walltime, self.walltime)
31
        assert_equal(queue.nb_cores_per_node, self.cores)
32
        assert_equal(queue.nb_gpus_per_node, self.gpus)
33
        assert_equal(queue.mem_per_node, self.mem_per_node)
34
        assert_array_equal(queue.modules, self.modules)
35
36
        # Test with missing information but referring to a known queue.
37
        for cluster_name in self.known_clusters:
38
            for queue_name, queue_infos in get_available_queues(cluster_name).items():
39
                queue = Queue(queue_name, cluster_name)
40
                assert_equal(queue.name, queue_name)
41
                assert_equal(queue.cluster_name, cluster_name)
42
                assert_equal(queue.walltime, queue_infos['max_walltime'])
43
                assert_equal(queue.nb_cores_per_node, queue_infos['cores'])
44
                assert_equal(queue.nb_gpus_per_node, queue_infos.get('gpus', 0))
45
                assert_equal(queue.mem_per_node, queue_infos['ram'])
46
                assert_array_equal(queue.modules, queue_infos.get('modules', []))
47
48
                # Make sure it is not overwriting parameters if referring to a known queue.
49
                queue = Queue(queue_name, cluster_name, self.walltime, self.cores, self.gpus, self.mem_per_node, self.modules)
50
                assert_equal(queue.name, queue_name)
51
                assert_equal(queue.cluster_name, cluster_name)
52
                assert_equal(queue.walltime, self.walltime)
53
                assert_equal(queue.nb_cores_per_node, self.cores)
54
                assert_equal(queue.nb_gpus_per_node, self.gpus)
55
                assert_equal(queue.mem_per_node, self.mem_per_node)
56
                assert_array_equal(queue.modules, queue_infos.get('modules', []) + self.modules)
57