Add exit return code for unit tests
authorMorgan Richomme <morgan.richomme@orange.com>
Fri, 28 Oct 2016 10:32:18 +0000 (12:32 +0200)
committerMorgan Richomme <morgan.richomme@orange.com>
Fri, 4 Nov 2016 08:04:16 +0000 (09:04 +0100)
Note that this patch should trigger some refactoring
1: repo structure, uggly hack due to the fact that the code
is at the root of the repo. The name can be change when cloning
leading to python path issues

2: logger is called with harcoded file in functest_logger.py
uggly hack to create the file is not already present

Basically hacks were necessary to be able to run the unit tests
locally and from jenkins

JIRA: FUNCTEST-336

Change-Id: Ib88256a167c003805d480f57c218c37d8d5962d8
Signed-off-by: Morgan Richomme <morgan.richomme@orange.com>
run_unit_tests.sh
setup.py

index 80767d4..96b4a58 100755 (executable)
 set -o errexit
 set -o pipefail
 
+# ******************************
+# prepare the env for the tests
+# ******************************
+# clean useless results dir
+# should be done at the end
+# but in case of crash during unit test
+# clean it anyway
+if [ -d "/home/opnfv/functest/results" ]
+then
+    sudo rm -rf /home/opnfv/functest
+fi
+
+# TODO clean that...
+# Create log dir if needed
+# log shall be disabled during unit tests
+# fix to be done in Logger
+if [ ! -d "/home/opnfv/functest/results" ]
+then
+    echo "Create dummy log file...."
+    sudo mkdir -p /home/opnfv/functest/results/odl
+    sudo touch /home/opnfv/functest/results/functest.log
+    sudo touch /home/opnfv/functest/results/odl/stdout.txt
+    sudo chmod -Rf a+rw /home/opnfv
+fi
+
+# Either Workspace is set (CI)
+# then useless log files must belong to jenkins:jenkins
+# or it is local tests and we do not care
+if [ -z $WORKSPACE ]
+then
+    WORKSPACE="."
+else
+    sudo chown -Rf jenkins:jenkins /home/opnfv
+    # as we import the module from the home repo
+    # and in jenkins the name is different
+    # functest-verify-master != functest
+    # make some ugly adjustments...
+    cd $WORKSPACE
+    export PYTHONPATH="${PYTHONPATH}:$WORKSPACE"
+    cd ..
+
+    if [ ! -d "./functest" ]
+    then
+    ln -s functest-verify-master functest
+    fi
+fi
+
+
+# ***************
+# Run unit tests
+# ***************
 echo "Running unit tests..."
-cd .
 
 # start vitual env
-virtualenv ./functest_venv
-source ./functest_venv/bin/activate
+virtualenv $WORKSPACE/functest_venv
+source $WORKSPACE/functest_venv/bin/activate
 
 # install python packages
 easy_install -U setuptools
 easy_install -U pip
-pip install -r docker/requirements.pip
-pip install -e .
+pip install -r $WORKSPACE/docker/requirements.pip
+pip install -e $WORKSPACE
+
+python $WORKSPACE/setup.py develop
 
 # unit tests
+# TODO: remove cover-erase
+# To be deleted when all functest packages will be listed
 nosetests --with-xunit \
          --with-coverage \
+         --cover-erase \
          --cover-package=functest.core.TestCasesBase \
          --cover-package=functest.testcases.Controllers.ODL.OpenDaylightTesting \
          --cover-xml \
+         --cover-html \
          unit_tests
+rc=$?
 
 deactivate
+
+# *******
+# clean
+# *******
+# First as we had to start the test from ..
+# Push the results upstream for jenkins
+if [ $WORKSPACE != "." ]
+then
+    mv coverage.xml nosetests.xml $WORKSPACE
+fi
+
+# Clean useless logs
+if [ -d "/home/opnfv/functest/results" ]
+then
+    sudo rm -rf /home/opnfv/functest/results
+fi
+
+exit $rc
index 58740f4..c192bd9 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -19,6 +19,4 @@ setup(
     install_requires=["coverage==4.1",
                       "mock==1.3.0",
                       "nose==1.3.7"],
-    entry_points={
-    }
 )