1cd30c339dae692a3eb5c5fc55f70726457f4756bmridge#!/bin/sh
2cd30c339dae692a3eb5c5fc55f70726457f4756bmridge
3c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev# Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved.
4c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev# Copyright (c) International Business Machines  Corp., 2005
5cd30c339dae692a3eb5c5fc55f70726457f4756bmridge#
6c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev# This program is free software; you can redistribute it and/or
7c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev# modify it under the terms of the GNU General Public License as
8c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev# published by the Free Software Foundation; either version 2 of
9c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev# the License, or (at your option) any later version.
10cd30c339dae692a3eb5c5fc55f70726457f4756bmridge#
11c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev# This program is distributed in the hope that it would be useful,
12c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev# but WITHOUT ANY WARRANTY; without even the implied warranty of
13c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev# GNU General Public License for more details.
15cd30c339dae692a3eb5c5fc55f70726457f4756bmridge#
16c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev# You should have received a copy of the GNU General Public License
17c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev# along with this program; if not, write the Free Software Foundation,
18c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19cd30c339dae692a3eb5c5fc55f70726457f4756bmridge#
20c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev# Author: Mitsuru Chinen <mitch@jp.ibm.com>
21cd30c339dae692a3eb5c5fc55f70726457f4756bmridge#
22c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev
23c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey KodanevTCID="ssh_stress02_rmt"
24c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey KodanevTST_TOTAL=1
25c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev
26c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev. test.sh
27cd30c339dae692a3eb5c5fc55f70726457f4756bmridge
28cd30c339dae692a3eb5c5fc55f70726457f4756bmridge# Check the arguments
29cd30c339dae692a3eb5c5fc55f70726457f4756bmridgeif [ $# -ne 5 ]; then
30c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	tst_brkm TBROK "Usage: $0 ipver rhost config connections duration"
31cd30c339dae692a3eb5c5fc55f70726457f4756bmridgefi
32c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev
33cd30c339dae692a3eb5c5fc55f70726457f4756bmridgeip_ver="$1"
34cd30c339dae692a3eb5c5fc55f70726457f4756bmridgeserver_ipaddr="$2"
35cd30c339dae692a3eb5c5fc55f70726457f4756bmridgessh_config="$3"
36c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanevconnections="$4"
37cd30c339dae692a3eb5c5fc55f70726457f4756bmridgeduration="$5"
38cd30c339dae692a3eb5c5fc55f70726457f4756bmridge
39c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanevssh -$ip_ver -F $ssh_config $server_ipaddr \
40c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	"true < /dev/null > /dev/null 2>&1" > /dev/null
41c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev[ $? -ne 0 ] && tst_brkm TBROK "Failed to connect '$server_ipaddr'"
4237550cf5a86c7ca7424a2a318dd64e550f13f5dfChris Dearman
43c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanevstart_epoc=$(date +%s)
44cd30c339dae692a3eb5c5fc55f70726457f4756bmridgewhile true ; do
45c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	# Exit when the specified seconds have passed.
46c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	current_epoc=$(date +%s)
47c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	elapse_epoc=$(($current_epoc - $start_epoc))
48c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev
49c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	[ $elapse_epoc -ge $duration ] && break
50cd30c339dae692a3eb5c5fc55f70726457f4756bmridge
51c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	# Do not make ssh connection over the specified quantity
52c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	ssh_num=$(jobs | wc -l)
53c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	if [ $ssh_num -ge $connections ]; then
54c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev		sleep 1
55c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev		continue;
56c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	fi
57cd30c339dae692a3eb5c5fc55f70726457f4756bmridge
58c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	# specified wait time and login time
59c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	wait_sec=$(($(od -A n -d -N 1 /dev/random) * 3 / 255))
60c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	login_sec=$(($(od -A n -d -N 1 /dev/random) * 10 / 255))
61cd30c339dae692a3eb5c5fc55f70726457f4756bmridge
62c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	# Login to the server
63c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	(sleep $wait_sec ; ssh -$ip_ver -F $ssh_config -l root $server_ipaddr \
64c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev		"sleep $login_sec < /dev/null > /dev/null 2>&1") > \
65c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev		/dev/null 2>&1 &
66cd30c339dae692a3eb5c5fc55f70726457f4756bmridgedone
67cd30c339dae692a3eb5c5fc55f70726457f4756bmridge
68cd30c339dae692a3eb5c5fc55f70726457f4756bmridge# wait for the finish of all process
69cd30c339dae692a3eb5c5fc55f70726457f4756bmridgewait
70cd30c339dae692a3eb5c5fc55f70726457f4756bmridge
71cd30c339dae692a3eb5c5fc55f70726457f4756bmridge# Check the connectivity again
72c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanevssh -$ip_ver -F $ssh_config $server_ipaddr \
73c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev	"true < /dev/null > /dev/null 2>&1" > /dev/null
74c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanev[ $? -ne 0 ] && tst_brkm TBROK "Failed to connect '$server_ipaddr'"
75cd30c339dae692a3eb5c5fc55f70726457f4756bmridge
76c5d978a44e1b69374478e6fb4d909c11dfb43fa3Alexey Kodanevtst_exit
77