From c3e6d6b54741cfbc828272ace576339ae3a37173 Mon Sep 17 00:00:00 2001 From: Aravinda VK Date: Wed, 17 Dec 2014 21:43:57 +0530 Subject: geo-rep: Unit tests infrastructure for geo-replication Added sample unit test file, $GLUSTER_SRC/geo-replication/tests/unit/test_syncdutils.py Install unittest dependencies, (tox https://tox.readthedocs.org/en/latest/, nose https://nose.readthedocs.org/en/latest/) sudo pip install --upgrade tox nose To run pep8 coding standards tests, cd $GLUSTER_SRC/geo-replication tox -e pep8 To run unit tests, cd $GLUSTER_SRC/geo-replication tox -e py27 py27 is for with Python 2.7+, or py26 for systems with Python 2.6+ Change-Id: Ibdefe2c9d73afda9a7fa1c0db5b126f592b7cb40 BUG: 1177722 Signed-off-by: Aravinda VK Reviewed-on: http://review.gluster.org/9290 Tested-by: Gluster Build System Reviewed-by: Prashanth Pai Reviewed-by: Vijay Bellur --- geo-replication/setup.py | 32 +++++++++++++++++++++++++++ geo-replication/test-requirements.txt | 7 ++++++ geo-replication/tests/__init__.py | 10 +++++++++ geo-replication/tests/unit/__init__.py | 10 +++++++++ geo-replication/tests/unit/test_syncdutils.py | 30 +++++++++++++++++++++++++ geo-replication/tox.ini | 32 +++++++++++++++++++++++++++ geo-replication/unittests.sh | 9 ++++++++ 7 files changed, 130 insertions(+) create mode 100644 geo-replication/setup.py create mode 100644 geo-replication/test-requirements.txt create mode 100644 geo-replication/tests/__init__.py create mode 100644 geo-replication/tests/unit/__init__.py create mode 100644 geo-replication/tests/unit/test_syncdutils.py create mode 100644 geo-replication/tox.ini create mode 100644 geo-replication/unittests.sh (limited to 'geo-replication') diff --git a/geo-replication/setup.py b/geo-replication/setup.py new file mode 100644 index 00000000000..6d678baa2f7 --- /dev/null +++ b/geo-replication/setup.py @@ -0,0 +1,32 @@ +# +# Copyright (c) 2011-2014 Red Hat, Inc. +# This file is part of GlusterFS. + +# This file is licensed to you under your choice of the GNU Lesser +# General Public License, version 3 or any later version (LGPLv3 or +# later), or the GNU General Public License, version 2 (GPLv2), in all +# cases as published by the Free Software Foundation. +# + +""" +This setup.py only used to run tests, since geo-replication will +be installed in /usr/local/libexec/glusterfs or /usr/libexec/glusterfs +""" +from setuptools import setup + +name = 'syncdaemon' + +setup( + name=name, + version="", + description='GlusterFS Geo Replication', + license='', + author='Red Hat, Inc.', + author_email='gluster-devel@gluster.org', + url='http://www.gluster.org', + packages=['syncdaemon', ], + test_suite='nose.collector', + install_requires=[], + scripts=[], + entry_points={}, +) diff --git a/geo-replication/test-requirements.txt b/geo-replication/test-requirements.txt new file mode 100644 index 00000000000..d6165640d3f --- /dev/null +++ b/geo-replication/test-requirements.txt @@ -0,0 +1,7 @@ +# Hacking already pins down pep8, pyflakes and flake8 +flake8 +coverage +nose +nosexcover +nosehtmloutput +mock>=0.8.0 diff --git a/geo-replication/tests/__init__.py b/geo-replication/tests/__init__.py new file mode 100644 index 00000000000..23adbfa5171 --- /dev/null +++ b/geo-replication/tests/__init__.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +# +# Copyright (c) 2011-2014 Red Hat, Inc. +# This file is part of GlusterFS. + +# This file is licensed to you under your choice of the GNU Lesser +# General Public License, version 3 or any later version (LGPLv3 or +# later), or the GNU General Public License, version 2 (GPLv2), in all +# cases as published by the Free Software Foundation. +# diff --git a/geo-replication/tests/unit/__init__.py b/geo-replication/tests/unit/__init__.py new file mode 100644 index 00000000000..23adbfa5171 --- /dev/null +++ b/geo-replication/tests/unit/__init__.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +# +# Copyright (c) 2011-2014 Red Hat, Inc. +# This file is part of GlusterFS. + +# This file is licensed to you under your choice of the GNU Lesser +# General Public License, version 3 or any later version (LGPLv3 or +# later), or the GNU General Public License, version 2 (GPLv2), in all +# cases as published by the Free Software Foundation. +# diff --git a/geo-replication/tests/unit/test_syncdutils.py b/geo-replication/tests/unit/test_syncdutils.py new file mode 100644 index 00000000000..736ae274b85 --- /dev/null +++ b/geo-replication/tests/unit/test_syncdutils.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# +# Copyright (c) 2011-2014 Red Hat, Inc. +# This file is part of GlusterFS. + +# This file is licensed to you under your choice of the GNU Lesser +# General Public License, version 3 or any later version (LGPLv3 or +# later), or the GNU General Public License, version 2 (GPLv2), in all +# cases as published by the Free Software Foundation. +# + +import unittest + +from syncdaemon import syncdutils + + +class SyncdutilsTestCase(unittest.TestCase): + def setUp(self): + pass + + def tearDown(self): + pass + + def test_escape(self): + self.assertEqual(syncdutils.escape("http://gluster.org"), + "http%3A%2F%2Fgluster.org") + + def test_unescape(self): + self.assertEqual(syncdutils.unescape("http%3A%2F%2Fgluster.org"), + "http://gluster.org") diff --git a/geo-replication/tox.ini b/geo-replication/tox.ini new file mode 100644 index 00000000000..57ff086b947 --- /dev/null +++ b/geo-replication/tox.ini @@ -0,0 +1,32 @@ +[tox] +envlist = py26,py27,pep8 + +[testenv] +whitelist_externals=bash +setenv = VIRTUAL_ENV={envdir} +deps = + --download-cache={homedir}/.pipcache + -r{toxinidir}/test-requirements.txt +changedir = {toxinidir}/tests/unit +commands = nosetests -v --exe --with-xunit --with-coverage --cover-package syncdaemon --cover-erase --cover-xml --cover-html --cover-branches --with-html-output {posargs} + +[tox:jenkins] +downloadcache = ~/cache/pip + +[testenv:pep8] +changedir = {toxinidir} +commands = + flake8 + flake8 syncdaemon tests + +[testenv:cover] +setenv = NOSE_WITH_COVERAGE=1 + +[testenv:venv] +commands = {posargs} + +[flake8] +ignore = H +builtins = _ +exclude = .venv,.tox,dist,doc,tests,*egg +show-source = True \ No newline at end of file diff --git a/geo-replication/unittests.sh b/geo-replication/unittests.sh new file mode 100644 index 00000000000..d5dbd00bd4c --- /dev/null +++ b/geo-replication/unittests.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +cd $(dirname $0)/tests/unit +nosetests -v --exe --with-coverage --cover-package \ + syncdaemon --cover-erase --cover-html --cover-branches $@ + +saved_status=$? +rm -f .coverage +exit $saved_status -- cgit