mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-28 17:48:53 +00:00
f1b1dd26cf
Ideally, I'd like to disable expects's translation here, which does not work. The current setting is the result of testing all combinations.
101 lines
2.7 KiB
Plaintext
101 lines
2.7 KiB
Plaintext
##
|
|
# Get output of the target machine via Intel AMT's SoL feature
|
|
#
|
|
# \param --amt-host network address of target machine
|
|
# \param --amt-password AMT password for target machine
|
|
# \param --amt-filter Sanitize output by piping it through a filter
|
|
#
|
|
|
|
source [genode_dir]/tool/run/log.inc
|
|
source [genode_dir]/tool/run/amt.inc
|
|
|
|
|
|
proc log_amt_host { } {
|
|
return [get_cmd_arg_first --log-amt-host ""]
|
|
}
|
|
|
|
|
|
proc log_amt_password { } {
|
|
return [get_cmd_arg_first --log-amt-password ""]
|
|
}
|
|
|
|
proc log_amt_filter { } {
|
|
return [get_cmd_arg_first --log-amt-filter ""]
|
|
}
|
|
|
|
proc log_amt_timeout { } {
|
|
return [get_cmd_arg_first --log-amt-timeout "30"]
|
|
}
|
|
|
|
##
|
|
# Log output of the test machine using Intel's AMT
|
|
#
|
|
proc run_log { wait_for_re timeout_value } {
|
|
global output_spawn_id
|
|
|
|
if {![is_amt_available [log_amt_host] [log_amt_password]]} {
|
|
set exit_result 1
|
|
return false
|
|
}
|
|
|
|
set amt_tool [get_cmd_arg --amt-tool "wsman"]
|
|
|
|
# Check that SOL is correctly configured if wsman is available
|
|
if {[have_installed wsman] && $amt_tool=="wsman" } {
|
|
puts "Test for working AMT SOL redirection service ..."
|
|
set redir_state [exec wsman get http://intel.com/wbem/wscim/1/amt-schema/1/AMT_RedirectionService -h [log_amt_host] -P 16992 -u admin -p [log_amt_password]]
|
|
set redir_state [regexp -inline {ListenerEnabled.*ListenerEnabled} $redir_state]
|
|
|
|
if {![regexp {ListenerEnabled>true} $redir_state]} {
|
|
puts " Warning: AMT_RedirectionService listener is disabled - serial output will not be available"
|
|
puts " Use wsman to enable the listener service, e.g.:"
|
|
puts " wsman put http://intel.com/wbem/wscim/1/amt-schema/1/AMT_RedirectionService -h [log_amt_host] -P 16992 -u admin -p <your-intel-me-amt-password> -k ListenerEnabled=true"
|
|
puts ""
|
|
}
|
|
} else {
|
|
puts " Warning: could not check AMT SOL redirection service because of missing wsman tool, --amt-tool==$amt_tool"
|
|
}
|
|
|
|
#
|
|
# password via environment variable for amtterm will not show up in logs
|
|
#
|
|
set ::env(AMT_PASSWORD) [log_amt_password]
|
|
|
|
#
|
|
# grab output
|
|
#
|
|
set amt_cmd "amtterm -u admin -v [log_amt_host]"
|
|
if {[get_cmd_switch --log-amt-filter]} {
|
|
set amt_cmd "$amt_cmd | [log_amt_filter]"
|
|
}
|
|
|
|
if {$wait_for_re == "forever"} {
|
|
set timeout -1
|
|
} else {
|
|
set timeout [expr $timeout_value + [log_amt_timeout]]
|
|
}
|
|
set exit_result 1
|
|
|
|
spawn /bin/sh -c "$amt_cmd"
|
|
set output_spawn_id $spawn_id
|
|
fconfigure $output_spawn_id -translation { crlf lf }
|
|
|
|
set kernel_msg [run_boot_string]
|
|
|
|
expect {
|
|
-i $output_spawn_id $kernel_msg { }
|
|
eof {
|
|
puts stderr "Aborting, received EOF"
|
|
return false
|
|
}
|
|
timeout {
|
|
puts stderr "Boot process timed out"
|
|
close
|
|
return false
|
|
}
|
|
}
|
|
|
|
wait_for_output $wait_for_re $timeout_value $output_spawn_id
|
|
return true
|
|
}
|