[pytango] 80/122: Remove unused directories

Sandor Bodo-Merle sbodomerle-guest at moszumanska.debian.org
Thu Sep 28 19:18:21 UTC 2017


This is an automated email from the git hooks/post-receive script.

sbodomerle-guest pushed a commit to tag v9.2.1
in repository pytango.

commit f7d784d01e9d1dc5d0eab61f4f3ae6bba55f8e6d
Author: Vincent Michel <vincent.michel at maxlab.lu.se>
Date:   Mon Nov 7 14:31:42 2016 +0100

    Remove unused directories
    
    They can be found in the tango8 branch if needed.
---
 ci/ALBA/build.sh            |  105 --
 ci/ALBA/ct32suse11          |    4 -
 ci/ALBA/ct64suse11          |    4 -
 ci/ALBA/ct64suse121         |    4 -
 ci/ESRF/build.sh            |  109 --
 ci/ESRF/ct32redhate4        |    7 -
 ci/ESRF/ct32windows7        |    5 -
 ci/ESRF/ct64debian6         |    7 -
 ci/ESRF/ct64debian7         |    8 -
 ci/ESRF/ct64redhate5        |    7 -
 ci/README                   |   48 -
 ci/build.sh                 |   20 -
 images/banner.xcf           |  Bin 1305732 -> 0 bytes
 images/itango_console.png   |  Bin 66700 -> 0 bytes
 images/itango_qtconsole.png |  Bin 87266 -> 0 bytes
 images/logo-2009.xcf        |  Bin 3059144 -> 0 bytes
 images/logo-2010.png        |  Bin 1363560 -> 0 bytes
 images/logo-2010.xcf        |  Bin 9367953 -> 0 bytes
 images/logo-medium-2009.png |  Bin 56077 -> 0 bytes
 images/logo-medium-2010.png |  Bin 98513 -> 0 bytes
 images/logo-small-2009.png  |  Bin 17765 -> 0 bytes
 images/logo-small-2010.png  |  Bin 99573 -> 0 bytes
 images/tango.jpg            |  Bin 8694 -> 0 bytes
 tests/DevTest.py            | 2852 -------------------------------------------
 tests/README                |   20 -
 tests/TangoRunner.py        |  341 ------
 tests/TestSuite.py          |  296 -----
 tests/TestSuiteTemplate.py  |   47 -
 tests/ci/ALBA/build.sh      |  100 --
 tests/ci/build.sh           |   20 -
 30 files changed, 4004 deletions(-)

diff --git a/ci/ALBA/build.sh b/ci/ALBA/build.sh
deleted file mode 100755
index 5b490d5..0000000
--- a/ci/ALBA/build.sh
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/bin/bash
-
-if [ ! -z "$NODE_NAME" -a -f "$NODE_NAME" ]
-then
-	source "$NODE_NAME"
-else
-	echo "The settings file for the node $NODE_NAME does not exist!"
-	echo "Create ci/$INSTITUTE/$NODE_NAME file."
-	exit 1
-fi
-
-export TANGO_ROOT=/tmp/jenkins/jobs/TangoLib
-
-cd ../..
-
-python setup.py build
-
-if [ $? != 0 ]
-then
-	exit $?
-fi
-
-python setup.py install --prefix=/tmp/jenkins/jobs/PyTango
-
-exit $?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-echo LOG4TANGO_ROOT
-echo $LOG4TANGO_ROOT
-echo OMNI_ROOT
-echo $OMNI_ROOT
-echo BOOST_ROOT
-echo $BOOST_ROOT
-echo ZMQ_ROOT
-echo $ZMQ_ROOT
-
-echo C_INCLUDE_PATH
-echo $C_INCLUDE_PATH
-
-echo CPLUS_INCLUDE_PATH
-echo $CPLUS_INCLUDE_PATH
-
-echo CPATH
-echo $CPATH
-
-export CPATH=/tmp/jenkins/jobs/TangoLib/include
-export C_INCLUDE_PATH=/tmp/jenkins/jobs/TangoLib/include:$C_INCLUDE_PATH
-export CPLUS_INCLUDE_PATH=/tmp/jenkins/jobs/TangoLib/include:$CPLUS_INCLUDE_PATH
-
-export TANGO_ROOT=/tmp/jenkins/jobs/TangoLib
-
-
-export LD_LIBRARY_PATH=/tmp/jenkins/jobs/TangoLib/lib:$LD_LIBRARY_PATH
-
-
-echo $LD_LIBRARY_PATH
-echo $CPLUS_INCLUDE_PATH
-
-
-cd ../..
-
-pwd
-
-make user=1 prefix=/tmp/jenkins/jobs install
-
-make user=1 prefix=/tmp/jenkins/jobs install
-
-export PYTHONPATH=/tmp/jenkins/jobs/PyTango:$PYTHONPATH
-
-echo $PYTHONPATH
-
-python tests/DevTest.py pytomasz &
-
-python tests/TestSuite.py
-
-ps -ef | awk '/DevTest.py/ {print$2}' | xargs kill -9
diff --git a/ci/ALBA/ct32suse11 b/ci/ALBA/ct32suse11
deleted file mode 100644
index b554091..0000000
--- a/ci/ALBA/ct32suse11
+++ /dev/null
@@ -1,4 +0,0 @@
-export LOG4TANGO_ROOT=/siciliarep/build/lib/log4tango/log4tango.suse111.32
-export OMNI_ROOT=/siciliarep/build/lib/omniORB/omniORB.suse111.32
-export BOOST_ROOT=/siciliarep/build/lib/boost/boost.suse111.32
-export ZMQ_ROOT=/siciliarep/build/lib/zeromq/zeromq.suse111.32
\ No newline at end of file
diff --git a/ci/ALBA/ct64suse11 b/ci/ALBA/ct64suse11
deleted file mode 100644
index e0e962b..0000000
--- a/ci/ALBA/ct64suse11
+++ /dev/null
@@ -1,4 +0,0 @@
-export LOG4TANGO_ROOT=/siciliarep/build/lib/log4tango/log4tango.suse111.64
-export OMNI_ROOT=/siciliarep/build/lib/omniORB/omniORB.suse111.64
-export BOOST_ROOT=/siciliarep/build/lib/boost/boost.suse111.64
-export ZMQ_ROOT=/siciliarep/build/lib/zeromq/zeromq.suse11.64
diff --git a/ci/ALBA/ct64suse121 b/ci/ALBA/ct64suse121
deleted file mode 100644
index 31d94a6..0000000
--- a/ci/ALBA/ct64suse121
+++ /dev/null
@@ -1,4 +0,0 @@
-export LOG4TANGO_ROOT=/siciliarep/build/lib/log4tango/log4tango.suse121.64
-export OMNI_ROOT=/siciliarep/build/lib/omniORB/omniORB.suse121.64
-export BOOST_ROOT=/siciliarep/build/lib/boost/boost.suse121.64
-export ZMQ_ROOT=/siciliarep/build/lib/zeromq/zeromq.suse121.64
\ No newline at end of file
diff --git a/ci/ESRF/build.sh b/ci/ESRF/build.sh
deleted file mode 100755
index 1b35769..0000000
--- a/ci/ESRF/build.sh
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/bin/bash
-#export CYGWIN="${CYGWIN} nodosfilewarning"
-INSTALL_DIR=/segfs/tango/ci/PyTango
-
-if [ ! -z "$NODE_NAME" -a -f "$NODE_NAME" ]
-then
-	echo $NODE_NAME
-	if [ $NODE_NAME != "ct32windows7" ]
-	then
-        source "$NODE_NAME"
-    fi
-else
-    echo "The settings file for the node $NODE_NAME does not exist!"
-    echo "Create ci/$INSTITUTE/$NODE_NAME file."
-fi
-
-cd ../..
-#used system by default
-
-rm -rf build/*
-
-print $realos
-case "${realos}" in
-	"debian"*)
-		#debian6/7
-        /usr/bin/python setup.py build
-		;; 
-	"redhate"*)
-        #redhate4/5
-        /segfs/bliss/bin/python2.6 setup.py build
-        ;;
-	"windows7")
-		cd /cygdrive/c
-        export PATH=$PATH:/cygdrive/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\ 9.0/Common7/IDE 
-        #export PATH=$PATH:/cygdrive/c/Windows/Microsoft.Net/Framework64/v4.0.30319
-		/bin/rm -rf /cygdrive/c/pytango
-		LIBNAME="PyTango.vcproj"
-		pyVersion="py26 py27"
-		platform="Win32 x64"
-		SLN="C:\jenkins\workspace\PyTango\OperatingSystems\Windows64-VC10\win\PyTango_VS9\PyTango.sln"
-		LIBNAME="PyTango.vcproj"
-		for pv in $pyVersion
-		do
-		    for p in $platform
-		    do
-		        pyN=${pv:2:4}
-			    MODE=$pv"_bopystatic_tangostatic_release|"$p
-			    OUTFILE="c:/Temp/log_"${p}"_"${pyN}
-                echo "BUILD_"$pv"_"$p
-                if [ "$pyN" -eq 33 ]
-                then
-                    SLN="C:\jenkins\workspace\PyTango\OperatingSystems\Windows64-VC10\win\PyTango_VS10"
-					MODE=$pv"_bopystatic_tangostatic_release"
-					MAKE_CMD="MSBuild.exe $SLN/PyTango.vcxproj /p:Platform=$p /t:rebuild /p:Configuration=$MODE /v:quiet /flp:LogFile=$OUTFILE;Summary;ShowCommandLine;Verbosity=minimal"
-                    #MsBuild.exe $SLN /t:Rebuild /p:Configuration=py33_bopystatic_tangostatic_release /p:Platform=x86 /flp:LogFile=C:/Temp/log_
-                else          
-			        MAKE_CMD="devenv.exe $SLN /project PyTango.vcproj /rebuild $MODE /projectconfig $MODE /out $OUTFILE"
-                fi
-			    $MAKE_CMD
-		    done
-		done
-        ;;
-	*)
-		echo "Build - Not supporting operating system: " ${OSTYPE}
-        exit $?
-		;;
-esac
-
-if [ $? != 0 ]
-then
-	exit $?
-fi
-
-case "${realos}" in
-	"debian6_64")
-        rm -rf $INSTALL_DIR/debian6/*
-		/usr/bin/python setup.py install --prefix=$INSTALL_DIR/debian6
-		;; 
-	"debian7_64")
-        rm -rf $INSTALL_DIR/debian7/*
-		/usr/bin/python setup.py install --prefix=$INSTALL_DIR/debian7
-		;; 
-	"redhate4_32")
-        rm -rf $INSTALL_DIR/redhate4/*
-		/segfs/bliss/bin/python2.6 setup.py install --prefix=$INSTALL_DIR/redhate4
-		;;
-	"redhate5_64")
-        rm -rf $INSTALL_DIR/redhate5/*
-		/segfs/bliss/bin/python2.6 setup.py install --prefix=$INSTALL_DIR/redhate5
-		;;
-    "windows7"*)
-		INSTALL_DIR="//unixhome/segfs/tango/ci/PyTango/windows7"
-		/bin/rm -rf $INSTALL_DIR/* || echo "Error executing rm command"
-        /bin/cp -rf /cygdrive/c/pytango/build_8.1.2_tg8.1.2_boost1.53.0/lib  $INSTALL_DIR || echo "Error executing cp command, LIB"
-		/bin/cp -rf /cygdrive/c/pytango/build_8.1.2_tg8.1.2_boost1.53.0/dist  $INSTALL_DIR || echo "Error executing cp command, DIST"
-		/bin/chmod -R 755  $INSTALL_DIR || echo "Error executing chmod command"
-        ;;
-	*)
-		echo "Install - Not supporting operating system: " ${OSTYPE}
-        exit $?
-		;;
-esac
-
-
-exit $?
-
-
-
-
diff --git a/ci/ESRF/ct32redhate4 b/ci/ESRF/ct32redhate4
deleted file mode 100644
index a3398fb..0000000
--- a/ci/ESRF/ct32redhate4
+++ /dev/null
@@ -1,7 +0,0 @@
-export realos=redhate4_32
-export BOOST_ROOT=/segfs/bliss/source/python/PyTango/PyTango7/redhate4
-export OMNI_ROOT=/segfs/tango/release/redhate4
-export TANGO_ROOT=/segfs/tango/release/redhate4
-export NUMPY_ROOT=/segfs/bliss/depot/pythonbliss_5.0/installdir/redhate4/python/lib/python2.6/site-packages/numpy/core
-export LD_LIBRARY_PATH=/segfs/tango/release/redhate4/lib:${LD_LIBRARY_PATH}
-export PKG_CONFIG_PATH=/segfs/tango/release/redhate4/lib/pkgconfig
diff --git a/ci/ESRF/ct32windows7 b/ci/ESRF/ct32windows7
deleted file mode 100644
index acb52d1..0000000
--- a/ci/ESRF/ct32windows7
+++ /dev/null
@@ -1,5 +0,0 @@
-SETX realos windows7
-SETX BOOST_ROOT "C:\Program File (x86)\boost\boost_1_47"
-SETX TANGO_ROOT "C:\Users\falconto\tango\VC9\win32" 
-SETX OMNI_ROOT "C:\Users\falconto\tango\VC9\win32"
-SETX NUMPY_ROOT "C:\Python_27_32\Lib\site-packages\core"
diff --git a/ci/ESRF/ct64debian6 b/ci/ESRF/ct64debian6
deleted file mode 100644
index 3b3f030..0000000
--- a/ci/ESRF/ct64debian6
+++ /dev/null
@@ -1,7 +0,0 @@
-export realos=debian6_64
-export BOOST_ROOT=/usr/lib
-export OMNI_ROOT=/segfs/tango/release/debian6
-export TANGO_ROOT=/segfs/tango/release/debian6
-export NUMPY_ROOT=/usr/lib/pymodules/python2.6/numpy/core
-export LD_LIBRARY_PATH=/segfs/tango/release/debian6/lib:${LD_LIBRARY_PATH}
-export PKG_CONFIG_PATH=/segfs/tango/release/debian6/lib/pkgconfig
diff --git a/ci/ESRF/ct64debian7 b/ci/ESRF/ct64debian7
deleted file mode 100644
index cbe5469..0000000
--- a/ci/ESRF/ct64debian7
+++ /dev/null
@@ -1,8 +0,0 @@
-export realos=debian7_64
-export BOOST_ROOT=/usr/lib
-export NUMPY_ROOT=/usr/lib/pyshared/python2.6/numpy/core
-export OMNI_ROOT=/bliss/users/falconto/install/install_dir/tango8
-export TANGO_ROOT=/bliss/users/falconto/install/install_dir/tango8
-export ZMQ_ROOT=/bliss/users/falconto/install/install_dir/zmq
-export LD_LIBRARY_PATH=/bliss/users/falconto/install/install_dir/tango8/lib:/bliss/users/falconto/install/install_dir/zmq/lib:$LD_LIBRARY_PATH
-export PKG_CONFIG_PATH=/bliss/users/falconto/install/install_dir/tango8/lib/pkgconfig
diff --git a/ci/ESRF/ct64redhate5 b/ci/ESRF/ct64redhate5
deleted file mode 100644
index dc91f7b..0000000
--- a/ci/ESRF/ct64redhate5
+++ /dev/null
@@ -1,7 +0,0 @@
-export realos=redhate5_64
-export BOOST_ROOT=/segfs/bliss/source/python/PyTango/PyTango7/redhate5
-export OMNI_ROOT=/segfs/tango/release/redhate5
-export TANGO_ROOT=/segfs/tango/release/redhate5
-export NUMPY_ROOT=/segfs/bliss/depot/pythonbliss_5.0/installdir/redhate5/python/lib/python2.6/site-packages/numpy/core
-export LD_LIBRARY_PATH=/segfs/tango/release/redhate5/lib:${LD_LIBRARY_PATH}
-export PKG_CONFIG_PATH=/segfs/tango/release/redhate5/lib/pkgconfig
diff --git a/ci/README b/ci/README
deleted file mode 100644
index f089f1d..0000000
--- a/ci/README
+++ /dev/null
@@ -1,48 +0,0 @@
-How to set up PyTango job in Mr Jenkins
----------------------------------------
-
-1. Go to 'Manage Jenkins' -> 'Configure System' -> 'Global properties', tick 'Environment variables' and add a new pare name: INSTITUTE, value: YOURINSTITUTENAME. Having it done Mr Jenkins will automatically set an environmental variable 'INSTITUTE' with the provided value on every machine it builds the project.
-
-2. 'Create a new job' and name it PyTango. Tick 'Build multi-configuration project'.
-
-3. Add 'Description' - what the project is, what are the deliverables (libs, binaries...) and paths where the deliverables are stored. Configure your build script (described below) so the deliverables end up in a directory /tmp/jenkins/jobs/PyTango (just a convention).
-
-4. In S'ource Code Management' tick 'Subversion' and provide the 'Repository URL' to the trunk (https://tango-cs.svn.sourceforge.net/svnroot/tango-cs/bindings/PyTango/trunk). In the Local module directory input field enter dot (.). Thanks to this, the temporary bash file created by Mr Jenkins will be executed from the directory in which the project files are stored on the slave machines - which provides you an easy access to your build scripts.
-
-5. In 'Build Triggers' tick 'Build after other projects are built' if you want to trigger the build of PyTango job after another project is build (e.g. TangoLib) and provide the 'Project name'. If you want to schedule a build at a particular days and hours, tick 'Poll SCM'. Acquaint yourself with the syntax by clicking the question mark icon on the right hand side.
-
-6. If you want to build your the project on different machines, testing its compatibility with numerous operating systems, etc. use the 'Configuration Matrix'. 'Add axis', choose 'Slaves', change the 'name' to SLAVE, tick nodes of your choice (the project will be build just on the nodes you choose). If you want to build your project in various ways (e.g. the debug and release versions) 'Add axis' choose 'User-defined axis' and provide a 'name' (e.g. DEBUGMODE) and space separated values  [...]
-
-7. Go to 'Build' choose 'Execute shell' and enter:
-	cd ci
-	./build.sh
-   If the configuration of Mr Jenkins was done following the aforementioned steps, this will execute the build script tailored for your INSTITUTE. More about the build script and the ci directory file structure below.
-   
-8. Go to 'Post-build Actions' and choose 'E-mail Notification' to inform you about any broken builds.
-
-
-Appendix A
-The 'ci' folder structure and the build script.
-
-In the 'ci' folder there is a 'build.sh' script. This is a default script and can be copied to any new project to support Continuous Integration with the use of Mr Jenkins in different institutes.
-
-The 'build.sh' script simply checks if Mr Jenkins has set up the INSTITUTE environmental variable (look point 1.) and whether in the 'ci' folder exists a directory named 'YOURINSTITUTENAME'. If so, the 'build.sh' enters the YOURINSTITUTENAME directory and executes a 'build.sh' script within it. This is an institute tailored build script.
-
-The 'YOURINSTITUTENAME/build.sh' script contains the recipe of how to build the project in your institute.
-
-If you build the project on different machines and systems it is quite likely that the configuration of the build will be different for different nodes (slaves, machines, hosts).
-For this purpose node dependent properties files have been introduced. The idea is that in the 'YOURINSTITUTENAME' there should be a file for each node used by Mr Jenkins. The file should have the same name as the node name, e.g. 'mynode'. Mr Jenkins automatically sets up an environmental variable called 'NODE_NAME' on each machine it executes a job. The NODE_NAME is the name defined in 'Manage Jenkins' -> 'Manage Nodes' -> 'Name' and this name should be given to the properties file name.
-The below code manages the node properties files:
-
-if [ ! -z "$NODE_NAME" -a -f "$NODE_NAME" ]
-then
-	source "$NODE_NAME"
-else
-	echo "The settings file for the node $NODE_NAME does not exist!"
-	echo "Create ci/$INSTITUTE/$NODE_NAME file."
-	exit 1
-fi
-
-If the file '$NODE_NAME' exists in the 'YOURINSTITUTENAME' directory its content is sourced in the 'build.sh' file and therefore all the variables set in the file are available in the build script.
-
-To make use of them, write your 'build.sh' script in the most generic way you can. When you need to put a node dependent configuration, use a variable. Set a value of this variable in the node properties file (providing different values for different nodes). This way configuring you build after adding or removing a node is limited to simply adding or removing a file in the 'YOURINSTITUTENAME' directory.
diff --git a/ci/build.sh b/ci/build.sh
deleted file mode 100755
index 9ea91e1..0000000
--- a/ci/build.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-
-if [ ! -z "$INSTITUTE" -a -d "$INSTITUTE" -a -f "$INSTITUTE/build.sh" ]
-then
-	echo "Executing build.sh for $INSTITUTE"
-	cd "$INSTITUTE"
-	./build.sh
-	exit $?
-else
-	if [ ! -z "$INSTITUTE" ]
-	then
-		echo "Failed to execute ci/$INSTITUTE/build.sh !"
-		echo "Make sure ci/$INSTITUTE/build.sh exists"
-	else
-		echo "Mr Jenkins needs additional configuration!"
-		echo "Go to Jenkins dashboard -> Manage Jenkins -> Global Properties, tick Environment Variables and add a key-value pair: name - INSTITUTE, value - YourInstituteName."
-		echo "Check out the project. Go to the 'ci' directory and create a 'YourInstituteName' subdirectory. In the 'YourInstituteName' subdirectory create a 'build.sh' file which will contain the recipe how to build your project. Make the 'build.sh' file executable. Commit changes."
-	fi
-	exit 1
-fi
diff --git a/images/banner.xcf b/images/banner.xcf
deleted file mode 100644
index 9bbcc08..0000000
Binary files a/images/banner.xcf and /dev/null differ
diff --git a/images/itango_console.png b/images/itango_console.png
deleted file mode 100644
index 875d023..0000000
Binary files a/images/itango_console.png and /dev/null differ
diff --git a/images/itango_qtconsole.png b/images/itango_qtconsole.png
deleted file mode 100644
index b95235e..0000000
Binary files a/images/itango_qtconsole.png and /dev/null differ
diff --git a/images/logo-2009.xcf b/images/logo-2009.xcf
deleted file mode 100644
index 341f6d4..0000000
Binary files a/images/logo-2009.xcf and /dev/null differ
diff --git a/images/logo-2010.png b/images/logo-2010.png
deleted file mode 100644
index cd21332..0000000
Binary files a/images/logo-2010.png and /dev/null differ
diff --git a/images/logo-2010.xcf b/images/logo-2010.xcf
deleted file mode 100644
index 70fecce..0000000
Binary files a/images/logo-2010.xcf and /dev/null differ
diff --git a/images/logo-medium-2009.png b/images/logo-medium-2009.png
deleted file mode 100644
index 60ea495..0000000
Binary files a/images/logo-medium-2009.png and /dev/null differ
diff --git a/images/logo-medium-2010.png b/images/logo-medium-2010.png
deleted file mode 100644
index 4877109..0000000
Binary files a/images/logo-medium-2010.png and /dev/null differ
diff --git a/images/logo-small-2009.png b/images/logo-small-2009.png
deleted file mode 100644
index 06b4527..0000000
Binary files a/images/logo-small-2009.png and /dev/null differ
diff --git a/images/logo-small-2010.png b/images/logo-small-2010.png
deleted file mode 100644
index 696c926..0000000
Binary files a/images/logo-small-2010.png and /dev/null differ
diff --git a/images/tango.jpg b/images/tango.jpg
deleted file mode 100644
index 2c84021..0000000
Binary files a/images/tango.jpg and /dev/null differ
diff --git a/tests/DevTest.py b/tests/DevTest.py
deleted file mode 100644
index 057afd3..0000000
--- a/tests/DevTest.py
+++ /dev/null
@@ -1,2852 +0,0 @@
-
-import PyTango
-import sys
-import os
-import time
-import string
-import threading
-from twisted.plugins.cred_anonymous import theAnonymousCheckerFactory
-
-class EventCallBack:
-    def __init__(self):
-        self.cb_executed = 0
-        self.cb_err = 0
-        self.old_sec = 0
-        self.old_usec = 0 
-        self.delta_msec = 0
-        
-    def push_event(self, event_data):
-        if sys.platform == 'win32':
-            gettime = time.clock
-        else:
-            gettime = time.time
-        t = gettime()
-        sec = int(t)
-        usec = int((t - sec) * 1000000)
-        print('date : tv_sec = ' + str(sec) + ', tv_usec = ' + str(usec))
-        delta_msec = int(((sec - self.old_sec) * 1000000 + (usec - self.old_usec)) / 1000)
-        self.old_sec = sec
-        self.old_usec = usec
-        print('delta_msec = ' + str(delta_msec))
-        self.cb_executed += 1
-        try:
-            print('StateEventCallBack::push_event(): called attribute ' + event_data.attr_name + ' event ' + event_data.event)
-            if event_data.err == False:
-                print('CallBack vector value : ' + str(event_data.attr_value.value))
-            else:
-                print('Error send to callback')
-                if event_data.errors[0].reason == 'aaa':
-                    self.cb_err += 1
-        except:
-            print('EventCallBack::push_event(): could not extract data !')
-        
-
-class DevTest(PyTango.Device_4Impl):
-    def __init__(self,cl,name):
-        PyTango.Device_4Impl.__init__(self,cl,name)
-        print('In DevTest __init__')
-        DevTest.init_device(self)
-
-    def init_device(self):
-        print('In Python init_device method')
-        self.set_state(PyTango.DevState.ON)
-
-        self.Short_attr_except = False
-        self.event_change_attr_except = False
-        self.event_quality_attr_except = False
-        self.event_throw_out_of_sync = False
-
-        self.attr_long = 1246
-        self.attr_short_rw = 66;
-        self.attr_long_rw2 = -1
-        self.PollLong_attr_num = 0;
-        self.PollString_spec_attr_num = 0;
-
-        self.attr_short_array = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
-        self.attr_long_array = [1,2,3,4,5,6,7,8,9,10]
-        self.attr_db_array = [7.77,8.88,9.99]
-        self.attr_str_array = ['a','b']
-
-        self.attr_short_rw = 66
-
-        self.attr_spec_float = [1,2,3]
-        self.attr_spec_boolean = [1,2,3,4,5]
-        self.attr_spec_ushort = [1,2]
-        self.attr_spec_uchar = [1,2,3,4,5,6]
-        self.Long_spec_attr_rw = [1,2,3,4]
-
-        self.num_cmd1 = 0
-        self.num_cmd2 = 0
-        self.attr_event_size = 4
-        self.attr_event = [10,20,30,40,50,60,70,80,90,100]
-        self.attr_event64_size = 2
-        self.attr_event64 = [0x800000000,44,55]
-        self.attr_qua_event = [1.2,2.4]
-        self.attr_event_qua = PyTango.AttrQuality.ATTR_VALID
-
-        self.fast_actua = 0.0
-        self.slow_actua = 0
-        self.slow_actua_write = 0
-        
-        self.enc_attr_data = bytes(bytearray([97,98,99,100]))
-        self.enc_attr = ['Which format?', self.enc_attr_data] #''.join(chr(i) for i in self.enc_attr_data).encode('utf-8')]
-        self.enc_format_toggle = False
-        self.encoded_cmd_ctr = 0
-        self.remote_dev = None
-        self.cb = EventCallBack()
-        self.eve_id = 0
-        
-        self.attr_ulong_rw = 0xC0000000
-        self.attr_ulong64_rw = 0xC000000000000000
-        
-        self.attr_state_rw = PyTango.DevState.FAULT
-        self.attr_spec_ulong_rw = [2222,22222,222222]
-        self.attr_spec_ulong64_rw = [8888,88888,888888]
-        self.attr_spec_state_rw = [PyTango.DevState.ON,PyTango.DevState.OFF]
-        self.attr_sub_device_tst = False
-        self.attr_slow = 3.3
-        self.att_conf = 10
-
-#------------------------------------------------------------------
-
-    def delete_device(self):
-        print('[Device delete_device method] for device',self.get_name())
-
-#------------------------------------------------------------------
-
-    def signal_handler(self,in_sig):
-        print('[Device signal handler] received signal number',in_sig,' for device',self.get_name())
-
-#------------------------------------------------------------------
-
-#    def State(self):
-#        print "[Device] In my own State method"
-#        sta = PyTango.Device_3Impl.dev_state(self)
-#        print 'Original state =',sta
-#        self.set_state(PyTango.DevState.STANDBY)
-#        return self.get_state()
-
-#------------------------------------------------------------------
-
-#    def Status(self):
-#        print "[Device] In my own Status method"
-#        self.st = PyTango.Device_3Impl.dev_status(self)
-#        print "Status =",self.st
-#        self.st = self.st + " Si,si...."
-#        return self.st
-
-#------------------------------------------------------------------
-
-    def is_IOVoid_allowed(self):
-        print('In is_IOVoid_allowed method')
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOVoid(self):
-        print('[IOVoid::execute] ')
-
-#------------------------------------------------------------------
-
-    def is_IOBool_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOBool(self,in_bool):
-        print('[IOBool::execute] received number',in_bool,' type = ',type(in_bool))
-        if (in_bool == True):
-            in_bool = False
-        else:
-            in_bool = True
-        print('[IOBool::execute] return number',in_bool)
-        return in_bool;
-
-#------------------------------------------------------------------
-
-    def is_IOShort_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOShort(self,in_data):
-        print('[IOShort::execute] received number',in_data,' type = ',type(in_data))
-        in_data = in_data * 2;
-        print('[IOShort::execute] return number',in_data)
-        return in_data;
-
-#------------------------------------------------------------------
-
-    def is_IOLong_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOLong(self,in_data):
-        print('[IOLong::execute] received number',in_data,' type = ',type(in_data))
-        in_data = in_data * 2;
-        print('[IOLong::execute] return number',in_data)
-        return in_data;
-
-#------------------------------------------------------------------
-
-    def is_IOFloat_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOFloat(self,in_data):
-        print('[IOFloat::execute] received number',in_data,' type = ',type(in_data))
-        in_data = in_data * 2;
-        print('[IOFloat::execute] return number',in_data)
-        return in_data;
-
-#------------------------------------------------------------------
-
-    def is_IODouble_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IODouble(self,in_data):
-        print('[IODouble::execute] received number',in_data,' type = ',type(in_data))
-        in_data = in_data * 2;
-        print('[IODouble::execute] return number',in_data)
-        return in_data;
-
-#------------------------------------------------------------------
-
-    def is_IOUShort_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOUShort(self,in_data):
-        print('[IOUShort::execute] received number',in_data,' type = ',type(in_data))
-        in_data = in_data * 2;
-        print('[IOUShort::execute] return number',in_data)
-        return in_data;
-
-#------------------------------------------------------------------
-
-    def is_IOULong_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOULong(self,in_data):
-        print('[IOULong::execute] received number',in_data,' type = ',type(in_data))
-        in_data = in_data * 2;
-        print('[IOULong::execute] return number',in_data)
-        return in_data;
-
-#------------------------------------------------------------------
-
-    def is_IOString_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOString(self,in_data):
-        print("[IOString::execute] received string",in_data," type = ",type(in_data))
-        l = range(len(in_data) - 1,-1,-1)
-        out_data=""
-        for i in l:
-            out_data = out_data + in_data[i]
-        print("[IOString::execute] return string",out_data)
-#        self.y = out_data
-        return out_data;
-
-#------------------------------------------------------------------
-
-    def is_IOCharArray_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOCharArray(self,in_data):
-        l = range(len(in_data)-1,-1,-1);
-        out_index=0
-        out_data=[]
-        for i in l:
-            print("[IOCharArray::execute] received char",in_data[out_index])
-            out_data.append(in_data[i])
-            print("[IOStringArray::execute] return char",out_data[out_index])
-            out_index = out_index+1
-        return out_data
-
-#------------------------------------------------------------------
-
-    def is_IOShortArray_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOShortArray(self,in_data):
-        l = range(len(in_data));
-        for i in l:
-            print("[IOShortArray::execute] received number",in_data[i])
-            in_data[i] = in_data[i] * 2
-            print("[IOShortArray::execute] return number",in_data[i])
-        return in_data
-
-
-#------------------------------------------------------------------
-
-    def is_IOLongArray_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOLongArray(self,in_data):
-        l = range(len(in_data));
-        for i in l:
-            print("[IOLongArray::execute] received number",in_data[i])
-            in_data[i] = in_data[i] * 2
-            print("[IOLongArray::execute] return number",in_data[i])
-        return in_data
-
-#------------------------------------------------------------------
-
-    def is_IOFloatArray_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOFloatArray(self,in_data):
-        l = range(len(in_data));
-        for i in l:
-            print("[IOFloatArray::execute] received number",in_data[i])
-            in_data[i] = in_data[i] * 2
-            print("[IOFloatArray::execute] return number",in_data[i])
-        return in_data
-
-#------------------------------------------------------------------
-
-    def is_IODoubleArray_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IODoubleArray(self,in_data):
-        l = range(len(in_data));
-        for i in l:
-            print("[IODoubleArray::execute] received number",in_data[i])
-            in_data[i] = in_data[i] * 2
-            print("[IODoubleArray::execute] return number",in_data[i])
-        return in_data
-
-#------------------------------------------------------------------
-
-    def is_IOUShortArray_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOUShortArray(self,in_data):
-        l = range(len(in_data));
-        for i in l:
-            print("[IOUShortArray::execute] received number",in_data[i])
-            in_data[i] = in_data[i] * 2
-            print("[IOUShortArray::execute] return number",in_data[i])
-        return in_data
-
-#------------------------------------------------------------------
-
-    def is_IOULongArray_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOULongArray(self,in_data):
-        l = range(len(in_data));
-        for i in l:
-            print("[IOULongArray::execute] received number",in_data[i])
-            in_data[i] = in_data[i] * 2
-            print("[IOULongArray::execute] return number",in_data[i])
-        return in_data
-
-#------------------------------------------------------------------
-
-    def is_IOStringArray_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOStringArray(self,in_data):
-        l = range(len(in_data)-1,-1,-1);
-        out_index=0
-        out_data=[]
-        for i in l:
-            print("[IOStringArray::execute] received String",in_data[out_index])
-            out_data.append(in_data[i])
-            print("[IOStringArray::execute] return String",out_data[out_index])
-            out_index = out_index+1
-        return out_data
-
-#------------------------------------------------------------------
-
-    def is_IOLongString_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOLongString(self,in_data):
-        l = range(len(in_data[0]))
-        for i in l:
-            print("[IOLongString::execute] received number",in_data[0][i])
-            in_data[0][i] = in_data[0][i] * 2
-            print("[IOLongString::execute] return number",in_data[0][i])
-
-        l = range(len(in_data[1]))
-        for i in l:
-            print("[IOLongString::execute] received string",in_data[1][i])
-            print("[IOLongString::execute] return string",in_data[1][i])
-        return in_data
-
-#------------------------------------------------------------------
-
-    def is_IODoubleString_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IODoubleString(self,in_data):
-        l = range(len(in_data[0]))
-        for i in l:
-            print("[IODoubleString::execute] received number",in_data[0][i])
-            in_data[0][i] = in_data[0][i] * 2
-            print("[IODoubleString::execute] return number",in_data[0][i])
-
-        l = range(len(in_data[1]))
-        for i in l:
-            print("[IODoubleString::execute] received string",in_data[1][i])
-            print("[IODoubleString::execute] return string",in_data[1][i])
-        return in_data
-
-#------------------------------------------------------------------
-
-    def IOState(self,in_data):
-        print "[IOState::execute] received state",in_data
-        self.set_state(in_data)
-
-#------------------------------------------------------------------
-
-    def is_IOThrow_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOThrow(self,in_data):
-        print "[IOThrow::execute] throwing severity exception",in_data[0][0]
-        if (in_data[0][0] == PyTango.ErrSeverity.WARN):
-            PyTango.Except.throw_exception(in_data[1][0],'This is a test','IOThrow::execute()',PyTango.ErrSeverity.WARN)
-        elif (in_data[0][0] == PyTango.ErrSeverity.ERR):
-            PyTango.Except.throw_exception(in_data[1][0],'This is a test','IOThrow::execute()',PyTango.ErrSeverity.ERR)
-        if (in_data[0][0] == PyTango.ErrSeverity.PANIC):
-            PyTango.Except.throw_exception(in_data[1][0],'This is a test','IOThrow::execute()',PyTango.ErrSeverity.PANIC)
-
-
-
-#------------------------------------------------------------------
-
-    def is_IOReThrow_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOReThrow(self,in_data):
-        nb_except = len(in_data[0])
-        print "[IOReThrow::execute] throwing",nb_except,"exception(s)"
-        try:
-            if (in_data[0][0] == PyTango.ErrSeverity.WARN):
-                PyTango.Except.throw_exception(in_data[1][0],'This is a test','IOThrow::execute()',PyTango.ErrSeverity.WARN)
-            elif (in_data[0][0] == PyTango.ErrSeverity.ERR):
-                PyTango.Except.throw_exception(in_data[1][0],'This is a test','IOThrow::execute()',PyTango.ErrSeverity.ERR)
-            elif (in_data[0][0] == PyTango.ErrSeverity.PANIC):
-                PyTango.Except.throw_exception(in_data[1][0],'This is a test','IOThrow::execute()',PyTango.ErrSeverity.PANIC)
-        except PyTango.DevFailed,e:
-            if (nb_except > 2):
-                ind = 1
-                for i in range(nb_except - 2):
-                    try:
-                        sev = in_data[0][ind]
-                        if (sev == PyTango.ErrSeverity.WARN):
-                            PyTango.Except.re_throw_exception(e,in_data[1][ind],'This is a test','IOReThrow::execute()',PyTango.ErrSeverity.WARN)
-                        elif (sev == PyTango.ErrSeverity.ERR):
-                            PyTango.Except.re_throw_exception(e,in_data[1][ind],'This is a test','IOReThrow::execute()',PyTango.ErrSeverity.ERR)
-                        elif (sev == PyTango.ErrSeverity.PANIC):
-                            PyTango.Except.re_throw_exception(e,in_data[1][ind],'This is a test','IOReThrow::execute()',PyTango.ErrSeverity.PANIC)
-                    except PyTango.DevFailed,ex:
-                        ind = ind + 1
-                        e = ex
-
-
-            last_sever = in_data[0][nb_except - 1]
-            if (last_sever == PyTango.ErrSeverity.WARN):
-                PyTango.Except.re_throw_exception(e,in_data[1][nb_except-1],'This is a test','IOReThrow::execute()',PyTango.ErrSeverity.WARN)
-            elif (last_sever == PyTango.ErrSeverity.ERR):
-                PyTango.Except.re_throw_exception(e,in_data[1][nb_except-1],'This is a test','IOReThrow::execute()',PyTango.ErrSeverity.ERR)
-            elif (last_sever == PyTango.ErrSeverity.PANIC):
-                PyTango.Except.re_throw_exception(e,in_data[1][nb_except-1],'This is a test','IOReThrow::execute()',PyTango.ErrSeverity.PANIC)
-
-#------------------------------------------------------------------
-
-    def is_IODevByName_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IODevByName(self,in_data):
-        try:
-            print "[IODevByName::execute] received dev name",in_data
-            U = PyTango.Util.instance()
-            dev = U.get_device_by_name(in_data)
-            self.name = dev.get_name()
-            return self.name
-
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def is_IODServDevice_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IODServDevice(self):
-        try:
-            print "[IODServDevice::execute]"
-            U = PyTango.Util.instance()
-            dev = U.get_dserver_device()
-            self.name = dev.get_name()
-            return self.name
-
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def is_IODevListByClass_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IODevListByClass(self,in_data):
-        try:
-            print "[IODevListByClass::execute] received class name",in_data
-            U = PyTango.Util.instance()
-            dev_list = U.get_device_list_by_class(in_data)
-            print dev_list.size()," devices in class", in_data
-            name = dev_list.at(0).get_name()
-            self.ret_name = name[:string.rfind(name,'/')]
-            return self.ret_name
-
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def IOInitWAttr(self):
-        self.dev_m_attr = self.get_device_attr()
-        self.w_attr = self.dev_m_attr.get_w_attr_by_name("Short_attr_w")
-        self.w_attr.set_write_value(10)
-
-        self.w_attr = self.dev_m_attr.get_w_attr_by_name("Long_attr_w")
-        self.w_attr.set_write_value(100);
-
-        self.w_attr = self.dev_m_attr.get_w_attr_by_name("Double_attr_w")
-        self.w_attr.set_write_value(1.1);
-
-        self.w_attr = self.dev_m_attr.get_w_attr_by_name("String_attr_w")
-        self.w_attr.set_write_value("Init");
-
-#------------------------------------------------------------------
-
-    def is_IOSetAttr_allowed(self):
-        if ((self.get_state() == PyTango.DevState.ON) or (self.get_state() == PyTango.DevState.ALARM)):
-            return True
-        else:
-            return False
-
-
-    def IOSetAttr(self,in_data):
-        try:
-            print "[IOSetAttr::execute] received number ",in_data
-            self.attr_long = in_data
-
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def is_IOAddAttribute_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOAddAttribute(self):
-        try:
-            print "[IOAddAttribute::execute] "
-            at = PyTango.Attr("Added_short_attr", PyTango.ArgType.DevShort, PyTango.AttrWriteType.READ)
-            def_prop = PyTango.UserDefaultAttrProp()
-            def_prop.set_label("Test label");
-            def_prop.set_description("Test description");
-            def_prop.set_format("Illisible");
-            at.set_default_properties(def_prop);
-            self.add_attribute(at);
-
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def is_IORegSig_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IORegSig(self,in_data):
-        try:
-            print "[IORegSig::execute] received signal number ",in_data
-            self.register_signal(in_data)
-
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-
-    def is_IOUnregSig_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOUnregSig(self,in_data):
-        try:
-            print "[IOUnregSig::execute] received signal number ",in_data
-            self.unregister_signal(in_data)
-
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def is_IORegClassSig_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IORegClassSig(self,in_data):
-        try:
-            print "[IORegClassSig::execute] received signal number ",in_data
-            dc = self.get_device_class()
-            dc.register_signal(in_data)
-
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def is_IOUnregClassSig_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOUnregClassSig(self,in_data):
-        try:
-            print "[IOUnregClassSig::execute] received signal number ",in_data
-            ds = self.get_device_class()
-            ds.unregister_signal(in_data)
-
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def is_IOStr1_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOStr1(self):
-        try:
-            out_data = "Hello from IOStr1"
-            self.y = out_data
-            return out_data;
-
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def is_IOStr2_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOStr2(self):
-        try:
-            out_data = "Hello from IOStr2"
-            self.y = out_data
-            return out_data;
-
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def is_IOExcept_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOExcept(self):
-        PyTango.Except.throw_exception("API_ThrowException","This is a test ","IOExcept::execute()")
-
-#------------------------------------------------------------------
-
-    def IOStartPoll(self):
-        return 11
-
-#------------------------------------------------------------------
-
-    def is_IOPollStr1_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOPollStr1(self):
-        try:
-            self.num_cmd1 += 1
-            if ((self.num_cmd1 % 2) == 0):
-                return "Even value from IOPollStr1"
-            else:
-                return "Odd value from IOPollStr1"
-
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def is_IOPollArray2_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOPollArray2(self):
-        try:
-            self.num_cmd2 += 1
-            if ((self.num_cmd2 % 2) == 0):
-                self.attr_short_array = [100,200]
-            else:
-                self.attr_short_array = [300,400]
-                return self.attr_short_array
-
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-
-#------------------------------------------------------------------
-
-    def is_IOArray1_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOArray1(self):
-        try:
-            self.ioarray1 = [10,20,30,40]
-            return self.ioarray1
-
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def IOTrigPoll(self,in_data):
-        print "In IOTrigPoll command"
-        U = PyTango.Util.instance()
-        U.trigger_cmd_polling(self,in_data)
-
-#------------------------------------------------------------------
-
-    def IOAttrTrigPoll(self,in_data):
-        print "In IOAttrTrigPoll command"
-        U = PyTango.Util.instance()
-        U.trigger_attr_polling(self,in_data)
-
-#------------------------------------------------------------------
-
-    def IOShortSleep(self,in_data):
-        time.sleep(in_data[1])
-        return in_data[0] * 2
-
-#------------------------------------------------------------------
-
-    def IOSleepExcept(self,in_data):
-        time.sleep(in_data)
-        PyTango.Except.throw_exception("aaa","This is a test ","IOSleepExcept::execute()")
-
-#------------------------------------------------------------------
-
-    def IOAttrThrowEx(self,in_data):
-        if (in_data[0] == 0):
-            if (in_data[1] == 0):
-                self.Short_attr_except = False
-            else:
-                self.Short_attr_except = True
-        elif (in_data[0] == 1):
-            if (in_data[1] == 0):
-                self.event_change_attr_except = False
-            else:
-                self.event_change_attr_except = True
-        elif (in_data[0] == 2):
-            if (in_data[1] == 0):
-                self.event_quality_attr_except = False
-            else:
-                self.event_quality_attr_except = True
-        elif (in_data[0] == 3):
-            if (in_data[1] == 0):
-                self.event_throw_out_of_sync = False
-            else:
-                self.event_throw_out_of_sync = True
-
-#------------------------------------------------------------------
-
-    def IOAddOneElt(self):
-        self.attr_event_size += 1
-
-#------------------------------------------------------------------
-
-    def IORemoveOneElt(self):
-        self.attr_event_size -= 1
-
-#------------------------------------------------------------------
-
-    def IOIncValue(self):
-        self.attr_event[2] += 1
-
-#------------------------------------------------------------------
-
-    def IODecValue(self):
-        self.attr_event[2] -= 1
-
-#------------------------------------------------------------------
-
-    def IOChangeQuality(self,in_data):
-        if (in_data == 0):
-            self.attr_event_qua = PyTango.AttrQuality.ATTR_VALID
-        elif (in_data == 1):
-            self.attr_event_qua = PyTango.AttrQuality.ATTR_INVALID
-        elif (in_data == 2):
-            self.attr_event_qua = PyTango.AttrQuality.ATTR_ALARM
-        elif (in_data == 3):
-            self.attr_event_qua = PyTango.AttrQuality.ATTR_CHANGING
-
-#------------------------------------------------------------------
-
-    def IOPushEvent(self):
-        print "[DevTest::IOPushEvent] received"
-#        ex = ({'reason':"Pourqoi pas",'desc':"N'importe quoi",'origin':'ici','severity':'ERROR'})
-#        self.push_event("event_change_tst",ex)
-        self.push_event("event_change_tst",self.attr_event,self.attr_event_size)
-
-#------------------------------------------------------------------
-
-    def is_IOLong64_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOLong64(self,in_data):
-        print "[IOLong64::execute] received number",in_data," type = ",type(in_data)
-        in_data = in_data * 2;
-        print "[IOLong64::execute] return number",in_data
-        return in_data;
-
-#------------------------------------------------------------------
-
-    def is_IOULong64_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOULong64(self,in_data):
-        print "[IOULong64::execute] received number",in_data," type = ",type(in_data)
-        in_data = in_data * 2;
-        print "[IOULong64::execute] return number",in_data
-        return in_data;
-
-#------------------------------------------------------------------
-
-    def is_IOLong64Array_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOLong64Array(self,in_data):
-        l = range(len(in_data));
-        for i in l:
-            print "[IOLong64Array::execute] received number",in_data[i]
-            in_data[i] = in_data[i] * 2
-            print "[IOLong64Array::execute] return number",in_data[i]
-        return in_data
-
-#------------------------------------------------------------------
-
-    def is_IOULong64Array_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOULong64Array(self,in_data):
-        l = range(len(in_data));
-        for i in l:
-            print "[IOULong64Array::execute] received number",in_data[i]
-            in_data[i] = in_data[i] * 2
-            print "[IOULong64Array::execute] return number",in_data[i]
-        return in_data
-
-#------------------------------------------------------------------
-
-#    def IOChangeStatus(self):
-#        print "[DevTest::IOChangeStatus] received"
-#        sta = self.get_status()
-#        print "Status =",sta
-#        sta = sta + "Hola, que tal ?"
-#        self.set_status(sta)
-
-#------------------------------------------------------------------
-
-    def is_IOSleep_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOSleep(self,in_data):
-        print "[IOSleep::execute] sleeping time ",in_data
-        time.sleep(in_data)
-
-#------------------------------------------------------------------
-
-    def is_IOArray2_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOArray2(self):
-        try:
-            self.attr_short_array = [100,200]
-            return self.attr_short_array
-
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def is_IOStrArray_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOStrArray(self):
-        dev_string_array = ['First string from dev_string_array','Second string from dev_string_array']
-        return dev_string_array
-
-#------------------------------------------------------------------
-
-    def is_IOStruct_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOStruct(self):
-        dev_struct = [[1000,2000],['First string from dev_struct','Second string from dev_struct']]
-        return dev_struct
-
-#------------------------------------------------------------------
-
-    def is_IORemoveAttribute_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IORemoveAttribute(self):
-        try:
-            print( '[IORemoveAttribute::execute] ')
-            self.remove_attribute('Added_short_attr')
-        
-        except PyTango.DevFailed,e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def is_IOSeqVecChar_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOSeqVecChar(self,in_data):
-        print('[IOSeqVecChar::execute] ' + str(len(in_data)) + ' elt(s) in temp vector')
-        return in_data
-
-#------------------------------------------------------------------
-
-    def is_IOSeqVecShort_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOSeqVecShort(self,in_data):
-        print('[IOSeqVecShort::execute] ' + str(len(in_data)) + ' elt(s) in temp vector')
-        return in_data
-
-#------------------------------------------------------------------
-
-    def is_IOSeqVecLong_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOSeqVecLong(self,in_data):
-        print('[IOSeqVecLong::execute] ' + str(len(in_data)) + ' elt(s) in temp vector')
-        return in_data
-
-#------------------------------------------------------------------
-
-    def is_IOSeqVecFloat_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOSeqVecFloat(self,in_data):
-        print('[IOSeqVecFloat::execute] ' + str(len(in_data)) + ' elt(s) in temp vector')
-        return in_data
-
-#------------------------------------------------------------------
-
-    def is_IOSeqVecDouble_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOSeqVecDouble(self,in_data):
-        print('[IOSeqVecDouble::execute] ' + str(len(in_data)) + ' elt(s) in temp vector')
-        return in_data
-
-#------------------------------------------------------------------
-
-    def is_IOSeqVecUShort_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOSeqVecUShort(self,in_data):
-        print('[IOSeqVecUShort::execute] ' + str(len(in_data)) + ' elt(s) in temp vector')
-        return in_data
-
-#------------------------------------------------------------------
-
-    def is_IOSeqVecULong_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOSeqVecULong(self,in_data):
-        print('[IOSeqVecULong::execute] ' + str(len(in_data)) + ' elt(s) in temp vector')
-        return in_data
-
-#------------------------------------------------------------------
-
-    def is_IOSeqVecString_allowed(self):
-        if (self.get_state() == PyTango.DevState.ON):
-            return True
-        else:
-            return False
-
-    def IOSeqVecString(self,in_data):
-        print('[IOSeqVecString::execute] ' + str(len(in_data)) + ' elt(s) in temp vector')
-        return in_data
-
-#------------------------------------------------------------------
-
-    def IOExit(self):
-        os._exit(0)
-
-#------------------------------------------------------------------
-
-    def IOPushDevEncodedEvent(self):
-        try:
-            print('[DevTest::IOPushDevEncodedEvent] received ')
-            self.push_event('Encoded_attr','','',*self.enc_attr)
-            
-        except PyTango.DevFailed as e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def IOSubscribeEvent(self):
-        try:
-            print('[DevTest::IOSubscribeEvent] received ')
-            if self.remote_dev is None:
-                devName = self.get_name()
-                newName =  devName[:devName.rfind('/')] + '/20'
-                self.remote_dev = PyTango.DeviceProxy(newName)
-            attr_name = 'short_attr'
-            self.cb.cb_executed = 0
-            self.remote_dev.poll_attribute(attr_name, 1000)
-            self.eve_id = self.remote_dev.subscribe_event(attr_name, PyTango.EventType.PERIODIC_EVENT,self.cb)
-        
-        except PyTango.DevFailed as e:
-            PyTango.Except.print_exception(e)
-            raise
-#        U = PyTango.Util.instance()
-#        devList = U.get_device_list_by_class('Starter')
-
-#------------------------------------------------------------------
-
-    def IOUnSubscribeEvent(self):
-        try:
-            print('[DevTest::IOUnSubscribeEvent] received ')
-            if self.eve_id != 0:
-                self.remote_dev.unsubscribe_event(self.eve_id)
-                self.remote_dev.stop_poll_attribute('short_attr')
-        
-        except PyTango.DevFailed as e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def IOGetCbExecuted(self):
-        print('[IOGetCbExecuted::execute] received number ')
-        return self.cb.cb_executed
-
-#------------------------------------------------------------------
-
-    def is_OLong_allowed(self):
-        if self.get_state() == PyTango.DevState.ON:
-            return True
-        else:
-            return False
-        
-    def OLong(self):
-        theNumber = 22
-        print('[OLong::execute] return number ' + str(theNumber)) 
-        return theNumber
-
-#------------------------------------------------------------------
-
-    def is_OULong_allowed(self):
-        if self.get_state() == PyTango.DevState.ON:
-            return True
-        else:
-            return False
-        
-    def OULong(self):
-        theNumber = 333
-        print('[OULong::execute] return number ' + str(theNumber)) 
-        return theNumber
-
-#------------------------------------------------------------------
-
-    def is_OLongArray_allowed(self):
-        if self.get_state() == PyTango.DevState.ON:
-            return True
-        else:
-            return False
-        
-    def OLongArray(self):
-        theReturnedArray = range(555,559)
-        for i in theReturnedArray:
-            print('[OLongArray::execute] return number ' + str(i)) 
-        return theReturnedArray
-
-#------------------------------------------------------------------
-
-    def is_OULongArray_allowed(self):
-        if self.get_state() == PyTango.DevState.ON:
-            return True
-        else:
-            return False
-        
-    def OULongArray(self):
-        theReturnedArray = range(777,780)
-        for i in theReturnedArray:
-            print('[OULongArray::execute] return number ' + str(i)) 
-        return theReturnedArray
-
-#------------------------------------------------------------------
-
-    def is_OLongString_allowed(self):
-        if self.get_state() == PyTango.DevState.ON:
-            return True
-        else:
-            return False
-        
-    def OLongString(self):
-        lvalue = range(999,1005)
-        svalue = ['Hola todos'] * 1
-        theReturned = (lvalue,svalue)
-        for i in lvalue:
-            print('[OLongString::execute] return number ' + str(i))
-        for i in svalue:
-            print('[OLongString::execute] return string ' + str(i))
-        return theReturned
-
-#------------------------------------------------------------------
-
-    def GetLongSize(self):
-        size = 32
-        if PyTango.constants.TANGO_LONG64 == True:
-            size = 64
-        return size
-
-#------------------------------------------------------------------
-
-    def IOSetWAttrLimit(self,in_data):
-        try:
-            w_attr = self.get_device_attr().get_w_attr_by_name('Double_attr_w')
-            limit = in_data[1]
-            if in_data[0] == 0.0:
-                w_attr.set_min_value(limit)
-            else:
-                w_attr.set_max_value(limit)
-                
-        except PyTango.DevFailed as e:
-            PyTango.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def ChangeEncodedFormat(self):
-        if self.enc_format_toggle == False:
-            self.enc_attr[0] = 'This format'
-            self.enc_format_toggle = True
-        else:
-            self.enc_attr[0] = 'Another format'
-            self.enc_format_toggle = False
-            
-#------------------------------------------------------------------
-
-    def ChangeEncodedData(self):
-        data = bytearray(self.enc_attr[1])
-        data[2] += 1
-        self.enc_attr[1] = data
-#        self.enc_attr[1][2] = chr(ord(self.enc_attr[1][2]) + 1).encode('utf-8')
-            
-#------------------------------------------------------------------
-
-    def PushDataReady(self,in_data):
-        try:
-            print('Pushing Data Ready event for attribute ' + in_data[1][0])
-            self.push_data_ready_event(in_data[1][0],in_data[0][0])
-            
-        except PyTango.DevFailed as e:
-            PyTagno.Except.print_exception(e)    
-            
-#------------------------------------------------------------------
-
-    def SubDeviceThread(self):
-        try:
-            tg = PyTango.Util.instance()
-            deviceList = tg.get_device_list_by_class('DevTest')
-            if len(deviceList) > 1:
-                deviceList = sorted([device.get_name() for device in deviceList])
-                # choose the 2nd device as a Sub Device
-                print('Thread : Connect device = ' + deviceList[1])
-                remote_device = PyTango.DeviceProxy(deviceList[1])
-                
-        except PyTango.DevFailed:
-            pass
-        
-
-    def SubDeviceTst(self):
-        try:
-            t = threading.Thread(target=self.SubDeviceThread)
-            t.start()
-            
-            connected = False
-            tg = PyTango.Util.instance()
-            deviceList = tg.get_device_list_by_class('DevTest')
-            if len(deviceList) > 2:
-                deviceList = sorted([device.get_name() for device in deviceList])
-                # choose the 3rd device as a Sub Device
-                remote_device = PyTango.DeviceProxy(deviceList[2])
-                connected = True
-            return connected
-                
-        except PyTango.DevFailed as e:
-            PyTagno.Except.print_exception(e)
-            raise
-            
-#------------------------------------------------------------------
-
-    def is_IOEncoded_allowed(self):
-        if self.get_state() == PyTango.DevState.ON:
-            return True
-        else:
-            return False
-
-    def IOEncoded(self,in_data):
-        try:
-            print('[IOEncoded::execute] received string ' + in_data[0])
-            data = bytearray()
-            for nb in bytearray(in_data[1]):
-                print('[IOEncoded::execute] received number ' + str(nb))
-                data += chr(nb*2)
-                print('[IOEncoded::execute] returned number ' + str(data[-1]))
-            return ['Returned string', data]
-                
-        except PyTango.DevFailed as e:
-            PyTagno.Except.print_exception(e)
-            raise
-            
-#------------------------------------------------------------------
-
-    def is_OEncoded_allowed(self):
-        if self.get_state() == PyTango.DevState.ON:
-            return True
-        else:
-            return False
-
-    def OEncoded(self):
-        self.encoded_cmd_ctr += 1
-        if self.encoded_cmd_ctr % 2 == 0:
-            data = bytearray([11,21])
-            theReturned = ['Odd - OEncoded format',data]
-        else:
-            data = bytearray([10,20,30,40])
-            theReturned = ['Even - OEncoded format',data]
-        return theReturned
-            
-#------------------------------------------------------------------
-
-    def is_SetGetAlarms_allowed(self):
-        if self.get_state() == PyTango.DevState.ON:
-            return True
-        else:
-            return False
-        
-    def _setAlarms(self,name,min_alarm,min_warning,max_warning,max_alarm,result):
-        attr = self.get_device_attr().get_attr_by_name(name)
-        conf = attr.get_properties_3()
-            
-        try:
-            attr.set_min_alarm(min_alarm)
-            attr.set_min_warning(min_warning)
-            attr.set_max_warning(max_warning)
-            attr.set_max_alarm(max_alarm)
-            
-            result.append(attr.get_name())
-            result.append(str(attr.get_min_alarm()))
-            result.append(str(attr.get_min_warning()))
-            result.append(str(attr.get_max_warning()))
-            result.append(str(attr.get_max_alarm()))
-            
-            attr.set_upd_properties(conf)
-        
-        except PyTango.DevFailed as e:
-            attr.set_upd_properties(conf)
-            raise
-    
-    def SetGetAlarms(self):
-        try:
-            print('[SetGetAlarms::execute]')
-            alarmsReturn = []
-            self._setAlarms('Double_attr',-999.99,-888.88,888.88,999.99,alarmsReturn)
-            self._setAlarms('Float_attr',-777.77,-666.66,666.66,777.77,alarmsReturn)
-            self._setAlarms('Long_attr',1000,1100,1400,1500,alarmsReturn)
-            self._setAlarms('Long64_attr',-90000,-80000,80000,90000,alarmsReturn)
-            self._setAlarms('Short_attr',-5000,-4000,4000,5000,alarmsReturn)
-            self._setAlarms('UChar_attr',1,2,230,240,alarmsReturn)
-            self._setAlarms('ULong_attr',1,2,666666,777777,alarmsReturn)
-            self._setAlarms('ULong64_attr',1,2,77777777,88888888,alarmsReturn)
-            self._setAlarms('UShort_attr',1,2,20000,30000,alarmsReturn)
-            return alarmsReturn
-        
-        except PyTango.DevFailed as e:
-            print('Exception while setting alarms')
-            PyTango.Except.print_exception(e)
-            raise
-            
-#------------------------------------------------------------------
-
-    def is_SetGetRanges_allowed(self):
-        if self.get_state() == PyTango.DevState.ON:
-            return True
-        else:
-            return False
-        
-    def _setRanges(self,name,min_value,max_value,result):
-        wattr = self.get_device_attr().get_attr_by_name(name)
-        conf = wattr.get_properties_3()
-            
-        try:
-            wattr.set_min_value(min_value)
-            wattr.set_max_value(max_value)
-            
-            result.append(wattr.get_name())
-            result.append(str(wattr.get_min_value()))
-            result.append(str(wattr.get_max_value()))
-            
-            wattr.set_upd_properties(conf)
-        
-        except PyTango.DevFailed as e:
-            wattr.set_upd_properties(conf)
-            raise
-    
-    def SetGetRanges(self):
-        try:
-            print('[SetGetRanges::execute]')
-            rangesReturn = []
-            self._setRanges('Double_attr_w',-1111.11,1111.11,rangesReturn)
-            self._setRanges('Float_attr_w',-888.88,888.88,rangesReturn)
-            self._setRanges('Long_attr_w',900,1600,rangesReturn)
-            self._setRanges('Long64_attr_rw',-100000,100000,rangesReturn)
-            self._setRanges('Short_attr_w',-6000,6000,rangesReturn)
-            self._setRanges('UChar_attr_w',0,250,rangesReturn)
-            self._setRanges('ULong_attr_rw',0,888888,rangesReturn)
-            self._setRanges('ULong64_attr_rw',0,99999999,rangesReturn)
-            self._setRanges('UShort_attr_w',0,40000,rangesReturn)
-            return rangesReturn
-        
-        except PyTango.DevFailed as e:
-            print('Exception while setting ranges')
-            PyTango.Except.print_exception(e)
-            raise
-            
-#------------------------------------------------------------------
-
-    def IOPollingInDevice(self):
-        try:
-            ret = []
-            att_name = 'Double_spec_attr'
-            cmd_name = 'OULong'
-            
-            # is_xxx_polled()
-            ss = 'Attribute ' + att_name + ' polled = '
-            if self.is_attribute_polled(att_name) == True:
-                ss += 'true'
-            else:
-                ss += 'false'
-            ret.append(ss)
-            ss = 'Command ' + cmd_name + ' polled = '
-            if self.is_command_polled(cmd_name) == True:
-                ss += 'true'
-            else:
-                ss += 'false'
-            ret.append(ss)
-            
-            # get_xxx_poll_period()
-            ss = 'Attribute ' + att_name + ' polling period = ' + str(self.get_attribute_poll_period(att_name))
-            ret.append(ss)
-            ss = 'Command ' + cmd_name + ' polling period = ' + str(self.get_command_poll_period(cmd_name))
-            ret.append(ss)
-            
-            # poll_xxx()
-            self.poll_attribute(att_name,250)
-            self.poll_command(cmd_name,250)
-            time.sleep(1)
-            
-            # is_xxx_polled()
-            ss = 'Attribute ' + att_name + ' polled = '
-            if self.is_attribute_polled(att_name) == True:
-                ss += 'true'
-            else:
-                ss += 'false'
-            ret.append(ss)
-            ss = 'Command ' + cmd_name + ' polled = '
-            if self.is_command_polled(cmd_name) == True:
-                ss += 'true'
-            else:
-                ss += 'false'
-            ret.append(ss)
-            
-            # get_xxx_poll_period()
-            ss = 'Attribute ' + att_name + ' polling period = ' + str(self.get_attribute_poll_period(att_name))
-            ret.append(ss)
-            ss = 'Command ' + cmd_name + ' polling period = ' + str(self.get_command_poll_period(cmd_name))
-            ret.append(ss)
-            
-            # stop_poll_xxx()
-            self.stop_poll_attribute(att_name)
-            self.stop_poll_command(cmd_name)
-            time.sleep(1)
-            
-            # is_xxx_polled()
-            ss = 'Attribute ' + att_name + ' polled = '
-            if self.is_attribute_polled(att_name) == True:
-                ss += 'true'
-            else:
-                ss += 'false'
-            ret.append(ss)
-            ss = 'Command ' + cmd_name + ' polled = '
-            if self.is_command_polled(cmd_name) == True:
-                ss += 'true'
-            else:
-                ss += 'false'
-            ret.append(ss)
-            
-            # get_xxx_poll_period()
-            ss = 'Attribute ' + att_name + ' polling period = ' + str(self.get_attribute_poll_period(att_name))
-            ret.append(ss)
-            ss = 'Command ' + cmd_name + ' polling period = ' + str(self.get_command_poll_period(cmd_name))
-            ret.append(ss)
-                
-            return ret
-        
-        except PyTango.DevFailed as e:
-            PyTango.Except.print_exception(e)
-            raise
-            
-#------------------------------------------------------------------
-
-
-
-
-
-
-#------------------------------------------------------------------
-#------------------------------------------------------------------
-#
-#                READING THE ATTRIBUTES
-#
-#------------------------------------------------------------------
-#------------------------------------------------------------------
-
-
-
-    def read_attr_hardware(self,data):
-        print 'In read_attr_hardware'
-
-#------------------------------------------------------------------
-
-    def read_Short_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Short_attr"
-        self.attr_short = 12;
-        if (self.Short_attr_except == False):
-            the_att.set_value(self.attr_short)
-        else:
-            PyTango.Except.throw_exception("aaa","This is a test","DevTest::read_attr")
-
-#------------------------------------------------------------------
-
-    def read_Long_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Long_attr"
-        the_att.set_value(self.attr_long)
-
-#------------------------------------------------------------------
-
-    def read_Double_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Double_attr"
-        self.attr_double = 3.2;
-        the_att.set_value(self.attr_double)
-
-#------------------------------------------------------------------
-
-    def read_String_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name String_attr"
-        the_att.set_value("test_string");
-
-#------------------------------------------------------------------
-
-    def read_Short_spec_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Short_spec_attr"
-        self.attr_short_array = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
-
-        self.attr_short_array[0] = 10
-        self.attr_short_array[1] = 20
-        self.attr_short_array[2] = 30
-        self.attr_short_array[3] = 40
-        the_att.set_value(self.attr_short_array,4)
-
-#------------------------------------------------------------------
-
-    def read_Long_spec_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Long_spec_attr"
-        self.attr_long_array[0] = 0
-        self.attr_long_array[1] = 1
-        self.attr_long_array[2] = 2
-        self.attr_long_array[3] = 3
-        self.attr_long_array[4] = 4
-        self.attr_long_array[5] = 5
-        self.attr_long_array[6] = 6
-        self.attr_long_array[7] = 7
-        self.attr_long_array[8] = 8
-        self.attr_long_array[9] = 9
-        the_att.set_value(self.attr_long_array,10)
-
-#------------------------------------------------------------------
-
-    def read_Double_spec_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Double_spec_attr"
-        self.attr_db_array[0] = 1.11
-        self.attr_db_array[1] = 2.22
-        the_att.set_value(self.attr_db_array,2)
-
-#------------------------------------------------------------------
-
-    def read_String_spec_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name String_spec_attr"
-        self.attr_str_array = ['Hello world','Hello universe']
-        the_att.set_value(self.attr_str_array,2)
-
-#------------------------------------------------------------------
-
-    def read_Short_ima_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Short_ima_attr"
-        self.attr_short_array_1 = [40,60,80,100]
-        the_att.set_value(self.attr_short_array_1,2,2)
-
-#------------------------------------------------------------------
-
-    def read_Long_ima_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Long_ima_attr"
-        self.attr_long_array = [0,1,2,3,4,5]
-        the_att.set_value(self.attr_long_array,3,2)
-
-#------------------------------------------------------------------
-
-    def read_Double_ima_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Double_ima_attr"
-        self.attr_db_array = [5.55,6.66]
-        the_att.set_value(self.attr_db_array,2,1)
-
-#------------------------------------------------------------------
-
-    def read_String_ima_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name String_ima_attr"
-        self.attr_str_array = ["Hello milky way","Hello moon"]
-        the_att.set_value(self.attr_str_array,1,2)
-
-#------------------------------------------------------------------
-
-    def read_attr_dq_sh(self,the_att):
-        print "[DevTest::read_attr] attribute name attr_dq_sh"
-        self.attr_dq_short = 77;
-        the_att.set_value_date_quality(self.attr_dq_short,time.time(),PyTango.AttrQuality.ATTR_VALID);
-
-#------------------------------------------------------------------
-
-    def read_attr_dq_lo(self,the_att):
-        print "[DevTest::read_attr] attribute name attr_dq_lo"
-        self.attr_dq_long = 7777;
-        the_att.set_value_date_quality(self.attr_dq_long,time.time(),PyTango.AttrQuality.ATTR_ALARM);
-
-#------------------------------------------------------------------
-
-    def read_attr_dq_db(self,the_att):
-        print "[DevTest::read_attr] attribute name attr_dq_db"
-        self.attr_dq_double = 8.888;
-        the_att.set_value_date_quality(self.attr_dq_double,time.time(),PyTango.AttrQuality.ATTR_VALID);
-
-#------------------------------------------------------------------
-
-    def read_attr_dq_str(self,the_att):
-        print "[DevTest::read_attr] attribute name attr_dq_str"
-        self.attr_dq_str = 'Setting value date and quality'
-        the_att.set_value_date_quality(self.attr_dq_str,time.time(),PyTango.AttrQuality.ATTR_ALARM);
-
-#------------------------------------------------------------------
-
-    def read_attr_no_data(self,the_att):
-        print "[DevTest::read_attr] attribute name attr_no_data"
-        the_att.set_quality(PyTango.AttrQuality.ATTR_VALID);
-
-#------------------------------------------------------------------
-
-    def read_attr_wrong_type(self,the_att):
-        print "[DevTest::read_attr] attribute name attr_wrong_type"
-        self.attr_long = 1246;
-        the_att.set_value(self.attr_long);
-
-#------------------------------------------------------------------
-
-    def read_attr_wrong_size(self,the_att):
-        print "[DevTest::read_attr] attribute name attr_wrong_size"
-        the_att.set_value(self.attr_long_array,1000,1000);
-
-#------------------------------------------------------------------
-
-    def read_attr_no_alarm(self,the_att):
-        print "[DevTest::read_attr] attribute name attr_no_alarm"
-        self.attr_long = 1246;
-        the_att.check_alarm();
-        the_att.set_value(self.attr_long)
-
-#------------------------------------------------------------------
-
-    def read_Long_attr_with_w(self,the_att):
-        print "[DevTest::read_attr] attribute name Long_attr_with_w"
-        self.attr_long = 1246;
-        the_att.set_value(self.attr_long)
-
-#------------------------------------------------------------------
-
-    def read_Long_attr_with_w2(self,the_att):
-        print "[DevTest::read_attr] attribute name Long_attr_with_w2"
-        the_att.set_value(self.attr_long_rw2)
-
-#------------------------------------------------------------------
-
-    def read_Short_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name Short_attr_rw"
-        the_att.set_value(self.attr_short_rw)
-
-#------------------------------------------------------------------
-
-    def read_Float_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Float_attr"
-        the_att.set_value(4.5)
-
-#------------------------------------------------------------------
-
-    def read_Boolean_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Boolean_attr"
-        the_att.set_value(True)
-
-#------------------------------------------------------------------
-
-    def read_UShort_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name UShort_attr"
-        the_att.set_value(111)
-
-#------------------------------------------------------------------
-
-    def read_UChar_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name UChar_attr"
-        the_att.set_value(88)
-
-#------------------------------------------------------------------
-
-    def read_Float_spec_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Float_spec_attr"
-        self.attr_spec_float = [4.5,8.5,16.5]
-        the_att.set_value(self.attr_spec_float)
-
-#------------------------------------------------------------------
-
-    def read_Boolean_spec_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Boolean_spec_attr"
-        self.attr_spec_boolean = [True,True,False,True,True]
-        the_att.set_value(self.attr_spec_boolean)
-
-#------------------------------------------------------------------
-
-    def read_UShort_spec_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name UShort_spec_attr"
-        self.attr_spec_ushort = [333,444]
-        the_att.set_value(self.attr_spec_ushort)
-
-#------------------------------------------------------------------
-
-    def read_UChar_spec_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name UChar_spec_attr"
-        self.attr_spec_uchar = [28,45,156,34,200,12]
-        the_att.set_value(self.attr_spec_uchar)
-
-#------------------------------------------------------------------
-
-    def read_PollLong_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name PollLong_attr"
-        self.PollLong_attr_num += 1
-        if ((self.PollLong_attr_num % 2) == 0):
-            self.Poll_attr_long = 5555
-        else:
-            self.Poll_attr_long = 6666
-        the_att.set_value(self.Poll_attr_long)
-
-#------------------------------------------------------------------
-
-    def read_PollString_spec_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name PollString_spec_attr"
-        self.PollString_spec_attr_num += 1
-        if ((self.PollString_spec_attr_num % 2) == 0):
-            self.attr_str_array = ["Hello world","Hello universe"]
-        else:
-            self.attr_str_array = ["Hello Grenoble","Hello Paris"]
-        the_att.set_value(self.attr_str_array)
-
-#------------------------------------------------------------------
-
-    def read_Short_spec_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name Short_spec_attr_rw"
-        self.short_spec_attr = [8,9]
-        the_att.set_value(self.short_spec_attr)
-
-#------------------------------------------------------------------
-
-    def read_String_spec_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name Short_spec_attr_rw"
-        self.string_spec_attr = ["Thank's god","It's friday"]
-        the_att.set_value(self.string_spec_attr)
-
-#------------------------------------------------------------------
-
-    def read_Float_spec_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name Float_spec_attr_rw"
-        self.attr_spec_float = [5.5,11.5]
-        the_att.set_value(self.attr_spec_float)
-
-#------------------------------------------------------------------
-
-    def read_UChar_spec_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name UChar_spec_attr_rw"
-        self.attr_spec_uchar = [22,44,66]
-        the_att.set_value(self.attr_spec_uchar)
-
-#------------------------------------------------------------------
-
-    def read_Short_ima_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name Short_ima_attr_rw"
-        self.short_ima_attr = [6,7,8,9]
-        the_att.set_value(self.short_ima_attr,2,2)
-
-#------------------------------------------------------------------
-
-    def read_String_ima_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name String_ima_attr_rw"
-        self.string_ima_attr = ["Alors la, pour une surprise","c'est une surprise"]
-        the_att.set_value(self.string_ima_attr,2,1)
-
-#------------------------------------------------------------------
-
-    def read_Boolean_ima_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name Boolean_ima_attr_rw"
-        self.attr_spec_boolean = [True,False]
-        the_att.set_value(self.attr_spec_boolean,2,1)
-
-#------------------------------------------------------------------
-
-    def read_UShort_ima_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name UShort_ima_attr_rw"
-        self.attr_spec_ushort = [2,3]
-        the_att.set_value(self.attr_spec_ushort,2,1)
-
-#------------------------------------------------------------------
-
-    def read_Poll_buff(self,the_att):
-        print "[DevTest::read_attr] attribute name Poll_buff"
-
-#------------------------------------------------------------------
-
-    def read_Poll_buffRW(self,the_att):
-        print "[DevTest::read_attr] attribute name Poll_buffRW"
-
-#------------------------------------------------------------------
-
-    def read_attr_asyn(self,the_att):
-        print "[DevTest::read_attr] attribute name attr_asyn"
-        time.sleep(2)
-        the_att.set_value(5.55)
-        print "Leaving reading attr_asyn attribute"
-
-#------------------------------------------------------------------
-
-    def read_attr_asyn_to(self,the_att):
-        print "[DevTest::read_attr] attribute name attr_asyn_to"
-        time.sleep(4)
-        the_att.set_value(5.55)
-        print "Leaving reading attr_asyn_to attribute"
-
-#------------------------------------------------------------------
-
-    def read_attr_asyn_except(self,the_att):
-        print "[DevTest::read_attr] attribute name attr_asyn_except"
-        time.sleep(2)
-        print "Leaving reading attr_asyn_except attribute"
-        PyTango.Except.throw_exception("aaa","This is a test ","DevTest::read_attr")
-
-#------------------------------------------------------------------
-
-    def read_event_change_tst(self,the_att):
-        print "[DevTest::read_attr] attribute name event_change_tst"
-        if (self.event_change_attr_except == False):
-            if self.event_throw_out_of_sync == True:
-                time.sleep(0.4)
-            the_att.set_value(self.attr_event,self.attr_event_size)
-        else:
-            PyTango.Except.throw_exception("bbb","This is a test ","DevTest::read_attr")
-
-#------------------------------------------------------------------
-
-    def read_event64_change_tst(self,the_att):
-        print "[DevTest::read_attr] attribute name event64_change_tst"
-        if (self.event_change_attr_except == False):
-            the_att.set_value(self.attr_event64,self.attr_event64_size)
-        else:
-            PyTango.Except.throw_exception("bbb64","This is a test ","DevTest::read_attr")
-
-#------------------------------------------------------------------
-
-    def read_event_quality_tst(self,the_att):
-        print "[DevTest::read_attr] attribute name event_quality_tst"
-        if (self.event_quality_attr_except == False):
-            if (self.attr_event_qua != PyTango.AttrQuality.ATTR_INVALID):
-                the_att.set_value(self.attr_qua_event,2)
-                the_att.set_quality(self.attr_event_qua)
-        else:
-            PyTango.Except.throw_exception("ccc","This is a test ","DevTest::read_attr")
-
-
-#------------------------------------------------------------------
-
-    def read_slow_actuator(self,the_att):
-        print "[DevTest::read_attr] attribute name slow_actuator"
-        self.slow_actua += 1
-        the_att.set_value(self.slow_actua)
-        ti = time.time()
-        if (self.slow_actua_write != 0):
-            delta = ti - self.slow_actua_write
-            if (delta >= 3):
-                the_att.set_quality(PyTango.AttrQuality.ATTR_VALID)
-                self.slow_actua_write = 0
-
-#------------------------------------------------------------------
-
-    def read_fast_actuator(self,the_att):
-        print "[DevTest::read_attr] attribute name fast_actuator"
-        the_att.set_value(self.fast_actua)
-
-#------------------------------------------------------------------
-
-    def read_Long64_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Long64_attr"
-        the_att.set_value(9223372036854775807)
-
-#------------------------------------------------------------------
-
-    def read_Long64_spec_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Long64_spec_attr"
-        attr_long64_array = [ 0, -9223372036854775808, 9223372036854775807, 0 ]
-        the_att.set_value(attr_long64_array,4)
-
-#------------------------------------------------------------------
-
-    def read_Long64_ima_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Long64_ima_attr"
-        attr_long64_array = [0, -9223372036854775808, 9223372036854775807, 0, 0, -9223372036854775808, 9223372036854775807, 0]
-        the_att.set_value(attr_long64_array,4,2)
-
-#------------------------------------------------------------------
-
-    def read_Long64_attr_w(self,the_att):
-        print "[DevTest::read_attr] attribute name Long64_attr_w"
-        the_att.set_value(9223372036854775807)
-
-#------------------------------------------------------------------
-
-    def read_Long64_spec_attr_w(self,the_att):
-        print "[DevTest::read_attr] attribute name Long64_spec_attr_w"
-        attr_long64_array = [ 0, -9223372036854775808, 9223372036854775807, 0 ]
-        the_att.set_value(attr_long64_array,4)
-
-#------------------------------------------------------------------
-
-    def read_Long64_ima_attr_w(self,the_att):
-        print "[DevTest::read_attr] attribute name Long64_ima_attr_w"
-        attr_long64_array = [0, -9223372036854775808, 9223372036854775807, 0, 0, -9223372036854775808, 9223372036854775807, 0]
-        the_att.set_value(attr_long64_array,4,2)
-
-#------------------------------------------------------------------
-
-    def read_Long64_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name Long64_attr_rw"
-        the_att.set_value(9223372036854775807)
-
-#------------------------------------------------------------------
-
-    def read_Long64_spec_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name Long64_spec_attr_rw"
-        attr_long64_array = [ 0, -9223372036854775808, 9223372036854775807, 0 ]
-        the_att.set_value(attr_long64_array,4)
-
-#------------------------------------------------------------------
-
-    def read_Long64_ima_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name Long64_ima_attr_rw"
-        attr_long64_array = [0, -9223372036854775808, 9223372036854775807, 0, 0, -9223372036854775808, 9223372036854775807, 0]
-        the_att.set_value(attr_long64_array,4,2)
-
-#------------------------------------------------------------------
-
-    def read_Long_spec_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name Long_spec_attr_rw"
-        the_att.set_value(self.Long_spec_attr_rw)
-
-#------------------------------------------------------------------
-
-    def read_Encoded_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Encoded_attr_rw"
-        the_att.set_value(*self.enc_attr)
-
-#------------------------------------------------------------------
-
-    def read_ULong_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name ULong_attr"
-        # TODO: 'L' suffix no more supported in Python3
-        self.attr_ulong = 100L
-        the_att.set_value(self.attr_ulong)
-
-#------------------------------------------------------------------
-
-    def read_ULong64_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name ULong64_attr"
-        # TODO: 'L' suffix no more supported in Python3
-        self.attr_ulong64 = 200L
-        the_att.set_value(self.attr_ulong64)
-
-#------------------------------------------------------------------
-
-    def read_ULong_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name ULong_attr_rw"
-        the_att.set_value(self.attr_ulong_rw)
-
-#------------------------------------------------------------------
-
-    def read_ULong64_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name ULong64_attr_rw"
-        # TODO: long() no more supported in Python3
-        the_att.set_value(long(self.attr_ulong64_rw))
-
-#------------------------------------------------------------------
-
-    def read_State_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name State_attr_rw"
-        the_att.set_value(self.attr_state_rw)
-
-#------------------------------------------------------------------
-
-    def read_ULong_spec_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name ULong_spec_attr_rw"
-        the_att.set_value(self.attr_spec_ulong_rw,3)
-
-#------------------------------------------------------------------
-
-    def read_ULong64_spec_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name ULong64_spec_attr_rw"
-        # TODO: long() no more supported in Python3, as well as map (returns a pointer)
-        the_att.set_value(map(long,self.attr_spec_ulong64_rw),3)
-
-#------------------------------------------------------------------
-
-    def read_State_spec_attr_rw(self,the_att):
-        print "[DevTest::read_attr] attribute name State_spec_attr_rw"
-        the_att.set_value(self.attr_spec_state_rw,2)
-
-#------------------------------------------------------------------
-
-    def read_Sub_device_tst(self,the_att):
-        try:
-            print('[DevTest::read_attr] attribute name Sub_device_tst')
-            tg = PyTango.Util.instance()
-            deviceList = tg.get_device_list_by_class('DevTest')
-            if len(deviceList) > 1:
-                deviceList = sorted([device.get_name() for device in deviceList])
-                try:
-                    remote_dev = PyTango.DeviceProxy(deviceList[1])
-                    self.attr_sub_device_tst = True
-                except:
-                    self.attr_sub_device_tst = False
-            else:
-                self.attr_sub_device_tst = False
-            the_att.set_value(self.attr_sub_device_tst)
-        
-        except PyTango.DevFailed as e:
-            PyTagno.Except.print_exception(e)
-            raise
-
-#------------------------------------------------------------------
-
-    def read_SlowAttr(self,the_att):
-        time.sleep(0.5)
-        the_att.set_value(self.attr_slow)
-
-#------------------------------------------------------------------
-
-    def read_Encoded_image(self,the_att):
-        print('[DevTest::read_attr] attribute name Encoded_attr_image')
-        self.jpeg = PyTango.EncodedAttribute()
-        imageData = bytearray(256*256)
-        for i in range(0,256):
-            for j in range(0,256):
-                imageData[i+j*256] = i
-        imageData = bytes(imageData)
-        self.jpeg.encode_jpeg_gray8(imageData,256,256,50.0)
-        the_att.set_value(self.jpeg)
-
-#------------------------------------------------------------------
-
-    def read_DefAttr(self,the_att):
-        print('[DevTest::read_attr] attribute name DefAttr')
-        the_att.set_value(self.att_conf)
-
-#------------------------------------------------------------------
-
-    def read_DefUserAttr(self,the_att):
-        print('[DevTest::read_attr] attribute name DefUserAttr')
-        the_att.set_value(self.att_conf)
-
-#------------------------------------------------------------------
-
-    def read_DefClassAttr(self,the_att):
-        print('[DevTest::read_attr] attribute name DefClassAttr')
-        the_att.set_value(self.att_conf)
-
-#------------------------------------------------------------------
-
-    def read_DefClassUserAttr(self,the_att):
-        print('[DevTest::read_attr] attribute name DefClassUserAttr')
-        the_att.set_value(self.att_conf)
-
-#------------------------------------------------------------------
-
-    def read_DefUserAttr(self,the_att):
-        print('[DevTest::read_attr] attribute name DefUserAttr')
-        the_att.set_value(self.att_conf)
-
-#------------------------------------------------------------------
-#------------------------------------------------------------------
-#
-#                WRITING THE ATTRIBUTES
-#
-#------------------------------------------------------------------
-#------------------------------------------------------------------
-
-
-
-
-
-    def write_Short_attr_w(self,the_att):
-        data = the_att.get_write_value()
-
-#------------------------------------------------------------------
-
-    def write_Long_attr_w(self,the_att):
-        print "In write_Long_attr_w for attribute",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Float_attr_w(self,the_att):
-        print "In write_Float_attr_w for attribute",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_UShort_attr_w(self,the_att):
-        print "In write_UShort_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data;
-
-#------------------------------------------------------------------
-
-    def write_UChar_attr_w(self,the_att):
-        print "In write_UChar_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Short_attr_rw(self,the_att):
-        print "In write_Short_attr_rw for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        self.attr_short_rw = data[0]
-
-#------------------------------------------------------------------
-
-    def write_Long_attr_with_w(self,the_att):
-        print "In write_Long_attr_with_w for attribute ",the_att.get_name()
-
-#------------------------------------------------------------------
-
-    def write_Long_attr_with_w2(self,the_att):
-        print "In write_Long_attr_with_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        self.attr_long_rw2 = data[0]
-
-#------------------------------------------------------------------
-
-    def write_Short_attr_w2(self,the_att):
-        print "In write_Short_attr_w2 for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Double_attr_w(self,the_att):
-        print "In write_Double_attr_w for attribute ",the_att.get_name()
-        data=[];
-        the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_String_attr_w2(self,the_att):
-        print "In write_String_attr_w2 for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_String_attr_w(self,the_att):
-        print "In write_String_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Boolean_attr_w(self,the_att):
-        print "In write_Boolean_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Short_spec_attr_w(self,the_att):
-        print "In write_Short_spec_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Short_ima_attr_w(self,the_att):
-        print "In write_Short_ima_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Long_spec_attr_w(self,the_att):
-        print "In write_Long_spec_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Double_spec_attr_w(self,the_att):
-        print "In write_Double_spec_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_String_spec_attr_w(self,the_att):
-        print "In write_String_spec_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Float_spec_attr_w(self,the_att):
-        print "In write_Float_spec_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Boolean_spec_attr_w(self,the_att):
-        print "In write_Boolean_spec_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_UShort_spec_attr_w(self,the_att):
-        print "In write_UShort_spec_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_UChar_spec_attr_w(self,the_att):
-        print "In write_UChar_spec_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_String_ima_attr_w(self,the_att):
-        print "In write_String_ima_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def is_write_Float_ima_attr_w(self,req_type):
-        return True
-
-    def write_Float_ima_attr_w(self,the_att):
-        print "In write_Float_ima_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_UShort_ima_attr_w(self,the_att):
-        print "In write_UShort_ima_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Short_spec_attr_rw(self,the_att):
-        print "In write_Short_spec_attr_rw for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_String_spec_attr_rw(self,the_att):
-        print "In write_String_spec_attr_rw for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Float_spec_attr_rw(self,the_att):
-        print "In write_Float_spec_attr_rw for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_UChar_spec_attr_rw(self,the_att):
-        print "In write_UChar_spec_attr_rw for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Short_ima_attr_rw(self,the_att):
-        print "In write_Short_ima_attr_rw for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_String_ima_attr_rw(self,the_att):
-        print "In write_String_ima_attr_rw for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Boolean_ima_attr_rw(self,the_att):
-        print "In write_Boolean_ima_attr_rw for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_UShort_ima_attr_rw(self,the_att):
-        print "In write_UShort_ima_attr_rw for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_attr_asyn_write(self,the_att):
-        print "In write_attr_asyn_write for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-        time.sleep(2)
-
-#------------------------------------------------------------------
-
-    def write_attr_asyn_write_to(self,the_att):
-        print "In write_attr_asyn_write_to for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-        time.sleep(4)
-
-#------------------------------------------------------------------
-
-    def write_attr_asyn_write_except(self,the_att):
-        print "In write_attr_asyn_write_except for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-        time.sleep(2)
-        PyTango.Except.throw_exception("aaa","This is a test ","DevTest::write_attr_hardware")
-
-#------------------------------------------------------------------
-
-    def write_slow_actuator(self,the_att):
-        print "In write_slow_actuator for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        self.slow_actua = data[0]
-        self.slow_actua_write = time.time()
-        the_att.set_value(self.slow_actua)
-        the_att.set_quality(PyTango.AttrQuality.ATTR_CHANGING)
-
-#------------------------------------------------------------------
-
-    def write_fast_actuator(self,the_att):
-        print "In write_fast_actuator for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        self.fast_actua = data[0]
-        the_att.set_value(self.fast_actua)
-        the_att.set_quality(PyTango.AttrQuality.ATTR_CHANGING)
-        the_att.set_quality(PyTango.AttrQuality.ATTR_VALID)
-
-#------------------------------------------------------------------
-
-    def write_Long64_attr_w(self,the_att):
-        print "In write_Long64_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Long64_spec_attr_w(self,the_att):
-        print "In write_Long64_spec_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Long64_ima_attr_w(self,the_att):
-        print "In write_Long64_ima_attr_w for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Long64_attr_rw(self,the_att):
-        print "In write_Long64_attr_rw for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Long64_spec_attr_rw(self,the_att):
-        print "In write_Long64_spec_attr_rw for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-#------------------------------------------------------------------
-
-    def write_Long64_ima_attr_rw(self,the_att):
-        print "In write_Long64_ima_attr_rw for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        print "Attribute value = ",data
-
-    def write_Long_spec_attr_rw(self,the_att):
-        print "In write_Long_spec_attr_rw for attribute ",the_att.get_name()
-        data = the_att.get_write_value()
-        self.Long_spec_attr_rw = data
-        print "Attribute value = ",data
-
-
-#------------------------------------------------------------------
-
-    def write_Encoded_attr(self,the_att):
-        print('In write_Encoded_attr_rw for attribute ' + the_att.get_name())
-        self.enc_attr = the_att.get_write_value()
-        print('\tReceived string = ' + self.enc_attr[0])
-        print('\tReceived data nb = ' + str(len(self.enc_attr[1])))
-        i = 0
-        for c in self.enc_attr[1]:
-            print('\t\tdata[' + str(i) + '] = ' + c)
-            i += 1
-
-#------------------------------------------------------------------
-
-    def write_ULong_attr_rw(self,the_att):
-        print('In write_ULong_attr_rw for attribute ' + the_att.get_name())
-        self.attr_ulong_rw = the_att.get_write_value()
-        if self.attr_ulong_rw > 1000:
-            the_att.set_write_value(1111)
-
-#------------------------------------------------------------------
-
-    def write_ULong64_attr_rw(self,the_att):
-        print('In write_ULong64_attr_rw for attribute ' + the_att.get_name())
-        self.attr_ulong64_rw = the_att.get_write_value()
-
-#------------------------------------------------------------------
-
-    def write_Poll_buffRW(self,the_att):
-        print('In write_Poll_buffRW for attribute ' + the_att.get_name())
-
-#------------------------------------------------------------------
-
-    def write_State_attr_rw(self,the_att):
-        print('In write_State_attr_rw for attribute ' + the_att.get_name())
-        self.attr_state_rw = the_att.get_write_value()
-
-#------------------------------------------------------------------
-
-    def write_ULong_spec_attr_rw(self,the_att):
-        print('In write_ULong_spec_attr_rw for attribute ' + the_att.get_name())
-        nb_data = the_att.get_write_value_length()
-        ulg = the_att.get_write_value()
-        print('Received ' + str(nb_data) + ' for attribute ' + the_att.get_name());
-
-#------------------------------------------------------------------
-
-    def write_ULong64_spec_attr_rw(self,the_att):
-        print('In write_ULong64_spec_attr_rw for attribute ' + the_att.get_name())
-        nb_data = the_att.get_write_value_length()
-        ulg64 = the_att.get_write_value()
-        print('Received ' + str(nb_data) + ' for attribute ' + the_att.get_name());
-
-#------------------------------------------------------------------
-
-    def write_State_spec_attr_rw(self,the_att):
-        print('In write_State_spec_attr_rw for attribute ' + the_att.get_name())
-        nb_data = the_att.get_write_value_length()
-        sta = the_att.get_write_value()
-        print('Received ' + str(nb_data) + ' for attribute ' + the_att.get_name());
-
-#------------------------------------------------------------------
-
-    def write_DefAttr(self,the_att):
-        print('In write_DefAttr for attribute ' + the_att.get_name())
-
-#------------------------------------------------------------------
-
-    def write_DefUserAttr(self,the_att):
-        print('In write_DefUserAttr for attribute ' + the_att.get_name())
-
-#------------------------------------------------------------------
-
-    def write_DefClassAttr(self,the_att):
-        print('In write_DefClassAttr for attribute ' + the_att.get_name())
-
-#------------------------------------------------------------------
-
-    def write_DefClassUserAttr(self,the_att):
-        print('In write_DefClassUserAttr for attribute ' + the_att.get_name())
-
-#------------------------------------------------------------------
-#------------------------------------------------------------------
-#
-#                FOR ATTRIBUTES ADDED ON THE FLY
-#
-#------------------------------------------------------------------
-#------------------------------------------------------------------
-
-    def read_Added_short_attr(self,the_att):
-        print "[DevTest::read_attr] attribute name Added_short_attr"
-        the_att.set_value(5)
-
-
-
-
-
-
-
-class DevTestClass(PyTango.DeviceClass):
-    def __init__(self,name):
-        PyTango.DeviceClass.__init__(self,name)
-        self.set_type("TestDevice")
-        print 'In DevTestClass __init__'
-
-        self.add_wiz_dev_prop('aaaa','bbbb','cccc')
-        self.add_wiz_class_prop('aa','bb')
-
-
-    def signal_handler(self,in_sig):
-        print "[Class signal handler] received signal number",in_sig," for class",self.get_name()
-
-    cmd_list = {'IOVoid':[[PyTango.ArgType.DevVoid],[PyTango.ArgType.DevVoid]],
-                'IOBool':[[PyTango.ArgType.DevBoolean,"Number"],[PyTango.ArgType.DevBoolean,"Not number"]],
-                'IOShort':[[PyTango.ArgType.DevShort,"Number"],[PyTango.ArgType.DevShort,"Number * 2"]],
-                'IOLong':[[PyTango.ArgType.DevLong,"Number"],[PyTango.ArgType.DevLong,"Number * 2"]],
-                'IOFloat':[[PyTango.ArgType.DevFloat,"Number"],[PyTango.ArgType.DevFloat,"Number * 2"]],
-                'IODouble':[[PyTango.ArgType.DevDouble,"Number"],[PyTango.ArgType.DevDouble,"Number * 2"]],
-                'IOUShort':[[PyTango.ArgType.DevUShort,"Number"],[PyTango.ArgType.DevUShort,"Number * 2"]],
-                'IOULong':[[PyTango.ArgType.DevULong,"Number"],[PyTango.ArgType.DevULong,"Number * 2"]],
-                'IOString':[[PyTango.ArgType.DevString,"Word"],[PyTango.ArgType.DevString,"the palindrome is"]],
-                'IOLong64':[[PyTango.ArgType.DevLong64,"Number"],[PyTango.ArgType.DevLong64,"Number * 2"]],
-                'IOULong64':[[PyTango.ArgType.DevULong64,"Number"],[PyTango.ArgType.DevULong64,"Number * 2"]],
-                'IOCharArray':[[PyTango.ArgType.DevVarCharArray,"Array of char"],[PyTango.ArgType.DevVarCharArray,"This reversed array"]],
-                'IOShortArray':[[PyTango.ArgType.DevVarShortArray,"Array of short"],[PyTango.ArgType.DevVarShortArray,"This array * 2"]],
-                'IOLongArray':[[PyTango.ArgType.DevVarLongArray,"Array of long"],[PyTango.ArgType.DevVarLongArray,"This array * 2"]],
-                'IOFloatArray':[[PyTango.ArgType.DevVarFloatArray,"Array of float"],[PyTango.ArgType.DevVarFloatArray,"This array * 2"]],
-                'IODoubleArray':[[PyTango.ArgType.DevVarDoubleArray,"Array of double"],[PyTango.ArgType.DevVarDoubleArray,"This array * 2"]],
-                'IOUShortArray':[[PyTango.ArgType.DevVarUShortArray,"Array of unsigned short"],[PyTango.ArgType.DevVarUShortArray,"This array * 2"]],
-                'IOULongArray':[[PyTango.ArgType.DevVarULongArray,"Array of unsigned long"],[PyTango.ArgType.DevVarULongArray,"This array * 2"]],
-                'IOStringArray':[[PyTango.ArgType.DevVarStringArray,"Array of string"],[PyTango.ArgType.DevVarStringArray,"This reversed array"]],
-                'IOLongString':[[PyTango.ArgType.DevVarLongStringArray,"Array of long and string"],[PyTango.ArgType.DevVarLongStringArray,"This array of long * 2"]],
-                'IODoubleString':[[PyTango.ArgType.DevVarDoubleStringArray,"Array of double and string"],[PyTango.ArgType.DevVarDoubleStringArray,"This array of double * 2"]],
-                'IOLong64Array':[[PyTango.ArgType.DevVarLong64Array,"Array of long64"],[PyTango.ArgType.DevVarLong64Array,"This array * 2"]],
-                'IOLong64Array':[[PyTango.ArgType.DevVarULong64Array,"Array of unsigned long 64"],[PyTango.ArgType.DevVarULong64Array,"This array * 2"]],
-                'IOState':[[PyTango.ArgType.DevState,"New device state"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOThrow':[[PyTango.ArgType.DevVarLongStringArray,"Error facility"],[PyTango.ArgType.DevVoid,"An exception"]],
-                'IOReThrow':[[PyTango.ArgType.DevVarLongStringArray,"Error facility"],[PyTango.ArgType.DevVoid,"An exception"]],
-                'IODevByName':[[PyTango.ArgType.DevString,"device name"],[PyTango.ArgType.DevString,"device name (returned by name()"]],
-                'IODServDevice':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevString,"dserver device name"]],
-                'IODevListByClass':[[PyTango.ArgType.DevString,"class name"],[PyTango.ArgType.DevString,"class first device name"]],
-                'IOInitWAttr':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOAddAttribute':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOSetAttr':[[PyTango.ArgType.DevLong,"New attr value"],[PyTango.ArgType.DevVoid,"void"]],
-                'IORegSig':[[PyTango.ArgType.DevLong,"Signal number"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOUnregSig':[[PyTango.ArgType.DevLong,"Signal number"],[PyTango.ArgType.DevVoid,"void"]],
-                'IORegClassSig':[[PyTango.ArgType.DevLong,"Signal number"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOUnregClassSig':[[PyTango.ArgType.DevLong,"Signal number"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOStr1':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevString,"Just a string dynamically allocated"]],
-                'IOStr2':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevString,"A constant string"]],
-                'IOExcept':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"An exception"]],
-                'IOStartPoll':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevLong,"Constant number set to 11"]],
-                'IOPollStr1':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevString,"Just a string changing at each call"]],
-                'IOPollArray2':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVarShortArray,"An array changing at each call"]],
-                'IOArray1':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVarLongArray,"An array allocated"]],
-                'IOTrigPoll':[[PyTango.ArgType.DevString,"Command's name to trig polling"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOAttrTrigPoll':[[PyTango.ArgType.DevString,"Attribute's name to trig polling"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOShortSleep':[[PyTango.ArgType.DevVarShortArray,"Input short and sleeping time in sec"],[PyTango.ArgType.DevShort,"Output short (in * 2)"]],
-                'IOSleepExcept':[[PyTango.ArgType.DevShort,"Sleep time (sec)"],[PyTango.ArgType.DevVoid,"An exception"]],
-                'IOAttrThrowEx':[[PyTango.ArgType.DevVarShortArray,"2 elts : Attr code and throw except flag"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOAddOneElt':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"void"]],
-                'IORemoveOneElt':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOIncValue':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"void"]],
-                'IODecValue':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOChangeQuality':[[PyTango.ArgType.DevShort,"0->VALID, 1->INVALID, 2->ALARM, 3->CHANGING"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOPushEvent':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOSleep':[[PyTango.ArgType.DevUShort,"sleeping time"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOArray2':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVarShortArray,"An array without copying"]],
-                'IOStrArray':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVarStringArray,"A string array"]],
-                'IOStruct':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVarLongStringArray,"A structure type"]],
-                'IORemoveAttribute':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOSeqVecChar':[[PyTango.ArgType.DevVarCharArray,"Input char array"],[PyTango.ArgType.DevVarCharArray,"Output char array"]],
-                'IOSeqVecShort':[[PyTango.ArgType.DevVarShortArray,"Input short array"],[PyTango.ArgType.DevVarShortArray,"Output short array"]],
-                'IOSeqVecLong':[[PyTango.ArgType.DevVarLongArray,"Input long array"],[PyTango.ArgType.DevVarLongArray,"Output long array"]],
-                'IOSeqVecFloat':[[PyTango.ArgType.DevVarFloatArray,"Input float array"],[PyTango.ArgType.DevVarFloatArray,"Output float array"]],
-                'IOSeqVecDouble':[[PyTango.ArgType.DevVarDoubleArray,"Input double array"],[PyTango.ArgType.DevVarDoubleArray,"Output double array"]],
-                'IOSeqVecUShort':[[PyTango.ArgType.DevVarUShortArray,"Input unsigned short array"],[PyTango.ArgType.DevVarUShortArray,"Output unsigned short array"]],
-                'IOSeqVecULong':[[PyTango.ArgType.DevVarULongArray,"Input unsigned long array"],[PyTango.ArgType.DevVarULongArray,"Output unsigned long array"]],
-                'IOSeqVecString':[[PyTango.ArgType.DevVarStringArray,"Input string array"],[PyTango.ArgType.DevVarStringArray,"Output string array"]],
-                'IOExit':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOPushDevEncodedEvent':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOSubscribeEvent':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOUnSubscribeEvent':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"void"]],
-                'IOGetCbExecuted':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevLong,"Number of times the CB has been executed"]],
-                'OLong':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevLong,"A long"]],
-                'OULong':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevULong,"An unsigned long"]],
-                'OLongArray':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVarLongArray,"A long array"]],
-                'OULongArray':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVarULongArray,"A unsigned long array"]],
-                'OLongString':[[PyTango.ArgType.DevVoid,"void"],[PyTango.CmdArgType.DevVarLongStringArray,"A unsigned long and string array"]],
-                'GetLongSize':[[PyTango.ArgType.DevVoid,"void"],[PyTango.CmdArgType.DevShort,"Sizeof long (32 or 64 bits)"]],
-                'IOSetWAttrLimit':[[PyTango.ArgType.DevVarDoubleArray,"arr[0]==0 -> min_value, arr[0]==1 -> max_value, arr[1]=limit"],[PyTango.CmdArgType.DevVoid,"void"]],
-                'ChangeEncodedFormat':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"void"]],
-                'ChangeEncodedData':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"void"]],
-                'PushDataReady':[[PyTango.ArgType.DevVarLongStringArray,"s[0] = attribute name, l[0] = user counter"],[PyTango.ArgType.DevVoid,"void"]],
-                'SubDeviceTst':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevBoolean,"true = sub device connected"]],
-                'IOEncoded':[[PyTango.ArgType.DevEncoded,"DevEncoded structure"],[PyTango.ArgType.DevEncoded,"DevEncoded structure"]],
-                'OEncoded':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevEncoded,"DevEncoded structure to test polling/history"]],
-                'SetGetAlarms':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVarStringArray,"DevVarStringArray containing alarm values"]],
-                'SetGetRanges':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVarStringArray,"DevVarStringArray containing ranges values"]],
-                'IOPollingInDevice':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVarStringArray,"Polling in device test outputs"]]
-               }
-
-#                'IOChangeStatus':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevVoid,"void"]]
-#                'String_attr':[[PyTango.ArgType.DevString,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ],
-#                                 {'Polling period':250}],
-#                'IOStartPoll':[[PyTango.ArgType.DevVoid,"void"],[PyTango.ArgType.DevLong,"Constant number set to 11"],
-#                               {'Polling period':400}],
-
-    attr_list = {'Short_attr':[[PyTango.ArgType.DevShort,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'Long_attr':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ],
-                              {'min alarm':1000,'max alarm':1500}],
-                 'Double_attr':[[PyTango.ArgType.DevDouble,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'String_attr':[[PyTango.ArgType.DevString,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'Short_spec_attr':[[PyTango.ArgType.DevShort,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ,4]],
-                 'Long_spec_attr':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ,10]],
-                 'Double_spec_attr':[[PyTango.ArgType.DevDouble,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ,3]],
-                 'String_spec_attr':[[PyTango.ArgType.DevString,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ,2]],
-                 'Short_ima_attr':[[PyTango.ArgType.DevShort,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.READ,4,4]],
-                 'Long_ima_attr':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.READ,10,2]],
-                 'Double_ima_attr':[[PyTango.ArgType.DevDouble,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.READ,3,3]],
-                 'String_ima_attr':[[PyTango.ArgType.DevString,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.READ,1,2]],
-                 'attr_dq_sh':[[PyTango.ArgType.DevShort,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'attr_dq_lo':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'attr_dq_db':[[PyTango.ArgType.DevDouble,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'attr_dq_str':[[PyTango.ArgType.DevString,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'attr_no_data':[[PyTango.ArgType.DevShort,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'attr_wrong_type':[[PyTango.ArgType.DevDouble,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'attr_wrong_size':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ,10]],
-                 'attr_no_alarm':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'Long_attr_w':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.WRITE],
-                                {'label':"Test label",'description':"Test description",'unit':"Kilogramme",'standard unit':100,
-                                 'display unit':"Et ta soeur",'format':"Tres long",'min value':0,'max value':100000,
-                                 'min alarm':1,'max alarm':99999,'min warning':2,'max warning':99998,'delta val':10000,
-                                 'delta t':1,'event abs change':30000,'event rel change':20000,'event period':2000,
-                                 'archive event abs change':33333,'archive event rel change':22222,'archive event period':3000}],
-
-                 'Float_attr_w':[[PyTango.ArgType.DevFloat,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.WRITE]],
-                 'UShort_attr_w':[[PyTango.ArgType.DevUShort,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.WRITE]],
-                 'UChar_attr_w':[[PyTango.ArgType.DevUChar,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.WRITE]],
-                 'Long_attr_with_w':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ_WRITE]],
-                 'Long_attr_with_w2':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ_WRITE]],
-                 'Short_attr_rw':[[PyTango.ArgType.DevShort,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ_WRITE]],
-                 'Short_attr_w2':[[PyTango.ArgType.DevShort,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.WRITE]],
-                 'Double_attr_w':[[PyTango.ArgType.DevDouble,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.WRITE]],
-                 'String_attr_w2':[[PyTango.ArgType.DevString,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.WRITE]],
-                 'Short_attr_w':[[PyTango.ArgType.DevShort,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.WRITE],
-                                 {'memorized':'true'}],
-                 'String_attr_w':[[PyTango.ArgType.DevString,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.WRITE],
-                                  {'memorized':'true'}],
-                 'Boolean_attr_w':[[PyTango.ArgType.DevBoolean,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.WRITE],
-                                  {'memorized':'True'}],
-                 'Float_attr':[[PyTango.ArgType.DevFloat,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'Boolean_attr':[[PyTango.ArgType.DevBoolean,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'UShort_attr':[[PyTango.ArgType.DevUShort,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'UChar_attr':[[PyTango.ArgType.DevUChar,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'Float_spec_attr':[[PyTango.ArgType.DevFloat,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ,3]],
-                 'Boolean_spec_attr':[[PyTango.ArgType.DevBoolean,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ,5]],
-                 'UShort_spec_attr':[[PyTango.ArgType.DevUShort,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ,2]],
-                 'UChar_spec_attr':[[PyTango.ArgType.DevUChar,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ,6]],
-                 'PollLong_attr':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'PollString_spec_attr':[[PyTango.ArgType.DevString,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ,2]],
-                 'Short_spec_attr_w':[[PyTango.ArgType.DevShort,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.WRITE,4],
-                                      {'max value':100}],
-                 'Short_ima_attr_w':[[PyTango.ArgType.DevShort,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.WRITE,4,4]],
-                 'Long_spec_attr_w':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.WRITE,2]],
-                 'Double_spec_attr_w':[[PyTango.ArgType.DevDouble,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.WRITE,2]],
-                 'String_spec_attr_w':[[PyTango.ArgType.DevString,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.WRITE,2]],
-                 'Float_spec_attr_w':[[PyTango.ArgType.DevFloat,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.WRITE,4]],
-                 'Boolean_spec_attr_w':[[PyTango.ArgType.DevBoolean,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.WRITE,4]],
-                 'UShort_spec_attr_w':[[PyTango.ArgType.DevUShort,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.WRITE,4]],
-                 'UChar_spec_attr_w':[[PyTango.ArgType.DevUChar,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.WRITE,4]],
-                 'String_ima_attr_w':[[PyTango.ArgType.DevString,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.WRITE,2,2]],
-                 'Float_ima_attr_w':[[PyTango.ArgType.DevFloat,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.WRITE,8,8]],
-                 'UShort_ima_attr_w':[[PyTango.ArgType.DevUShort,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.WRITE,8,2]],
-                 'Short_spec_attr_rw':[[PyTango.ArgType.DevShort,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ_WRITE,4]],
-                 'Long_spec_attr_rw':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ_WRITE,4]],
-                 'String_spec_attr_rw':[[PyTango.ArgType.DevString,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ_WRITE,2]],
-                 'Float_spec_attr_rw':[[PyTango.ArgType.DevFloat,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ_WRITE,4]],
-                 'UChar_spec_attr_rw':[[PyTango.ArgType.DevUChar,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ_WRITE,4]],
-                 'Short_ima_attr_rw':[[PyTango.ArgType.DevShort,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.READ_WRITE,4,4]],
-                 'String_ima_attr_rw':[[PyTango.ArgType.DevString,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.READ_WRITE,2,2]],
-                 'Boolean_ima_attr_rw':[[PyTango.ArgType.DevBoolean,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.READ_WRITE,4,4]],
-                 'UShort_ima_attr_rw':[[PyTango.ArgType.DevUShort,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.READ_WRITE,2,4]],
-                 'Poll_buff':[[PyTango.ArgType.DevString,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.READ,2,2]],
-                 'Poll_buffRW':[[PyTango.ArgType.DevString,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.READ_WRITE,2,2]],
-                 'attr_asyn':[[PyTango.ArgType.DevDouble,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'attr_asyn_to':[[PyTango.ArgType.DevDouble,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'attr_asyn_except':[[PyTango.ArgType.DevDouble,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'attr_asyn_write':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.WRITE]],
-                 'attr_asyn_write_to':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.WRITE]],
-                 'attr_asyn_write_except':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.WRITE]],
-                 'event_change_tst':[[PyTango.ArgType.DevLong,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ,10]],
-                 'event64_change_tst':[[PyTango.ArgType.DevLong64,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ,6]],
-                 'event_quality_tst':[[PyTango.ArgType.DevDouble,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ,2]],
-                 'slow_actuator':[[PyTango.ArgType.DevShort,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ_WRITE]],
-                 'fast_actuator':[[PyTango.ArgType.DevDouble,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ_WRITE]],
-                 'Long64_attr':[[PyTango.ArgType.DevLong64,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'Long64_spec_attr':[[PyTango.ArgType.DevLong64,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ,10]],
-                 'Long64_ima_attr':[[PyTango.ArgType.DevLong64,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.READ,10,2]],
-                 'Long64_attr_w':[[PyTango.ArgType.DevLong64,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.WRITE]],
-                 'Long64_spec_attr_w':[[PyTango.ArgType.DevLong64,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.WRITE,4]],
-                 'Long64_ima_attr_w':[[PyTango.ArgType.DevLong64,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.WRITE,4,4]],
-                 'Long64_attr_rw':[[PyTango.ArgType.DevLong64,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ_WRITE]],
-                 'Long64_spec_attr_rw':[[PyTango.ArgType.DevLong64,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ_WRITE,4]],
-                 'Long64_ima_attr_rw':[[PyTango.ArgType.DevLong64,PyTango.AttrDataFormat.IMAGE,PyTango.AttrWriteType.READ_WRITE,4,4]],
-                 'Encoded_attr':[[PyTango.CmdArgType.DevEncoded,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ_WRITE]],
-                 'ULong_attr':[[PyTango.CmdArgType.DevULong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'ULong64_attr':[[PyTango.CmdArgType.DevULong64,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'ULong_attr_rw':[[PyTango.CmdArgType.DevULong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ_WRITE]],
-                 'ULong64_attr_rw':[[PyTango.CmdArgType.DevULong64,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ_WRITE]],
-                 'State_attr_rw':[[PyTango.CmdArgType.DevState,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ_WRITE]],
-                 'ULong_spec_attr_rw':[[PyTango.CmdArgType.DevULong,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ_WRITE,3]],
-                 'ULong64_spec_attr_rw':[[PyTango.CmdArgType.DevULong64,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ_WRITE,3]],
-                 'State_spec_attr_rw':[[PyTango.CmdArgType.DevState,PyTango.AttrDataFormat.SPECTRUM,PyTango.AttrWriteType.READ_WRITE,3]],
-                 'Sub_device_tst':[[PyTango.CmdArgType.DevBoolean,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'SlowAttr':[[PyTango.CmdArgType.DevDouble,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'Encoded_image':[[PyTango.CmdArgType.DevEncoded,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ]],
-                 'DefAttr':[[PyTango.CmdArgType.DevLong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ_WRITE]],
-                 'DefUserAttr':[[PyTango.CmdArgType.DevLong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ_WRITE],
-                                {'description':"User desc",'min value':30,'delta val':77, 'delta t':88,'event rel change':55,'event period':1500}],
-                 'DefClassAttr':[[PyTango.CmdArgType.DevLong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ_WRITE]],
-                 'DefClassUserAttr':[[PyTango.CmdArgType.DevLong,PyTango.AttrDataFormat.SCALAR,PyTango.AttrWriteType.READ_WRITE],
-                                {'description':"User desc",'min value':30,'delta val':77, 'delta t':88,'event rel change':55,'event period':1500}]
-              }
-
-
-if __name__ == '__main__':
-    try:
-        py = PyTango.Util(sys.argv)
-        py.add_TgClass(DevTestClass,DevTest,'DevTest')
-
-        U = PyTango.Util.instance()
-        U.server_init()
-        U.server_run()
-
-    except PyTango.DevFailed,e:
-        print '-------> Received a DevFailed exception:',e
-    except Exception,e:
-        print '-------> An unforeseen exception occured....',e
diff --git a/tests/README b/tests/README
deleted file mode 100644
index c6526b9..0000000
--- a/tests/README
+++ /dev/null
@@ -1,20 +0,0 @@
-Brief introduction to PyTango Test Suite
-----------------------------------------
-
-The test sutite consists of:
-- DevTest.py - the testing device
-- TangoRunner.py - the file to be imported in order to get a proper Tango-tailored formatting of the tests output
-- TestSuite.py - the actual test suite.
-
-Please acquaint yourself with the exemplary Test Case in the TestSuite.py file to understand how to create Test Cases, define command line parameters (to provide test cases with user input) set restore points, etc.
-
-To execute the test suite:
-1. Define a test device in the database.
-2. Run the device (DevTest.py)
-3. Execute the test suite (TestSuite.py) providing required parameters in the command line (e.g. the device name).
-
-The PyTango test suite framework is supposed to mimic the functionality of the C++ test suite. Therefore its features and behaviour is similar to the C++ one.
-For more explanation on the Test Suite Framework and its use, please read through the README file in the C++ test suite repository:
-
-http://tango-cs.svn.sourceforge.net/viewvc/tango-cs/api/cpp/cpp_test_suite/trunk/
-
diff --git a/tests/TangoRunner.py b/tests/TangoRunner.py
deleted file mode 100644
index 63cb9e2..0000000
--- a/tests/TangoRunner.py
+++ /dev/null
@@ -1,341 +0,0 @@
-"""Running tests"""
-
-import sys
-import time
-
-from unittest import result
-from unittest.signals import registerResult
-
-from unittest import TestCase, TestSuite, suite, util
-from copy import deepcopy
-
-
-__unittest = True
-
-# loop parameters
-_loop = 1
-_loopSuite = 1
-_loopSuffix = '__loop'
-
-
-def _printDict(obj):
-    for key, value in sorted(obj.__dict__.items()):
-        print("\t" + str(key) + " : " + str(value))
-        
-def _hasFailed(result):
-    '''Checks if any failure occurred'''
-    if result.__class__.__name__ == 'TangoTestResult' and (len(result.errors) != 0 or len(result.failures) != 0):
-        return True
-    return False
-
-def formatName(name):
-    newName = ''
-    for letter in name:
-        if letter.isupper():
-            newName += ' '
-        newName += letter
-    return newName
-
-class TangoTestSuite(TestSuite):
-    '''Tango-tailored Test Suite class'''
-    def __init__(self, tests=()):
-        super(TangoTestSuite, self).__init__(tests)
-        
-    def __call__(self, *args, **kwds):
-        if len(args) > 0:
-            result = args[0]
-            if not _hasFailed(result):
-                # loop count down
-                self.loop = getattr(self,'loop', _loopSuite)
-                result.loopSuite = 0
-                # flag to indicate if the test suite has finished its loop execution
-                result.loopSuiteDone = False
-                # determine if the suite consists of test cases for the same class
-                suiteClass = next(iter(self), None).__class__
-                className = suiteClass.__name__
-                if suiteClass != None.__class__ and all(isinstance(test, TangoTestCase) and test.__class__ == suiteClass for test in self):
-                    # print test suite name (only once), truncate the '__loop' suffix and show number of iterations
-                    if self.loop == _loopSuite:
-                        suiteName = formatName(className)
-                        if suiteName.endswith(_loopSuffix):
-                            suiteName = suiteName[:-len(_loopSuffix)]
-                            if _loopSuite > 1:
-                                suiteName += ' [' + str(_loopSuite) + ' iter]'
-                        result.stream.writeln("\n" + suiteName + "\n")
-                    # execute test suites with suffix '__loop' multiple times
-                    if className.endswith(_loopSuffix) and self.loop > 1:
-                        # treat test methods executed in a loop as one test run
-                        testsRun = result.testsRun
-                        self.loop -= 1
-                        # TODO: check efficiency
-                        suite = deepcopy(self)
-                        suite(*args, **kwds)
-                        result.testsRun = testsRun
-                if not _hasFailed(result):
-                    result.loopSuite += 1
-                    # at the last iteration of the suite loop set the flag to True
-                    if not className.endswith(_loopSuffix) or _loopSuite <= 1 or result.loopSuite == _loopSuite:
-                        result.loopSuiteDone = True
-                    return super(TangoTestSuite, self).run(*args, **kwds)
-
-class TangoTestCase(TestCase):
-    '''Tango-tailored Test Case class'''
-    def __init__(self, methodName='runTest'):
-        super(TangoTestCase, self).__init__(methodName)
-        
-    def __call__(self, *args, **kwds):
-        if len(args) > 0:
-            result = args[0]
-            if not _hasFailed(result):
-                # loop count down
-                self.loop = getattr(self,'loop', _loop)
-                result.loop = 0
-                # print test case name (only once), truncate the '__loop' suffix and show number of iterations
-                if self.loop == _loop and result.loopSuiteDone:
-                    caseName = formatName(self._testMethodName)
-                    if caseName.startswith('test_'):
-                        caseName = caseName[len('test_'):]
-                    if caseName.endswith(_loopSuffix):
-                        caseName = caseName[:-len(_loopSuffix)]
-                        if _loop > 1:
-                            caseName += ' [' + str(_loop) + ' iter]'
-                    caseName = '\t' + caseName
-                    result.stream.write(caseName)
-                # run test methods with suffix '__loop' multiple times
-                if self._testMethodName.endswith(_loopSuffix) and self.loop > 1:
-                    # treat test methods executed in a loop as one test run
-                    testsRun = result.testsRun
-                    self.loop -= 1
-                    self(*args, **kwds)
-                    result.testsRun = testsRun
-                
-                if not _hasFailed(result):
-                    result.loop += 1
-                    returnResult = super(TangoTestCase, self).run(*args, **kwds)
-                    # print OK information only after the last successful execution of the test case loop and as well as test suite loop
-                    if not _hasFailed(result) and getattr(result, 'loopSuiteDone', False) and (not self._testMethodName.endswith(_loopSuffix)  or _loop <= 1 or result.loop == _loop):
-                        result.stream.writeln(" --> OK")
-                    return returnResult
-
-class _WritelnDecorator(object):
-    """Used to decorate file-like objects with a handy 'writeln' method"""
-    def __init__(self,stream):
-        self.stream = stream
-
-    def __getattr__(self, attr):
-        if attr in ('stream', '__getstate__'):
-            raise AttributeError(attr)
-        return getattr(self.stream,attr)
-
-    def writeln(self, arg=None):
-        if arg:
-            self.write(arg)
-        self.write('\n') # text-mode streams translate to \r\n if needed
-
-
-class TangoTestResult(result.TestResult):
-    """A test result class that can print formatted text results to a stream.
-
-    Used by TangoTestRunner.
-    """
-    separator1 = '=' * 70
-    separator2 = '-' * 70
-
-    def __init__(self, stream, descriptions, verbosity):
-        super(TangoTestResult, self).__init__()
-        self.stream = stream
-        self.showAll = verbosity > 2
-        self.dots = verbosity == 2
-        self.tangoPrint = verbosity == 1
-        self.descriptions = descriptions
-        self.loop = 0
-        self.loopSuite = 0
-
-    def getDescription(self, test):
-        testString = str(test).split(' ')
-        if len(testString) is 2:
-            testName = testString[0]
-            testClass = testString[1][1:-1]
-            if self.loop > 1:
-                loop = ' [' + str(self.loop) + ' iter]'
-            else:
-                loop = ''
-            if self.loopSuite > 1:
-                loopSuite = ' [' + str(self.loopSuite) + ' iter]'
-            else:
-                loopSuite = ''
-            return str(testClass + loopSuite + ' :: ' + testName + loop)
-        else:
-            return str(test)
-        
-        doc_first_line = test.shortDescription()
-        if self.descriptions and doc_first_line:
-            return '\n'.join((str(test), doc_first_line))
-        else:
-            return str(test)
-
-    def startTest(self, test):
-        super(TangoTestResult, self).startTest(test)
-        if self.showAll:
-            self.stream.write(self.getDescription(test))
-            self.stream.write(" ... ")
-            self.stream.flush()
-
-    def addSuccess(self, test):
-        super(TangoTestResult, self).addSuccess(test)
-        if self.showAll:
-            self.stream.writeln("ok")
-        elif self.dots:
-            self.stream.write('.')
-            self.stream.flush()
-
-    def addError(self, test, err):
-        super(TangoTestResult, self).addError(test, err)
-        if self.showAll:
-            self.stream.writeln("ERROR")
-        elif self.dots:
-            self.stream.write('E')
-            self.stream.flush()
-
-    def addFailure(self, test, err):
-        super(TangoTestResult, self).addFailure(test, err)
-        if self.showAll:
-            self.stream.writeln("FAIL")
-        elif self.dots:
-            self.stream.write('F')
-            self.stream.flush()
-
-    def addSkip(self, test, reason):
-        super(TangoTestResult, self).addSkip(test, reason)
-        if self.showAll:
-            self.stream.writeln("skipped {0!r}".format(reason))
-        elif self.dots:
-            self.stream.write("s")
-            self.stream.flush()
-
-    def addExpectedFailure(self, test, err):
-        super(TangoTestResult, self).addExpectedFailure(test, err)
-        if self.showAll:
-            self.stream.writeln("expected failure")
-        elif self.dots:
-            self.stream.write("x")
-            self.stream.flush()
-
-    def addUnexpectedSuccess(self, test):
-        super(TangoTestResult, self).addUnexpectedSuccess(test)
-        if self.showAll:
-            self.stream.writeln("unexpected success")
-        elif self.dots:
-            self.stream.write("u")
-            self.stream.flush()
-
-    def printErrors(self):
-        if self.dots or self.showAll:
-            self.stream.writeln()
-        self.printErrorList('ERROR', self.errors)
-        self.printErrorList('FAIL', self.failures)
-
-    def printErrorList(self, flavour, errors):
-        for test, err in errors:
-            self.stream.writeln()
-            self.stream.writeln(self.separator1)
-            self.stream.writeln("%s: %s" % (flavour,self.getDescription(test)))
-            self.stream.writeln(self.separator2)
-            self.stream.writeln("%s" % err)
-
-
-class TangoTestRunner(object):
-    """A test runner class that displays results in textual form.
-
-    It prints out the names of tests as they are run, errors as they
-    occur, and a summary of the results at the end of the test run.
-    """
-    resultclass = TangoTestResult
-
-    def __init__(self, stream=sys.stderr, descriptions=True, verbosity=1,
-                 failfast=False, buffer=False, resultclass=None, loopSuite=1, loop=1):
-        self.stream = _WritelnDecorator(stream)
-        self.descriptions = descriptions
-        self.verbosity = verbosity
-        self.failfast = failfast
-        self.buffer = buffer
-        # set loop parameters
-        global _loopSuite, _loop
-        _loopSuite = loopSuite
-        _loop = loop
-        if resultclass is not None:
-            self.resultclass = resultclass
-
-    def _makeResult(self):
-        return self.resultclass(self.stream, self.descriptions, self.verbosity)
-
-    def run(self, test):
-        "Run the given test case or test suite."
-
-        # convert test classes to Tango Test Suite compliant
-        def convertToTango(test):
-            try:
-                iter(test)
-            except TypeError:
-                test.__class__.__bases__ = (TangoTestCase, )
-            else:
-                test.__class__ = TangoTestSuite
-                for t in test:
-                    convertToTango(t)
-        convertToTango(test)
-        
-        result = self._makeResult()
-        registerResult(result)
-        result.failfast = self.failfast
-        result.buffer = self.buffer
-        startTime = time.time()
-        startTestRun = getattr(result, 'startTestRun', None)
-        if startTestRun is not None:
-            startTestRun()
-        try:
-            test(result)
-        finally:
-            stopTestRun = getattr(result, 'stopTestRun', None)
-            if stopTestRun is not None:
-                stopTestRun()
-        stopTime = time.time()
-        timeTaken = stopTime - startTime
-        result.printErrors()
-        if hasattr(result, 'separator2'):
-            self.stream.writeln(result.separator2)
-        run = result.testsRun
-        self.stream.writeln("Ran %d test%s in %.3fs" %
-                            (run, run != 1 and "s" or "", timeTaken))
-        self.stream.writeln()
-
-        expectedFails = unexpectedSuccesses = skipped = 0
-        try:
-            results = map(len, (result.expectedFailures,
-                                result.unexpectedSuccesses,
-                                result.skipped))
-        except AttributeError:
-            pass
-        else:
-            expectedFails, unexpectedSuccesses, skipped = results
-
-        infos = []
-        if not result.wasSuccessful():
-            self.stream.write("FAILED")
-            failed, errored = map(len, (result.failures, result.errors))
-            if failed:
-                infos.append("failures=%d" % failed)
-            if errored:
-                infos.append("errors=%d" % errored)
-        else:
-            self.stream.write("OK")
-        if skipped:
-            infos.append("skipped=%d" % skipped)
-        if expectedFails:
-            infos.append("expected failures=%d" % expectedFails)
-        if unexpectedSuccesses:
-            infos.append("unexpected successes=%d" % unexpectedSuccesses)
-        if infos:
-            self.stream.writeln(" (%s)" % (", ".join(infos),))
-        else:
-            self.stream.write("\n")
-        return result
diff --git a/tests/TestSuite.py b/tests/TestSuite.py
deleted file mode 100644
index cf4f6aa..0000000
--- a/tests/TestSuite.py
+++ /dev/null
@@ -1,296 +0,0 @@
-import sys
-import inspect
-import unittest
-import TangoRunner
-import PyTango
-from sets import Set
-import types
-import os
-
-
-# =====================================================================================================================
-# Test suites ---------------------------------------------------------------------------------------------------------
-
-# Test Case example ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-# this is a Test Case which aggregates Test Units of a similar domain
-# append a '__loop' suffix to the Test Case name to execute it multiple times - this will only be done if
-# a '--loopSuite=' command line parameter is defined and has a numeric value
-class TestCaseExample__loop(TangoRunner.TangoTestCase):
-    @classmethod
-    def setUpClass(self):
-        # get command line parameters
-        # parameters are defined by name, e.g. 'myparam' and provided in the command line as '--myparam=myparamvalue'
-        # you can provide description of the parameter but it is optional
-        # values of the parameters are returned as strings
-        # get_param() defines and returns value of a Mandatory Parameter which has to be provided in the command line,
-        # otherwise the execution terminates
-        #self.myparam = get_param('myparam','description of what myparam is')
-        # get_param_opt() defines and returns value of an Optional Parameter which may but does not have to be provided
-        # in the command line
-        #self.myparamopt = get_param_opt('loop','number of times the Unit Test suffixed with "__loop" will be executed')
-        # to correctly process command line parameters always append this line
-        validate_args()
-    
-    @classmethod
-    def tearDownClass(self):
-        if is_restore_set(self, 'my_restore_point'):
-            # fix here what your unit test could break upon unpredicted termination
-            pass
-    # this is a Unit Test, to make the framework interpret a method as a Unit Test append the 'test_' suffix to its name 
-    def test_MyUnitTest(self):
-        # set a restore point if you modify the configuration of the device on which the Test Suite is executed
-        # even if the Unit Test terminates unexpectedly, the configuration will be restored if you use
-        # is_restore_set() method in tearDownClass()
-        restore_set(self, 'my_restore_point')
-        # write your test here
-        # to get more information about available assertions refer to unittest tutorial
-        assert(1 == 1)
-        self.assertRegexpMatches('string to contain a word','word')
-        # if you bring all the device configuration to defaults, unset the restore point
-        restore_unset(self, 'my_restore_point')
-
-    # this Unit Test will be executed several times in a loop if the '--loop=' parameter is defined and has a numeric
-    # value; to declare a Unit Test to be executed in a loop append the '__looop' suffix to its name
-    def test_MyUnitTest1__loop(self):
-        assert(True)
-
-# Attr Misc Test Case ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-class AttrMisc(TangoRunner.TangoTestCase):
-    @classmethod
-    def setUpClass(self):
-        # get parameters
-        self.device1_name = get_param('device1','device on which the Test Suite executes')
-        validate_args()
-        
-        self.device1 = PyTango.DeviceProxy(self.device1_name)
-    
-    @classmethod
-    def tearDownClass(self):
-        if is_restore_set(self, 'Float_spec_attr_rw'):
-            ai = self.device1.get_attribute_config('Float_spec_attr_rw')
-            ai.min_value = 'NaN'
-            ai.max_value = 'NaN'
-            ai.alarms.min_alarm = 'NaN'
-            ai.alarms.max_alarm = 'NaN'
-            self.device1.set_attribute_config(ai)
-        
-    def test_GetAttributeConfig(self):
-        ai = self.device1.get_attribute_config('Float_spec_attr_rw')
-        old_ai = PyTango.AttributeInfoEx(ai)
-        assert(ai.min_value == 'Not specified')
-        assert(ai.max_value == 'Not specified')
-        assert(ai.alarms.min_alarm == 'Not specified')
-        assert(ai.alarms.max_alarm == 'Not specified')
-        
-        ai.min_value = '3.5'
-        ai.max_value = '15.5'
-        ai.alarms.min_alarm = '4.2'
-        ai.alarms.max_alarm = '13.5'
-        self.device1.set_attribute_config(ai)
-        restore_set(self, 'Float_spec_attr_rw')
-        
-        new_ai = self.device1.get_attribute_config('Float_spec_attr_rw')
-        assert(new_ai.name == ai.name)
-        assert(new_ai.data_type == ai.data_type)
-        assert(new_ai.data_format == ai.data_format)
-        assert(new_ai.max_dim_x == ai.max_dim_x)
-        assert(new_ai.max_dim_y == ai.max_dim_y)
-        assert(new_ai.writable == ai.writable)
-        assert(new_ai.label == ai.label)
-        assert(new_ai.description == ai.description)
-        assert(new_ai.alarms.min_alarm == ai.alarms.min_alarm)
-        assert(new_ai.alarms.max_alarm == ai.alarms.max_alarm)
-        assert(new_ai.min_value == ai.min_value)
-        assert(new_ai.max_value == ai.max_value)
-        
-        ai.min_value = 'NaN'
-        ai.max_value = 'NaN'
-        ai.alarms.min_alarm = 'NaN'
-        ai.alarms.max_alarm = 'NaN'
-        self.device1.set_attribute_config(ai)
-        restore_unset(self, 'Float_spec_attr_rw')
-        
-        new_ai = self.device1.get_attribute_config('Float_spec_attr_rw')
-        assert(new_ai.name == old_ai.name)
-        assert(new_ai.data_type == old_ai.data_type)
-        assert(new_ai.data_format == old_ai.data_format)
-        assert(new_ai.max_dim_x == old_ai.max_dim_x)
-        assert(new_ai.max_dim_y == old_ai.max_dim_y)
-        assert(new_ai.writable == old_ai.writable)
-        assert(new_ai.label == old_ai.label)
-        assert(new_ai.description == old_ai.description)
-        assert(new_ai.alarms.min_alarm == old_ai.alarms.min_alarm)
-        assert(new_ai.alarms.max_alarm == old_ai.alarms.max_alarm)
-        assert(new_ai.min_value == old_ai.min_value)
-        assert(new_ai.max_value == old_ai.max_value)
-        
-        new_ai.min_value = '3.5'
-        new_ai.max_value = '15.5'
-        self.device1.set_attribute_config(new_ai)
-        restore_set(self, 'Float_spec_attr_rw')
-        
-        # TODO: choose one variant
-        # variant 1
-        with self.assertRaises(PyTango.DevFailed) as cm:
-            self.device1.write_attribute('Float_spec_attr_rw',[3.6,3.3,3.7])
-        assert(cm.exception.args[0].reason == 'API_WAttrOutsideLimit')
-        # variant 2
-        self.assertRaisesRegexp(PyTango.DevFailed,'reason = API_WAttrOutsideLimit',self.device1.write_attribute,'Float_spec_attr_rw',[3.6,3.3,3.7])
-        
-        self.assertRaisesRegexp(PyTango.DevFailed,'reason = API_WAttrOutsideLimit',self.device1.write_attribute,'Float_spec_attr_rw',[17.6])
-
-        new_ai.min_value = 'NaN'
-        new_ai.max_value = 'NaN'
-        new_ai.alarms.min_alarm = '6.0'
-        self.device1.set_attribute_config(new_ai)
-        
-        state = self.device1.state()
-        assert(state == PyTango.DevState.ALARM)
-        status = self.device1.status()
-        self.assertRegexpMatches(status,'ALARM')
-        self.assertRegexpMatches(status,'Float_spec_attr_rw')
-        
-        da = self.device1.read_attribute('Float_spec_attr_rw')
-        assert(da.quality == PyTango.AttrQuality.ATTR_ALARM)
-        
-        new_ai.alarms.min_alarm = 'NaN'
-        self.device1.set_attribute_config(new_ai)
-        
-        state = self.device1.state()
-        assert(state == PyTango.DevState.ON)
-        
-        da = self.device1.read_attribute('Float_spec_attr_rw')
-        assert(da.quality == PyTango.AttrQuality.ATTR_VALID)
-
-# End of Test suites --------------------------------------------------------------------------------------------------
-# =====================================================================================================================
-
-
-
-# =====================================================================================================================
-# Restore points internal functions -----------------------------------------------------------------------------------
-
-_restore_points = Set()
-
-def restore_hash(cls, name):
-    if isinstance(cls, (type, types.ClassType)):
-        # the tearDownClass method case
-        return cls.__name__ + name
-    else:
-        # the test methods case
-        return cls.__class__.__name__ + name
-
-def restore_set(cls, name):
-    _restore_points.add(restore_hash(cls, name))
-    
-def restore_unset(cls, name):
-    # TODO: consider catching exceptions for silent execution
-    _restore_points.remove(restore_hash(cls, name))
-    
-def is_restore_set(cls, name):
-    return restore_hash(cls, name) in _restore_points
-
-# End of Restore points internal functions ----------------------------------------------------------------------------
-# =====================================================================================================================
-
-
-
-# =====================================================================================================================
-# Arguments parsing ---------------------------------------------------------------------------------------------------
-
-params = {}
-params_opt = {}
-args_valid = True
-
-def get_param(param,desc='user defined mandatory parameter'):
-    '''Get mandatory parameters'''
-    if param not in params:
-        params[param] = desc
-    return find_param(param)
-
-def get_param_opt(param,desc='user defined mandatory parameter'):
-    '''Get mandatory parameters'''
-    if param not in params:
-        params_opt[param] = desc
-    return find_param(param)
-
-def validate_args():
-    '''Validate parameters'''
-    global args_valid
-    if args_valid == False:
-        usage = 'Usage: ' + os.path.basename(__file__) + ' '
-        params_str = 'Mandatory Parameters:\n'
-        params_opt_str = 'Optional Parameters:\n'
-        for param in params:
-            usage += '--' + param + '= '
-            params_str += '\t--' + param + '= - ' + params[param] + '\n'
-        for param in params_opt:
-            usage += '[--' + param + '=] '
-            params_opt_str += '\t--' + param + '= - ' + params_opt[param] + '\n'
-        print(usage + '\n')
-        if len(params) != 0:
-            print(params_str)
-        if len(params_opt) != 0:
-            print(params_opt_str)
-        sys.exit(1)
-            
-def find_param(param):
-    param_full = '--' + param + '='
-    for arg in sys.argv:
-        if arg[:len(param_full)] == param_full:
-            return arg[len(param_full):]
-    global args_valid
-    args_valid = False
-    return ''
-
-def get_param_if_registered(param):
-    if param in params:
-        return get_param(param)
-    elif param in params_opt:
-        return get_opt_param(param)
-    else:
-        return ''
-
-       
-# End of Arguments parsing -------------------------------------------------------------------------------------------- 
-# =====================================================================================================================
-
-
-
-# =====================================================================================================================
-# Test suite execution ------------------------------------------------------------------------------------------------
-if __name__ == '__main__':
-    # automatically detect tests (alphabetical order)
-    suites = []
-    testClasses = inspect.getmembers(sys.modules[__name__], inspect.isclass)
-    for name, test in testClasses:
-        if issubclass(test,TangoRunner.TangoTestCase):
-            suites.append(unittest.TestLoader().loadTestsFromTestCase(test))
-    
-#    # alternatively add test suite names here
-#    tests = [MyTest__loop]
-#    for test in tests:
-#        suites.append(unittest.TestLoader().loadTestsFromTestCase(test))
-    
-    # check loop parameters
-    def get_loop(param):
-        param_full = '--' + param + '='
-        for arg in sys.argv:
-            if arg[:len(param_full)] == param_full:
-                try:
-                    loop_value = int(arg[len(param_full):])
-                except:
-                    loop_value = 1
-                return loop_value
-        return 1
-
-    loopSuite_param = get_loop('loopSuite')
-    loop_param = get_loop('loop')
-
-    # execute the Test Suite
-    suite = TangoRunner.TangoTestSuite(suites)
-    TangoRunner.TangoTestRunner(loopSuite=loopSuite_param, loop=loop_param).run(suite)
-
-# End of Test suite execution -----------------------------------------------------------------------------------------
-# =====================================================================================================================
\ No newline at end of file
diff --git a/tests/TestSuiteTemplate.py b/tests/TestSuiteTemplate.py
deleted file mode 100644
index 32522ff..0000000
--- a/tests/TestSuiteTemplate.py
+++ /dev/null
@@ -1,47 +0,0 @@
-import sys
-import inspect
-import unittest
-import TangoRunner
-
-class MyTestSuite1(TangoRunner.TangoTestCase):
-    @classmethod
-    def setUpClass(self):
-        pass
-        
-    @classmethod
-    def tearDownClass(cls):
-        pass
-    
-    def setUp(self):
-        pass
-    
-    def tearDown(self):
-        pass
-    
-    def testMyTestCase1(self):
-        pass
-    
-    def testMyTestCase2__loop(self):
-        pass
-
-
-class MyTestSuite2__loop(TangoRunner.TangoTestCase):
-    def testMyTestCase3(self):
-        pass
-        
-
-if __name__ == '__main__':
-    # automatically detect tests (alphabetical order)
-    suites = []
-    testClasses = inspect.getmembers(sys.modules[__name__], inspect.isclass)
-    for name, test in testClasses:
-        if issubclass(test,TangoRunner.TangoTestCase):
-            suites.append(unittest.TestLoader().loadTestsFromTestCase(test))
-    
-#    # alternatively add test suite names here
-#    tests = [MyTest__loop]
-#    for test in tests:
-#        suites.append(unittest.TestLoader().loadTestsFromTestCase(test))
-
-    suite = TangoRunner.TangoTestSuite(suites)
-    TangoRunner.TangoTestRunner().run(suite)
\ No newline at end of file
diff --git a/tests/ci/ALBA/build.sh b/tests/ci/ALBA/build.sh
deleted file mode 100755
index 1f63bca..0000000
--- a/tests/ci/ALBA/build.sh
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/bin/bash
-
-export PYTHONPATH=/tmp/jenkins/jobs/PyTango
-
-cd ../..
-
-python DevTest.py pytomasz &
-
-if [ $? != 0 ]
-then
-	exit $?
-fi
-
-python TestSuite.py --device1=dev/pytomasz/1
-
-expor EX = $?
-
-ps -ef | grep DevTest.py | awk '{print $2}' | xargs kill -9
-
-exit $EX
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-echo LOG4TANGO_ROOT
-echo $LOG4TANGO_ROOT
-echo OMNI_ROOT
-echo $OMNI_ROOT
-echo BOOST_ROOT
-echo $BOOST_ROOT
-echo ZMQ_ROOT
-echo $ZMQ_ROOT
-
-echo C_INCLUDE_PATH
-echo $C_INCLUDE_PATH
-
-echo CPLUS_INCLUDE_PATH
-echo $CPLUS_INCLUDE_PATH
-
-echo CPATH
-echo $CPATH
-
-export CPATH=/tmp/jenkins/jobs/TangoLib/include
-export C_INCLUDE_PATH=/tmp/jenkins/jobs/TangoLib/include:$C_INCLUDE_PATH
-export CPLUS_INCLUDE_PATH=/tmp/jenkins/jobs/TangoLib/include:$CPLUS_INCLUDE_PATH
-
-export TANGO_ROOT=/tmp/jenkins/jobs/TangoLib
-
-
-export LD_LIBRARY_PATH=/tmp/jenkins/jobs/TangoLib/lib:$LD_LIBRARY_PATH
-
-
-echo $LD_LIBRARY_PATH
-echo $CPLUS_INCLUDE_PATH
-
-
-cd ../..
-
-pwd
-
-make user=1 prefix=/tmp/jenkins/jobs install
-
-make user=1 prefix=/tmp/jenkins/jobs install
-
-export PYTHONPATH=/tmp/jenkins/jobs/PyTango:$PYTHONPATH
-
-echo $PYTHONPATH
-
-python tests/DevTest.py pytomasz &
-
-python tests/TestSuite.py
-
-ps -ef | awk '/DevTest.py/ {print$2}' | xargs kill -9
diff --git a/tests/ci/build.sh b/tests/ci/build.sh
deleted file mode 100755
index 9ea91e1..0000000
--- a/tests/ci/build.sh
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/bash
-
-if [ ! -z "$INSTITUTE" -a -d "$INSTITUTE" -a -f "$INSTITUTE/build.sh" ]
-then
-	echo "Executing build.sh for $INSTITUTE"
-	cd "$INSTITUTE"
-	./build.sh
-	exit $?
-else
-	if [ ! -z "$INSTITUTE" ]
-	then
-		echo "Failed to execute ci/$INSTITUTE/build.sh !"
-		echo "Make sure ci/$INSTITUTE/build.sh exists"
-	else
-		echo "Mr Jenkins needs additional configuration!"
-		echo "Go to Jenkins dashboard -> Manage Jenkins -> Global Properties, tick Environment Variables and add a key-value pair: name - INSTITUTE, value - YourInstituteName."
-		echo "Check out the project. Go to the 'ci' directory and create a 'YourInstituteName' subdirectory. In the 'YourInstituteName' subdirectory create a 'build.sh' file which will contain the recipe how to build your project. Make the 'build.sh' file executable. Commit changes."
-	fi
-	exit 1
-fi

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/pytango.git



More information about the debian-science-commits mailing list