2 from neco.execution.ec import ExperimentController
3 from neco.execution.resource import ResourceState
4 from neco.execution.trace import TraceAttr
5 from neco.resources.linux.node import LinuxNode
6 from neco.resources.linux.application import LinuxApplication
8 from test_utils import skipIfNotAlive
15 class LinuxApplicationTestCase(unittest.TestCase):
17 self.fedora_host = 'nepi2.pl.sophia.inria.fr'
18 self.fedora_user = 'inria_nepi'
20 self.ubuntu_host = 'roseval.pl.sophia.inria.fr'
21 self.ubuntu_user = 'alina'
23 self.target = 'nepi5.pl.sophia.inria.fr'
26 def t_ping(self, host, user):
27 from neco.execution.resource import ResourceFactory
29 ResourceFactory.register_type(LinuxNode)
30 ResourceFactory.register_type(LinuxApplication)
32 ec = ExperimentController()
34 node = ec.register_resource("LinuxNode")
35 ec.set(node, "hostname", host)
36 ec.set(node, "username", user)
37 ec.set(node, "cleanHome", True)
38 ec.set(node, "cleanProcesses", True)
40 app = ec.register_resource("LinuxApplication")
41 cmd = "ping -c5 %s" % self.target
42 ec.set(app, "command", cmd)
44 ec.register_connection(app, node)
49 while not ec.state(app) == ResourceState.FINISHED:
52 self.assertTrue(ec.state(node) == ResourceState.STARTED)
53 self.assertTrue(ec.state(app) == ResourceState.FINISHED)
55 stdout = ec.trace(app, 'stdout')
56 size = ec.trace(app, 'stdout', attr = TraceAttr.SIZE)
57 self.assertEquals(len(stdout), size)
59 block = ec.trace(app, 'stdout', attr = TraceAttr.STREAM, block = 5, offset = 1)
60 self.assertEquals(block, stdout[5:10])
62 path = ec.trace(app, 'stdout', attr = TraceAttr.PATH)
63 rm = ec.get_resource(app)
64 p = os.path.join(rm.home, 'stdout')
65 self.assertEquals(path, p)
70 def test_deploy_fedora(self):
71 self.t_ping(self.fedora_host, self.fedora_user)
73 def test_deploy_ubuntu(self):
74 self.t_ping(self.ubuntu_host, self.ubuntu_user)
77 if __name__ == '__main__':