Merge branch 'tests'
authorThierry Parmentelat <thierry.parmentelat@inria.fr>
Thu, 15 Oct 2015 14:40:12 +0000 (16:40 +0200)
committerThierry Parmentelat <thierry.parmentelat@inria.fr>
Thu, 15 Oct 2015 14:40:12 +0000 (16:40 +0200)
* tests:
  resurrecting a minimal test infra - starting with linux node and application

1  2 
Makefile
test/resources/linux/application.py
test/resources/linux/node.py

diff --combined Makefile
+++ b/Makefile
@@@ -1,21 -1,9 +1,9 @@@
  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)
@@@ -33,9 -21,19 +21,19 @@@ test: al
               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
@@@ -48,7 -46,7 +46,7 @@@
        rm -f .coverage
  
  clean:
-       rm -f `find -name \*.pyc` .coverage *.pcap
+       rm -f $$(find . -name '*.pyc') .coverage *.pcap
        rm -rf "$(BUILDDIR)"
  
  distclean: clean
@@@ -68,15 -66,8 +66,15 @@@ dist: MANIFES
  ########## 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)
@@@ -107,13 -98,3 +105,13 @@@ testpypi
        #./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))"
@@@ -31,13 -31,13 +31,13 @@@ import unittes
  
  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()
  
@@@ -140,7 -140,7 +140,7 @@@ main (void
          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()
  
@@@ -31,13 -31,13 +31,13 @@@ import unittes
  
  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):
@@@ -98,7 -98,7 +98,7 @@@
   
          # 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):
@@@ -262,7 -262,7 +262,7 @@@ main (void
          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):