SRCDIR = $(CURDIR)/src
TESTDIR = $(CURDIR)/test
TESTLIB = $(TESTDIR)/lib
- BUILDDIR = $(CURDIR)/build
+ BUILDDIR = $(CURDIR)/build/lib
DISTDIR = $(CURDIR)/dist
- SUBBUILDDIR = $(shell python -c 'import distutils.util, sys; \
- print "lib.%s-%s" % (distutils.util.get_platform(), \
- sys.version[0:3])')
- PYTHON25 := $(shell python -c 'import sys; v = sys.version_info; \
- print (1 if v[0] <= 2 and v[1] <= 5 else 0)')
-
- ifeq ($(PYTHON25),0)
- BUILDDIR := $(BUILDDIR)/$(SUBBUILDDIR)
- else
- BUILDDIR := $(BUILDDIR)/lib
- endif
-
PYPATH = $(BUILDDIR):$(TESTLIB):$(PYTHONPATH)
COVERAGE = $(or $(shell which coverage), $(shell which python-coverage), \
coverage)
PYTHONPATH="$(PYPATH)" $$i -v || retval=$$?; \
done; exit $$retval
+ ifeq ($(file),)
+ test-one:
+ echo Run $(make) $@ file=test/some/path
+ else
test-one: all
echo $(file) $(case)
PYTHONPATH="$(PYPATH)" $(file) $(case)
+ endif
+
+ test-app:
+ $(MAKE) test-one file=test/resources/linux/application.py case=$(case)
+ test-node:
+ $(MAKE) test-one file=test/resources/linux/node.py case=$(case)
coverage: all
rm -f .coverage
rm -f .coverage
clean:
- rm -f `find -name \*.pyc` .coverage *.pcap
+ rm -f $$(find . -name '*.pyc') .coverage *.pcap
rm -rf "$(BUILDDIR)"
distclean: clean
########## for uploading onto pypi
# this assumes you have an entry 'pypi' in your .pypirc
# see pypi documentation on how to create .pypirc
+LOCAL_ID=$(shell id)
+ifneq "$(LOCAL_ID)" "$(filter $(LOCAL_ID),parmen)"
+BUILD_ID=thierry
+else
+BUILD_ID=mario
+endif
+
PYPI_TARGET=pypi
-PYPI_TARBALL_HOST=mario@build.onelab.eu
+PYPI_TARBALL_HOST=$(BUILD_ID)@build.onelab.eu
PYPI_TARBALL_TOPDIR=/build/nepi
VERSION=$(shell cat VERSION)
#./setup.py sdist upload -r testpypi
./setup.py sdist
twine upload dist/* -r testpypi
+
+#################### convenience, for debugging only
+# make +foo : prints the value of $(foo)
+# make ++foo : idem but verbose, i.e. foo=$(foo)
+++%: varname=$(subst +,,$@)
+++%:
+ @echo "$(varname)=$($(varname))"
++%: varname=$(subst +,,$@)
++%:
+ @echo "$($(varname))"
class LinuxApplicationTestCase(unittest.TestCase):
def setUp(self):
- self.fedora_host = "nepi2.pl.sophia.inria.fr"
+ self.fedora_host = "fedora.pl.sophia.inria.fr"
self.fedora_user = "inria_nepi"
- self.ubuntu_host = "roseval.pl.sophia.inria.fr"
+ self.ubuntu_host = "ubuntu.pl.sophia.inria.fr"
self.ubuntu_user = "inria_nepi"
- self.target = "nepi5.pl.sophia.inria.fr"
+ self.target = "nepi.pl.sophia.inria.fr"
@skipIfNotAlive
def t_stdout(self, host, user):
stdout = ec.trace(app, "stdout")
size = ec.trace(app, "stdout", attr = TraceAttr.SIZE)
- self.assertEquals(len(stdout), size)
+ self.assertEqual(len(stdout), size)
block = ec.trace(app, "stdout", attr = TraceAttr.STREAM, block = 5, offset = 1)
- self.assertEquals(block, stdout[5:10])
+ self.assertEqual(block, stdout[5:10])
path = ec.trace(app, "stdout", attr = TraceAttr.PATH)
rm = ec.get_resource(app)
p = os.path.join(rm.run_home, "stdout")
- self.assertEquals(path, p)
+ self.assertEqual(path, p)
ec.shutdown()
ec.wait_finished(app)
out = ec.trace(app, 'stdout')
- self.assertEquals(out, "Hello, world!\n")
+ self.assertEqual(out, "Hello, world!\n")
ec.shutdown()
ec.set(node, "cleanProcesses", True)
apps = list()
- for i in xrange(50):
+ for i in range(50):
app = ec.register_resource("linux::Application")
cmd = "ping -c5 %s" % self.target
ec.set(app, "command", cmd)
for app in apps:
stdout = ec.trace(app, 'stdout')
size = ec.trace(app, 'stdout', attr = TraceAttr.SIZE)
- self.assertEquals(len(stdout), size)
+ self.assertEqual(len(stdout), size)
block = ec.trace(app, 'stdout', attr = TraceAttr.STREAM, block = 5, offset = 1)
- self.assertEquals(block, stdout[5:10])
+ self.assertEqual(block, stdout[5:10])
path = ec.trace(app, 'stdout', attr = TraceAttr.PATH)
rm = ec.get_resource(app)
p = os.path.join(rm.run_home, 'stdout')
- self.assertEquals(path, p)
+ self.assertEqual(path, p)
ec.shutdown()
ec.set(node, "cleanExperiment", True)
ec.set(node, "cleanProcesses", True)
- sources = "http://yans.pl.sophia.inria.fr/code/nef/archive/tip.tar.gz;" \
- "http://yans.pl.sophia.inria.fr/code/nef/raw-file/8ace577d4079/src/nef/images/menu/connect.png"
+ sources = "http://mirror.onelab.eu/third-party/nepi-tip.tgz;" \
+ "http://mirror.onelab.eu/third-party/nepi-connect.png"
app = ec.register_resource("linux::Application")
ec.set(app, "sources", sources)
self.assertTrue(exitcode.strip() == "0")
out = ec.trace(app, "deploy_stdout")
- self.assertTrue(out.find("tip.tar.gz") > -1)
- self.assertTrue(out.find("connect.png") > -1)
+ self.assertTrue(out.find("nepi-tip.tgz") > -1)
+ self.assertTrue(out.find("nepi-connect.png") > -1)
stdout = ec.trace(app, "stdout")
- self.assertTrue(stdout.find("tip.tar.gz") > -1)
- self.assertTrue(stdout.find("connect.png") > -1)
+ self.assertTrue(stdout.find("nepi-tip.tgz") > -1)
+ self.assertTrue(stdout.find("nepi-connect.png") > -1)
ec.shutdown()
class LinuxNodeTestCase(unittest.TestCase):
def setUp(self):
- self.fedora_host = "nepi2.pl.sophia.inria.fr"
+ self.fedora_host = "fedora.pl.sophia.inria.fr"
self.fedora_user = "inria_nepi"
- self.ubuntu_host = "roseval.pl.sophia.inria.fr"
+ self.ubuntu_host = "ubuntu.pl.sophia.inria.fr"
self.ubuntu_user = "inria_nepi"
- self.target = "nepi5.pl.sophia.inria.fr"
+ self.target = "nepi.pl.sophia.inria.fr"
@skipIfNotAlive
def t_execute(self, host, user):
# get the pid of the process
ecode = node.exitcode(app_home)
- self.assertEquals(ecode, ExitCode.OK)
+ self.assertEqual(ecode, ExitCode.OK)
@skipIfNotAlive
def t_exitcode_kill(self, host, user):
# The process is still running, so no retfile has been created yet
ecode = node.exitcode(app_home)
- self.assertEquals(ecode, ExitCode.FILENOTFOUND)
+ self.assertEqual(ecode, ExitCode.FILENOTFOUND)
(out, err), proc = node.check_errors(app_home)
- self.assertEquals(err, "")
+ self.assertEqual(err, "")
# Now kill the app
pid, ppid = node.getpid(app_home)
node.kill(pid, ppid)
(out, err), proc = node.check_errors(app_home)
- self.assertEquals(err, "")
+ self.assertEqual(err, "")
@skipIfNotAlive
def t_exitcode_error(self, host, user):
ecode = node.exitcode(app_home)
# bash erro 127 - command not found
- self.assertEquals(ecode, 127)
+ self.assertEqual(ecode, 127)
(out, err), proc = node.check_errors(app_home)
node.find_home()
(out, err), proc = node.mkdir(node.node_home, clean = True)
- self.assertEquals(err, "")
+ self.assertEqual(err, "")
(out, err), proc = node.install_packages("gcc", node.node_home)
- self.assertEquals(err, "")
+ self.assertEqual(err, "")
(out, err), proc = node.remove_packages("gcc", node.node_home)
- self.assertEquals(err, "")
+ self.assertEqual(err, "")
(out, err), proc = node.rmdir(node.exp_home)
- self.assertEquals(err, "")
+ self.assertEqual(err, "")
@skipIfNotAlive
def t_clean(self, host, user):
command1 = " [ -d %s ] && echo 'Found'" % node.lib_dir
(out, err), proc = node.execute(command1)
- self.assertEquals(out.strip(), "Found")
+ self.assertEqual(out.strip(), "Found")
command2 = " [ -d %s ] && echo 'Found'" % node.node_home
(out, err), proc = node.execute(command2)
- self.assertEquals(out.strip(), "Found")
+ self.assertEqual(out.strip(), "Found")
node.clean_experiment()
(out, err), proc = node.execute(command2)
- self.assertEquals(out.strip(), "")
+ self.assertEqual(out.strip(), "")
node.clean_home()
(out, err), proc = node.execute(command1)
- self.assertEquals(out.strip(), "")
+ self.assertEqual(out.strip(), "")
@skipIfNotAlive
def t_xterm(self, host, user):
node.find_home()
(out, err), proc = node.mkdir(node.node_home, clean = True)
- self.assertEquals(err, "")
+ self.assertEqual(err, "")
node.install_packages("xterm", node.node_home)
- self.assertEquals(err, "")
+ self.assertEqual(err, "")
(out, err), proc = node.execute("xterm", forward_x11 = True)
- self.assertEquals(err, "")
+ self.assertEqual(err, "")
(out, err), proc = node.remove_packages("xterm", node.node_home)
- self.assertEquals(err, "")
+ self.assertEqual(err, "")
@skipIfNotAlive
def t_compile(self, host, user):
command = "%s/hello" % app_home
(out, err), proc = node.execute(command)
- self.assertEquals(out, "Hello, world!\n")
+ self.assertEqual(out, "Hello, world!\n")
# execute the program and get the output from a file
command = "%(home)s/hello > %(home)s/hello.out" % {
node.remove_packages("gcc", app_home)
node.rmdir(app_home)
- f = open(dst, "r")
- out = f.read()
- f.close()
+ with open(dst, "r") as f:
+ out = f.read()
- self.assertEquals(out, "Hello, world!\n")
+ self.assertEqual(out, "Hello, world!\n")
@skipIfNotAlive
def t_copy_files(self, host, user):