[LTP] [PATCH] ssh-stress: Convert to new api

Joerg Vehlow lkml@jv-coder.de
Mon Jun 14 11:42:19 CEST 2021


Hi,

I will send a v2 with the changes commented here.

On 6/14/2021 9:14 AM, Petr Vorel wrote:
> Hi Joerg,
>
> [ Cc Alexey ]
>> From: Joerg Vehlow <joerg.vehlow@aox-tech.de>
>> Apart from pure conversion:
>>   - Use "StrictModes no" in ssh config, to get rid of
>>     access permission problems; All part of the path of the
>>     authorized_keys file must not be writeable by anyone but the owner.
>>     This allows writing the file to the default temp directory
>>   - Moved all rhost scripts into ssh-stress.sh
> +1
>
> Nice work, LGTM, few small notes (could be fixed before merge).
> Reviewed-by: Petr Vorel <pvorel@suse.cz>
>
> Out of curiosity, did you test this on Two Host Configuration [2] (i.e. ssh)?
> Or just netns?
No, but should have...
I found two major problems with the test (will send a v2). But apart 
from that, either I was not able to find the documentation or it is not 
clear enough to me, how to run the two host setup.
I found network/README.md, but it only mentions to set RHOST, but for my 
setup (with ips different from the default ones, IPV{4,6}_{L,R}HOST is 
also required) and ltp must already be in the PATH on rhost, which was 
not possible for my rhost setup, where the filesystem is read-only and I 
had to hack setting the path into tst_rhost_run. It is not totally 
clear, that ltp in path is required to be set for the rhost ssh account 
(although it is hinted).
>
>>   cleanup()
>>   {
>> +	local pids
> Here needs to be pid as well.
done for v2
>> -	check_icmpv${TST_IPVER}_connectivity $(tst_iface) $(tst_ipaddr rhost) || \
>> -		tst_brkm TBROK "Failed to ping to $(tst_ipaddr rhost)"
>> +	check_icmpv${TST_IPVER}_connectivity $(tst_iface) $(tst_ipaddr rhost) \
>> +		|| tst_brk TBROK "Failed to ping $(tst_ipaddr rhost)"
> Anything from testcases/network/stress/ns-tools/ is deprecated,
> including check_icmpv{4,6}_connectivity. But this can be safely removed.
> Although I don't see any connectivity check in tst_net.sh, it should be handled
> there. IMHO it's needed at least for for two host based configuration, but it does not harm to test also netns based setup, thus somewhere after init_ltp_netspace.
There is tst_ping in tst_net.sh. Without arguments, it just tests 
connectivity to rhost.
Nevertheless, this is kind of useless in setup here. Other network tests 
do not check availability before execution, so I just dropped it for v2.
+1 on adding it to tst_net.sh initialization
>
>> -test01()
>> +test_ssh_connectivity()
>>   {
>> -	tst_resm TINFO "Creating '$CONNECTION_TOTAL' ssh sessions"
>> -
>> -	tst_rhost_run -s -c "ssh-stress01-rmt.sh $TST_IPVER $(tst_ipaddr) \
>> -		$rconfig $CONNECTION_TOTAL"
>> -
>> -	tst_resm TPASS "Test is finished successfully"
>> +	tst_rhost_run -c "$RHOST_SSH 'true >/dev/null 2>&1' >/dev/null"
>> +	[ $? -ne 0 ] && tst_res TFAIL "SSH not reachable"
> I guess you removed -s (security), to get more descriptive error.
> But then you IMHO need to use tst_brk to quit the test.
> Or if it was deliberate to keep other tests running, then test1
> would print TPASS "Test finished successfully" even it fails due this.
Right, this should be tst_brk and yes I did it without -s, to add a 
better error message.
There is no way the other subtests could pass, if the sshd started in 
setup is not reachable anymore, so no point in trying to continue.
Fixed for v2
>
>> -	tst_resm TPASS "Test is finished successfully"
>> +	test_ssh_connectivity
>> +
>> +	RHOST_PIDS=
>> +	num=0
>> +	while [ $num -lt $CONNECTION_TOTAL ]; do
>> +		pid=$(tst_rhost_run -c "$RHOST_SSH -N </dev/null 1>/dev/null 2>&1 \
>> +			& \echo \$!")
\echo is obviously wrong here. I messed this up while formatting the file...
> +			continue;
> nit: trailing ; unneeded (error from the original ssh-stress02-rmt.sh)
fixed for v2
>
>> +
>> +	tst_res TINFO "Waiting for all connections to terminate"
>> +	while [ -n "$RHOST_PIDS" ]; do
>> +		tst_sleep 1s
> nit: I'd be consistent with previous (1s vs. 1).
fixed for v2
>> -	tst_rhost_run -s -c "ssh-stress03-rmt.sh $TST_IPVER $(tst_ipaddr) \
>> -		$rconfig $port $NS_TIMES"
>> +	# Setup an ssh tunnel from the remote host to testhost
>> +	RHOST_PIDS=$(tst_rhost_run -c \
>> +		"$RHOST_SSH -N -L $lport:$rhost:$port </dev/null 1>/dev/null 2>&1 \
>> +		& echo \$!")
>> +	tst_sleep 1
>> -	tst_resm TPASS "Test is finished successfully"
>> -}
>> +	# Start the TCP traffic clients
>> +	tst_rhost_run -s -c "netstress -r $NS_TIMES -l -H $localhost -g $lport > /dev/null"
>> -setup
>> +	kill $RHOST_PIDS
This kills the ssh session setup on the remote host, so this must be 
executed on the remote host...

Jörg


More information about the ltp mailing list