Пример #1
0
def test_get_node_fewest_job(create_Jobs, create_Nodes):
    #create network
    #network1 = create_Network
    network6 = Network("fiat")
    assert network6.user == "fiat"
    assert network6.jobs == {}
    Job1, Job2, = list(create_Jobs(2))
    Node1, Node2, = list(create_Nodes(2))
    #test_function
    network6.add_job(Job1)
    network6.add_job(Job2)
    network6.add_node(Node1)
    network6.add_node(Node2)
    Node1.active = True #normally network.up(ip) for linux
    Node2.active = True #normally network.up(ip) for linux
    Node1.max_jobs = 4
    Node2.max_jobs = 4
    
    for job in JOBS.values():
        #convert to GROUPS
        if isinstance(job.GROUPS, str):
            BaseGroup(job.GROUPS).add_job(job)
        elif isinstance(job.GROUPS, list):
            for g in job.GROUPS:
                BaseGroup(g).add_job(job)
    for node in NODES.values():
        if isinstance(node.GROUPS, str):
            BaseGroup(node.GROUPS).add_node(node)
        elif isinstance(node.GROUPS, list):
            for g in node.GROUPS:
                BaseGroup(g).add_node(node)

    Node1.add_job(Job1)
    node = network6._get_node_fewest_jobs(Job2)
    assert node == Node2
Пример #2
0
def test_add_job(create_Jobs):
    #create network
    #network1 = create_Network
    network2 = Network("pi")
    assert network2.user == "pi"
    assert network2.jobs == {}
    Job1, = list(create_Jobs(1))
    #test with job object
    network2.add_job(Job1)
    assert Job1 in network2.jobs.values()
    #test with a non-job
    with pytest.raises(RuntimeError) as excinfo:
        network2.add_job("ThisIsNotAJob")
    assert f"Tried adding {str} as job to network." in str(excinfo)
Пример #3
0
def test_is_ready(create_Jobs, create_Nodes):
    #create Network
    #network1 = create_Network
    network3 = Network("ttt")
    assert network3.user == "ttt"
    assert network3.jobs == {}
    Job1, Job2, = list(create_Jobs(2))
    Node1, =list(create_Nodes(1))
    network3.add_job(Job1)
    network3.add_job(Job2)
    network3.add_node(Node1)
    #check function
    Job1.allocate(Node1)
    assert network3.is_ready() == False
    Job2.allocate(Node1)
    assert network3.is_ready() == True
Пример #4
0
def test_down(create_Jobs, create_Nodes):
    #create network
    #network1 = create_Network
    network5 = Network("ford")
    assert network5.user == "ford"
    assert network5.jobs == {}
    Job1, Job2, = list(create_Jobs(2))
    Node1, =list(create_Nodes(1))
    Node1.ip = "198.168.4.1" #for windows
    Node1.max_jobs = 4       #for windows
    network5.add_job(Job1)
    network5.add_job(Job2)
    network5.add_node(Node1)
    Node1.add_job(Job2)
    #test function
    closed_jobs = network5.down("198.168.4.1")
    assert closed_jobs == [Job2]
    assert Node1.active == False
    with pytest.raises(RuntimeError) as excinfo:
        network5.down("NodeNotExisting")
    assert f"Node with NodeNotExisting does not exist in Network database." in str(excinfo)
Пример #5
0
def test_init_Network():
    network1 = Network(user="******")
    assert network1.user == "pi"
    assert network1.jobs == {}
    assert network1.nodes == {}
    node = BaseNode("192.168.4.2")
    job = BaseJob()

    network2 = Network(user="******")
    assert network2.user == "asn"
    assert network2.jobs == {}
    assert network2.nodes == {}
    network2.add_job(job)
    assert network2.jobs == {1: job}
    network2.add_node(node)
    assert network2.nodes == {None : node} #fails for windows bc of dispy

    network3 = Network(user="******")
    assert network3.user == "super"
    assert network3.jobs == {}
    assert network3.nodes == {}
Пример #6
0
def test_preference():
    #creating Network
    network1 = Network("pi")
    Node1 = BaseNode("192.168.4.1")
    Node2 = BaseNode("192.168.4.2")
    Node3 = BaseNode("192.168.4.3")
    Job1 = BaseJob(outputs=[BasePipe(1)])
    Job2 = BaseJob(inputs=[BasePipe(1)],outputs=[BasePipe(2)])
    Job3 = SquaredJob(inputs=[BasePipe(2)])
        
    #---
    Node1.ip = "192.168.4.1"
    Node2.ip = "192.168.4.2"
    Node3.ip = "192.168.4.3"
    #---
    network1.add_job(Job1)
    network1.add_job(Job2)
    network1.add_job(Job3)
    network1.add_node(Node1)
    network1.add_node(Node2)
    network1.add_node(Node3)

    for job in JOBS.values():
        #convert to GROUPS
        if isinstance(job.GROUPS, str):
            BaseGroup(job.GROUPS).add_job(job)
        elif isinstance(job.GROUPS, list):
            for g in job.GROUPS:
                BaseGroup(g).add_job(job)

    for node in NODES.values():
        if isinstance(node.GROUPS, str):
            BaseGroup(node.GROUPS).add_node(node)
        elif isinstance(node.GROUPS, list):
            for g in node.GROUPS:
                BaseGroup(g).add_node(node)
    
    #Iinitalze Nodes
    #Node 1 and 2 will be alive, Node 3 will die
    #---
    Node1.max_jobs = 4
    Node2.max_jobs = 4
    Node3.max_jobs = 4
    #---
    Node1.add_jobs([Job1])
    Node2.add_jobs([Job2])
    Node3.add_jobs([Job3])
    network1.up("192.168.4.1")
    network1.up("192.168.4.2")
    network1.up("192.168.4.3")
    Node1.mac = "m1:b1:c1:z1"
    Node2.mac = "m2:b2:c2:z2"
    Node3.mac = "m3:b3:c3:z3"
    Node1.routing_table = {"mac": "m2:b2:c2:z2" , "TQ": 198}
    Node2.routing_table = {"mac": "m1:b1:c1:z1" , "TQ": 198}
    Node1._avg_info = {"cpu": 89, "memory": None, "disk": None, "swap": 0} 
    Node2._avg_info = {"cpu": 91, "memory": None, "disk": None, "swap": 70}
    
    network1.down("192.168.4.3")

    node = network1.allocate_jobs(ssh= False)
    assert node == [Node2]
    assert len(Node2.jobs) == 2
    assert len(Node3.jobs) == 0