lib_shmm.exp
#==================================================#proc : ShMM#==================================================proc shmm_ssh_login {} { global error_message Con_server_prompt sendU_log console_server_ip shmm_prompt shmm_ip dut_linux_user #spawn ssh $dut_linux_user@$shmm_ip send -s "\r" send -s "ssh $dut_linux_user@$shmm_ip\r" expect { "*login*" { send "$dut_linux_user\r" ; exp_continue} -ex "(yes/no)?" { send "yes\r"; exp_continue} "*?assword:" { send "\r" ; exp_continue} "$shmm_prompt" { sendU_log "$shmm_prompt Shmm_ssh_login : pass\n"} default {append error_message "Shmm_ssh_login : fail\n" ; exit} }}proc shmm_ssh_logout {} { global error_message sendU_log Con_server_prompt console_server_ip shmm_ip shmm_prompt puts "\nrunning proc shmm_ssh_logout {}" send -s "exit\r" expect { "Connection to $shmm_ip closed" {sendU_log "Shmm_ssh_logout : pass\n"} default { sendU_log "Shmm_ssh_logout : fail\n";append error_message "Shmm_ssh_logout : fail\n"} }}proc Shmm_ssh_login {} { global error_message Con_server_prompt sendU_log console_server_ip shmm_prompt shmm_ip puts "\nrunning proc Shmm_ssh_login {}" expect { $Con_server_prompt { send -s "ssh root@$shmm_ip\r" expect { "*login*" { send "$dut_linux_user\r" ; exp_continue} -ex "(yes/no)?" { send "yes\r"; exp_continue} "*?assword:" { send "\r" ; exp_continue} "$shmm_prompt" { sendU_log "$shmm_prompt Shmm_ssh_login : pass\n"} default {append error_message "Shmm_ssh_login : fail\n" ; exit} } sleep_sec 1 } }}proc Shmm_ssh_logout {} { global error_message sendU_log Con_server_prompt console_server_ip shmm_ip shmm_prompt puts "\nrunning proc Shmm_ssh_logout {}" expect { $shmm_prompt { send -s "exit\r" expect { "Connection to $shmm_ip closed" {sendU_log "Shmm_ssh_logout : pass\n"} default { sendU_log "Shmm_ssh_logout : fail\n";append error_message "Shmm_ssh_logout : fail\n"} } send -s "\r" expect { "$Con_server_prompt" { sendU_log "$shmm_prompt Shmm_ssh_logout : pass\n"} default {append error_message "Shmm_ssh_logout : fail\n" ; exit} } sleep_sec 1 } }}proc Shmm_send {{sub_function *} {expected_result *}} { global error_message sendU_log Con_server_prompt console_server_ip shmm_ip shmm_prompt puts "\nrunning proc Shmm_send { sub_function = $sub_function}" #set result {} #send -s "\r" expect { $shmm_prompt { send -s "$sub_function\r" sleep_sec 3 #send -s "\r" expect { "$expected_result" {sendU_log "Shmm_send expected_result = $expected_result : pass\n"} default { sendU_log "Shmm_send expected_result = $expected_result : fail\n";append error_message "Shmm_send expected_result = $expected_result : fail\n"} } sleep_sec 1 } }} proc Shmm_hpi_shell_login {} { global error_message sendU_log Con_server_prompt console_server_ip shmm_ip shmm_prompt hpi_prompt #set result {} send -s "\r" expect { $shmm_prompt { send -s "hpi_shell\r" sleep_sec 3 expect { NO_RESPONSE { sleep 20 ; send "hpi_shell\r" ; exp_continue} $hpi_prompt {sendU_log "Shmm_hpi_shell_login : pass\n"} #"$expected_result" {sendU_log "Shmm_send expected_result = $expected_result : pass\n"; set result pass} default { sendU_log "Shmm_hpi_shell_login : fail\n";append error_message "Shmm_hpi_shell_login : fail\n"} return fail } sleep_sec 1 } }} proc Shmm_expectout {{sub_function *} {reg *} {expected_result *} {failexit 0} {sub_test_case default_none} } { global error_message sendU_log DUT_prompt BMC_ip BMC_user BMC_pw Con_server_prompt expectout shmm_prompt puts "\nrunning proc Shmm_expectout {}" expect { $shmm_prompt { if { $sub_function != "" } { ###### improve sub_test_case info 20161217 send_user "\n***** sub_test_case info : $sub_test_case *****\n" send -s "$sub_function\r" expect { -re "$reg" {set expectout $expect_out(0,string);send -s "\r"} #-re "\r\n(.*)$shmm_prompt" {set expectout $expect_out(0,string);send -s "\r"} } if {[string match $expected_result $expectout ]==1} { sendU_log "\nstring match ($expected_result) : pass\n" send_user "error_message = $error_message" } else { sendU_log "\nstring match ($expected_result) : fail\n";append error_message "\nstring match : fail\n" send_user "error_message = $error_message" puts "expected_result = $expected_result" puts "expectout = $expectout" if { $failexit == 1} { exit } } } else { send_user "please provide sub-function for testing" } } }}proc Shmm_hpi_shell_expectout {{check_id 1} {sub_function *} {reg *} {expected_result *} {sub_test_case default_none} } { global error_message sendU_log DUT_prompt BMC_ip BMC_user BMC_pw Con_server_prompt expectout ipmb_addr shmm_ip puts "\nrunning proc Shmm_hpi_shell_expectout {}" #puts "check_id = $check_id" #set a $DUT_prompt #puts $DUT_prompt #puts "a = $a" expect { hpi_shell> { switch -exact $check_id { 1 { if { $sub_function != "" } { ###### improve sub_test_case info 20161217 send_user "\n***** sub_test_case info : $sub_test_case *****\n" send -s "$sub_function\r" expect { -re "$reg" {set expectout $expect_out(0,string);send -s "\r"} } if {[string match $expected_result $expectout ]==1} { sendU_log "\nstring match ($expected_result) : pass\n" send_user "error_message = $error_message" } else { sendU_log "\nstring match ($expected_result) : fail\n";append error_message "\nstring match : fail\n" send_user "error_message = $error_message" puts "expected_result = $expected_result" puts "expectout = $expectout" exit } } else { send_user "please provide sub-function for testing" } } 2 { send -s "\x1d" expect { "telnet>" {send -s "q\r";sendU_log "logout DUT : pass\n"} } sleep_sec 3 if { $sub_function != "" } { ###### improve sub_test_case info 20161217 send_user "\n***** sub_test_case info : $sub_test_case *****\n" send -s "ipmitool -I lan -H $BMC_ip -U $BMC_user -P $BMC_pw $sub_function\r" expect { -re "ipmitool(.*)$Con_server_prompt" {set expectout $expect_out(0,string);send -s "\r"} } if {[string match $expected_result $expectout ]==1} { sendU_log "\nstring match ($expected_result) : pass\n" send_user "error_message = $error_message" } else { sendU_log "\nstring match ($expected_result) : fail\n";append error_message "\nstring match : fail\n" send_user "error_message = $error_message" } } else { send_user "please provide sub-function for testing" } DUT_login } default {puts "do nothing!";} } } }}proc Shmm_telnet_login {} { global error_message Con_server_prompt sendU_log shmm_ip shmm_port puts "\nrunning proc Shmm_telnet_login {}" expect { $Con_server_prompt { send -s "telnet 0 $shmm_port\r" send -s "\r" expect { $ {sendU_log "login Shelfmanager : pass\n"} default { sendU_log "login Shelfmanager : fail\n";append error_message "login Shelfmanager : fail\n"} } } }}proc Shmm_telnet_logout {} { global error_message sendU_log puts "\nrunning proc Shmm_telnet_logout {}" expect { $ { send -s "\x1d" expect { "telnet>" {send -s "q\r\r";sendU_log "logout Shelfmanager : pass\n"} } } }}proc Shmm_check_board {} { global error_message sendU_log slot_num puts "\nrunning proc Shmm_check_board {}" send -s "\r" expect { -ex "(yes/no)?" { send "yes\r"; exp_continue} "*?assword:" { send "\r" ; exp_continue} "*login*" { send "root\r" ; exp_continue} $ { sendU_log "enter Shelfmanager success\n"} default {append error_message "enter Shelfmanager : fail\n" ; exit} } expect { $ { send -s "clia board $slot_num\r" sleep_sec 3 expect { "*Hot Swap State: M4 (Active)*" {sendU_log "shelf check board $slot_num : pass\n"} default {sendU_log "shelf check board $slot_num : fail\n";append error_message "shelf check board $slot_num : fail\n"} } } }}proc DUT_IPMB_address_check {} { global error_message sendU_log DUT_prompt card_slot puts "\nrunning proc DUT_IPMB_address_check {}" expect { -ex "(yes/no)?" { send "yes\r"; exp_continue} "*?assword:" { send "qwerty\r" ; exp_continue} "*login*" { send "root\r" ; exp_continue} $DUT_prompt { sendU_log "login DUT : pass\n"} default {append error_message "login DUT : fail\n" ; exit} } expect { $DUT_prompt { sleep_sec 2 send -s "ipmitool picmg addrinfo\r" sleep_sec 3 expect { "*IPMB-0 Address : $card_slot*" {sendU_log "IPMB Address: $card_slot correct : pass\n"} default { sendU_log "IPMB Address: $card_slot incorrect : fail\n";append error_message "IPMB Address: $card_slot incorrect : fail\n" ; exit} } } }}