@ -4,6 +4,7 @@ let
port = 1888 ;
tlsPort = 1889 ;
anonPort = 1890 ;
bindTestPort = 1891 ;
password = " V E R Y _ s e c r e t " ;
hashedPassword = " $ 7 $ 1 0 1 $ / W J c 4 M p + I + u Y E 9 s R $ o 7 z 9 r D 1 E Y X H P w E P 5 G q Q j 6 A 7 k 4 W 1 y V b e P l b 8 T q N c u O L V 9 W N C i D g w H O B 0 J H C 1 W C t d k s s q T B d u B N U n U G d 6 k m Z v D S w = = " ;
topic = " t e s t / f o o " ;
@ -125,6 +126,10 @@ in {
} ;
} ;
}
{
settings . bind_interface = " e t h 0 " ;
port = bindTestPort ;
}
] ;
} ;
} ;
@ -134,6 +139,8 @@ in {
} ;
testScript = ''
import json
def mosquitto_cmd ( binary , user , topic , port ) :
return (
" m o s q u i t t o _ { } "
@ -162,6 +169,27 @@ in {
start_all ( )
server . wait_for_unit ( " m o s q u i t t o . s e r v i c e " )
with subtest ( " b i n d _ i n t e r f a c e " ) :
addrs = dict ( )
for iface in json . loads ( server . succeed ( " i p - j s o n a d d r e s s s h o w " ) ) :
for addr in iface [ ' addr_info' ] :
# don't want to deal with multihoming here
assert addr [ ' local' ] not in addrs
addrs [ addr [ ' local' ] ] = ( iface [ ' ifname' ] , addr [ ' family' ] )
# mosquitto grabs *one* random address per type for bind_interface
( has4 , has6 ) = ( False , False )
for line in server . succeed ( " s s - H l p t n O s p o r t = ${ toString bindTestPort } " ) . splitlines ( ) :
items = line . split ( )
if " m o s q u i t t o " not in items [ 5 ] : continue
listener = items [ 3 ] . rsplit ( ' : ' , maxsplit = 1 ) [ 0 ] . strip ( ' [ ] ' )
assert listener in addrs
assert addrs [ listener ] [ 0 ] == " e t h 0 "
has4 | = addrs [ listener ] [ 1 ] == ' inet'
has6 | = addrs [ listener ] [ 1 ] == ' inet6'
assert has4
assert has6
with subtest ( " c h e c k p a s s w o r d s " ) :
client1 . succeed ( publish ( " - m t e s t " , " p a s s w o r d _ s t o r e " ) )
client1 . succeed ( publish ( " - m t e s t " , " p a s s w o r d _ f i l e " ) )