#!/bin/bash
# hpc-testing
# Copyright (C) 2025 SUSE LLC
# 
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# 
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

#########################
#
# Test functions for phase 0
#
#########################

get_package_list()
{
    PACKAGE_LIST=$(get_common_package_list $1)
    PACKAGE_LIST+="opensm"
    echo $PACKAGE_LIST
}

kill_opensm()
{
    local host=$1
    tp $host 'killall opensm || true; sleep 1; killall -9 opensm || true';
}

do_reset_all_ports()
{
    set +e
    for port_guid in $(ibstat -p); do
	ibportstate -G $port_guid reset
    done
    true
}
reset_all_ports()
{
    local host=$1

    tp_fun $host do_reset_all_ports
}

phase_0(){
    juLog_fatal -name=h1_setup_requirements "setup_requirements $HOST1"
    juLog_fatal -name=h2_setup_requirements "setup_requirements $HOST2"

    if [ $KMOD_RELOAD -eq 1 ]; then
        juLog_fatal -name=h1_reload_kmods "reload_kmods $HOST1"
        juLog_fatal -name=h2_reload_kmods "reload_kmods $HOST2"
    fi

    juLog -name=h1_kill_opensm "kill_opensm $HOST1"
    juLog -name=h2_kill_opensm "kill_opensm $HOST2"

    if [ $DO_MAD -eq 1 ]; then
	juLog -name=h1_reset_all_ports "reset_all_ports $HOST1"
	juLog -name=h2_reset_all_ports "reset_all_ports $HOST2"

	# We need to sleep a little bit here to let the port reset
	sleep 5
    fi

    juLog -name=h1_firewall_down "firewall_down $HOST1"
    juLog -name=h2_firewall_down "firewall_down $HOST2"

}
