@ -8,17 +8,21 @@ import io
import shutil
import copy
WORKSPACE = os . path . abspath ( os . getenv ( ' WORKSPACE ' , ' /tmp ' ) )
WORKSPACE = os . path . abspath ( os . getenv ( " WORKSPACE " , " /tmp " ) )
FIXTURES = os . path . join ( os . getcwd ( ) , " tests/fixtures " )
FAKE_CMD_LIST = os . path . join ( WORKSPACE , " cmd_list " )
FAKE_BIN = os . path . join ( WORKSPACE , " bin " )
FAKE_PATH = " %s :/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin " % FAKE_BIN
def executeAndReturnOutput ( command ) :
p = subprocess . Popen ( command , encoding = " utf-8 " ,
stdout = subprocess . PIPE ,
stderr = subprocess . PIPE )
def executeAndReturnOutput ( command , env = { } ) :
p = subprocess . Popen (
command ,
encoding = " utf-8 " ,
stdout = subprocess . PIPE ,
stderr = subprocess . PIPE ,
env = env ,
)
stdoutdata , stderrdata = p . communicate ( )
# print(stdoutdata, file=sys.stdout)
print ( stderrdata , file = sys . stderr )
@ -31,24 +35,23 @@ def create_prog(filename, command):
: param unicode filename : destination filename
: param unicode command : command to write to test program
"""
with io . open ( filename , ' w ' , encoding = ' utf-8 ' ) as fp :
fp . write ( " #!/bin/bash \n %s \n " % ( command , ) )
with io . open ( filename , " w " , encoding = " utf-8 " ) as fp :
fp . write ( " #!/bin/bash \n %s \n " % ( command , ) )
os . fchmod ( fp . fileno ( ) , 0o755 )
def setnode ( active = True ) :
if active :
mode = ' true '
mode = " true "
else :
mode = ' false '
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-check-active ' ) , mode )
mode = " false "
create_prog ( os . path . join ( FAKE_BIN , " ngcp-check-active " ) , mode )
command = [
" env " ,
" PATH= %s " % FAKE_PATH ,
" ./scripts/ngcp-dlgcnt-check " , " -r " ]
FAKE_DLG_CLEAN = """
command = [ " env " , " PATH= %s " % FAKE_PATH , " ./scripts/ngcp-dlgcnt-check " , " -r " ]
FAKE_DLG_CLEAN = (
"""
if [ $ 1 = - c ] ; then
echo 4
exit 0
@ -57,7 +60,9 @@ if [ $1 = -C ] ; then
echo localhost
exit 0
fi
echo " ngcp-dlgcnt-clean $* " >> % s """ % F AKE_CMD_LIST
echo " ngcp-dlgcnt-clean $* " >> % s """
% FAKE_CMD_LIST
)
FAKE_REDIS_HELPER = """
if [ $ 1 != - h ] & & [ $ 2 != localhost ] ; then
@ -70,28 +75,28 @@ if [ $3 != -n ] && [ $4 != 4 ] ; then
fi """
class TestDlgCnt ( unittest . TestCase ) :
class Test ( unittest . TestCase ) :
def checkNotCmd ( self ) :
self . assertFalse ( os . path . exists ( FAKE_CMD_LIST ) ,
" %s found " % FAKE_CMD_LIST )
self . assertFalse ( os . path . exists ( FAKE_CMD_LIST ) , " %s found " % FAKE_CMD_LIST )
def checkCmd ( self , f , f2 ) :
self . assertTrue ( os . path . exists ( f ) , " %s not found " % f )
self . assertTrue ( os . path . exists ( f2 ) , " %s not found " % f2 )
res = executeAndReturnOutput (
[ ' diff ' , ' -uNb ' , f , f2 ] )
res = executeAndReturnOutput ( [ " diff " , " -uNb " , f , f2 ] )
self . assertEqual ( res [ 0 ] , 0 , res [ 1 ] )
class TestDlgCnt ( Test ) :
def setUp ( self ) :
self . command = copy . deepcopy ( command )
if not os . path . exists ( FAKE_BIN ) :
os . makedirs ( FAKE_BIN )
setnode ( True )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-dlgcnt-clean ' ) ,
FAKE_DLG_CLEAN )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-dlglist-clean ' ) ,
' echo " ngcp-dlglist-clean $* " >> %s ' % FAKE_CMD_LIST )
create_prog ( os . path . join ( FAKE_BIN , " ngcp-dlgcnt-clean " ) , FAKE_DLG_CLEAN )
create_prog (
os . path . join ( FAKE_BIN , " ngcp-dlglist-clean " ) ,
' echo " ngcp-dlglist-clean $* " >> %s ' % FAKE_CMD_LIST ,
)
def tearDown ( self ) :
shutil . rmtree ( WORKSPACE )
@ -100,14 +105,14 @@ class TestDlgCnt(unittest.TestCase):
self . command = [ " ./scripts/ngcp-dlgcnt-check " , " -k " ]
res = executeAndReturnOutput ( self . command )
self . assertEqual ( res [ 0 ] , 1 , res [ 2 ] )
self . assertRegex ( res [ 2 ] , ' illegal option ' )
self . assertRegex ( res [ 2 ] , " illegal option " )
self . checkNotCmd ( )
def test_help ( self ) :
self . command = [ " ./scripts/ngcp-dlgcnt-check " , " -h " ]
res = executeAndReturnOutput ( self . command )
self . assertEqual ( res [ 0 ] , 0 , res [ 2 ] )
self . assertRegex ( res [ 1 ] , ' \t options \n ' )
self . assertRegex ( res [ 1 ] , " \t options \n " )
self . checkNotCmd ( )
def test_inactive ( self ) :
@ -117,96 +122,143 @@ class TestDlgCnt(unittest.TestCase):
self . checkNotCmd ( )
def test_noredisconf ( self ) :
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-dlgcnt-clean ' ) ,
' echo " error " >&2; false ' )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-kamctl ' ) ,
" true " )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-redis-helper ' ) ,
" %s ; true " % FAKE_REDIS_HELPER )
create_prog (
os . path . join ( FAKE_BIN , " ngcp-dlgcnt-clean " ) , ' echo " error " >&2; false '
)
create_prog ( os . path . join ( FAKE_BIN , " ngcp-kamctl " ) , " true " )
create_prog (
os . path . join ( FAKE_BIN , " ngcp-redis-helper " ) , " %s ; true " % FAKE_REDIS_HELPER
)
res = executeAndReturnOutput ( self . command )
self . assertEqual ( res [ 0 ] , 0 , res [ 1 ] )
self . checkNotCmd ( )
def test_redisconf ( self ) :
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-kamctl ' ) ,
" true " )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-redis-helper ' ) ,
" %s ; true " % FAKE_REDIS_HELPER )
create_prog ( os . path . join ( FAKE_BIN , " ngcp-kamctl " ) , " true " )
create_prog (
os . path . join ( FAKE_BIN , " ngcp-redis-helper " ) , " %s ; true " % FAKE_REDIS_HELPER
)
res = executeAndReturnOutput ( self . command )
self . assertEqual ( res [ 0 ] , 0 , res [ 1 ] )
self . checkNotCmd ( )
def test_empty ( self ) :
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-kamctl ' ) ,
" true " )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-redis-helper ' ) ,
" true " )
create_prog ( os . path . join ( FAKE_BIN , " ngcp-kamctl " ) , " true " )
create_prog ( os . path . join ( FAKE_BIN , " ngcp-redis-helper " ) , " true " )
res = executeAndReturnOutput ( self . command )
self . assertEqual ( res [ 0 ] , 0 , res [ 1 ] )
self . checkNotCmd ( )
def test_empty_line ( self ) :
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-kamctl ' ) ,
" echo " )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-redis-helper ' ) ,
" echo " )
create_prog ( os . path . join ( FAKE_BIN , " ngcp-kamctl " ) , " echo " )
create_prog ( os . path . join ( FAKE_BIN , " ngcp-redis-helper " ) , " echo " )
res = executeAndReturnOutput ( self . command )
self . assertEqual ( res [ 0 ] , 0 , res [ 1 ] )
self . checkNotCmd ( )
def test_okredis ( self ) :
FAKE_DLG = os . path . join ( FIXTURES , ' okredis.dlg ' )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-kamctl ' ) ,
" cat %s " % ( FAKE_DLG ) )
FAKE_REDIS = os . path . join ( FIXTURES , ' okredis.redis ' )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-redis-helper ' ) ,
" cat %s " % ( FAKE_REDIS ) )
FAKE_DLG = os . path . join ( FIXTURES , " okredis.dlg " )
create_prog ( os . path . join ( FAKE_BIN , " ngcp-kamctl " ) , " cat %s " % ( FAKE_DLG ) )
FAKE_REDIS = os . path . join ( FIXTURES , " okredis.redis " )
create_prog(
os . path . join ( FAKE_BIN , " ngcp-redis-helper " ) , " cat %s " % ( FAKE_REDIS )
)
res = executeAndReturnOutput ( self . command )
self . assertEqual ( res [ 0 ] , 0 , res [ 2 ] )
self . checkNotCmd ( )
def test_koredis ( self ) :
FAKE_DLG = os . path . join ( FIXTURES , ' koredis.dlg ' )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-kamctl ' ) ,
" cat %s " % ( FAKE_DLG ) )
FAKE_REDIS = os . path . join ( FIXTURES , ' koredis.redis ' )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-redis-helper ' ) ,
" cat %s " % ( FAKE_REDIS ) )
FAKE_DLG = os . path . join ( FIXTURES , " koredis.dlg " )
create_prog ( os . path . join ( FAKE_BIN , " ngcp-kamctl " ) , " cat %s " % ( FAKE_DLG ) )
FAKE_REDIS = os . path . join ( FIXTURES , " koredis.redis " )
create_prog(
os . path . join ( FAKE_BIN , " ngcp-redis-helper " ) , " cat %s " % ( FAKE_REDIS )
)
res = executeAndReturnOutput ( self . command )
self . assertEqual ( res [ 0 ] , 0 , res [ 2 ] )
self . checkCmd ( os . path . join ( FIXTURES , ' koredis.cmd ' ) ,
FAKE_CMD_LIST )
self . checkCmd ( os . path . join ( FIXTURES , " koredis.cmd " ) , FAKE_CMD_LIST )
def test_kodlgclean ( self ) :
FAKE_DLG = os . path . join ( FIXTURES , ' koredis.dlg ' )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-kamctl ' ) ,
" cat %s " % ( FAKE_DLG ) )
FAKE_REDIS = os . path . join ( FIXTURES , ' koredis.redis ' )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-redis-helper ' ) ,
" cat %s " % ( FAKE_REDIS ) )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-dlgcnt-clean ' ) ,
' %s ; false ' % FAKE_DLG_CLEAN )
FAKE_DLG = os . path . join ( FIXTURES , " koredis.dlg " )
create_prog ( os . path . join ( FAKE_BIN , " ngcp-kamctl " ) , " cat %s " % ( FAKE_DLG ) )
FAKE_REDIS = os . path . join ( FIXTURES , " koredis.redis " )
create_prog (
os . path . join ( FAKE_BIN , " ngcp-redis-helper " ) , " cat %s " % ( FAKE_REDIS )
)
create_prog (
os . path . join ( FAKE_BIN , " ngcp-dlgcnt-clean " ) , " %s ; false " % FAKE_DLG_CLEAN
)
res = executeAndReturnOutput ( self . command )
self . assertEqual ( res [ 0 ] , 0 , res [ 2 ] )
self . checkCmd ( os . path . join ( FIXTURES , ' koredis.cmd ' ) ,
FAKE_CMD_LIST )
self . checkCmd ( os . path . join ( FIXTURES , " koredis.cmd " ) , FAKE_CMD_LIST )
def test_kolistclean ( self ) :
FAKE_DLG = os . path . join ( FIXTURES , ' koredis.dlg ' )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-kamctl ' ) ,
" cat %s " % ( FAKE_DLG ) )
FAKE_REDIS = os . path . join ( FIXTURES , ' koredis.redis ' )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-redis-helper ' ) ,
" cat %s " % ( FAKE_REDIS ) )
create_prog ( os . path . join ( FAKE_BIN , ' ngcp-dlglist-clean ' ) ,
' echo " ngcp-dlglist-clean $* " >> %s ; false ' % FAKE_CMD_LIST )
FAKE_DLG = os . path . join ( FIXTURES , " koredis.dlg " )
create_prog ( os . path . join ( FAKE_BIN , " ngcp-kamctl " ) , " cat %s " % ( FAKE_DLG ) )
FAKE_REDIS = os . path . join ( FIXTURES , " koredis.redis " )
create_prog (
os . path . join ( FAKE_BIN , " ngcp-redis-helper " ) , " cat %s " % ( FAKE_REDIS )
)
create_prog (
os . path . join ( FAKE_BIN , " ngcp-dlglist-clean " ) ,
' echo " ngcp-dlglist-clean $* " >> %s ; false ' % FAKE_CMD_LIST ,
)
res = executeAndReturnOutput ( self . command )
self . assertEqual ( res [ 0 ] , 0 , res [ 2 ] )
self . checkCmd ( os . path . join ( FIXTURES , ' koredis.cmd ' ) ,
FAKE_CMD_LIST )
self . checkCmd ( os . path . join ( FIXTURES , " koredis.cmd " ) , FAKE_CMD_LIST )
class TestDlgCntClean ( Test ) :
env = { " DLG_CONFIG " : os . path . join ( FIXTURES , " dlgcnt.lua.cfg " ) }
def setUp ( self ) :
self . command = copy . deepcopy ( command )
def test_wrong_option ( self ) :
self . command = [ " ./scripts/ngcp-dlgcnt-clean " ]
res = executeAndReturnOutput ( self . command )
self . assertEqual ( res [ 0 ] , 1 , res [ 2 ] )
self . assertRegex ( res [ 2 ] , " missing argument ' callid ' " )
self . checkNotCmd ( )
def test_config_defaults_c ( self ) :
self . command = [ " ./scripts/ngcp-dlgcnt-clean " , " -c " , " fake " ]
res = executeAndReturnOutput ( self . command )
self . assertRegex ( res [ 2 ] , " using defaults " )
self . assertEqual ( res [ 0 ] , 0 , res [ 2 ] )
self . assertRegex ( res [ 1 ] , " ^4 \n " )
self . checkNotCmd ( )
def test_config_defaults_C ( self ) :
self . command = [ " ./scripts/ngcp-dlgcnt-clean " , " -C " , " fake " ]
res = executeAndReturnOutput ( self . command )
self . assertRegex ( res [ 2 ] , " using defaults " )
self . assertEqual ( res [ 0 ] , 0 , res [ 2 ] )
self . assertRegex ( res [ 1 ] , " ^127.0.0.1 \n " )
self . checkNotCmd ( )
def test_config_c ( self ) :
self . command = [ " ./scripts/ngcp-dlgcnt-clean " , " -c " , " fake " ]
res = executeAndReturnOutput ( self . command , self . env )
self . assertNotRegex ( res [ 2 ] , " using defaults " )
self . assertEqual ( res [ 0 ] , 0 , res [ 2 ] )
self . assertRegex ( res [ 1 ] , " ^4 \n " )
self . checkNotCmd ( )
def test_config_C ( self ) :
self . command = [ " ./scripts/ngcp-dlgcnt-clean " , " -C " , " fake " ]
res = executeAndReturnOutput ( self . command , self . env )
self . assertNotRegex ( res [ 2 ] , " using defaults " )
self . assertEqual ( res [ 0 ] , 0 , res [ 2 ] )
self . assertRegex ( res [ 1 ] , " ^127.2.0.1 \n " )
self . checkNotCmd ( )
if __name__ == ' __main__ ' :
if __name__ == " __main__ " :
unittest . main (
# these make sure that some options that are not applicable
# remain hidden from the help menu.
failfast = False , buffer = False , catchbreak = False )
failfast = False ,
buffer = False ,
catchbreak = False ,
)