Monday, February 25, 2013

WebSphere launch commands utility for Linux Test Environment

Hi folk,

Right now, I'm working on a project where I have to do performance tests in J2EE applications with continually stopping and starting the application server.

I created a bash script based on a set of WAS command line for people with short memory, like me ;-)



I want to share the script that we use to facilitate our work. 

I hope this helps.
 
#!/bin/sh
# Launch Websphere Application Server - HTTPServer
# Jorge Iglesias

# Note: Launch with root permission
if [ "$(whoami)" != 'root' ]; then
    echo "You have no permission to run $0 as non-root user"
        exit 1;
fi

# Define variables
WAS_DMGR=dmgr
WAS_SERVER_NODE=nodeagent
WAS_SERVER=server1
PATH_WAS=/opt/IBM/WebSphere/AppServer
PATH_WAS_DMGR_PROFILE=${PATH_WAS}/profiles/Dmgr01
PATH_WAS_SERVER_PROFILE=${PATH_WAS}/profiles/AppSrv01
LOG_WAS_DMGR=${PATH_WAS_DMGR_PROFILE}/logs/$WAS_DMGR/SystemOut.log
LOG_WAS_SERVER_NODE=${PATH_WAS_SERVER_PROFILE}/logs/$WAS_SERVER_NODE/SystemOut.log
LOG_WAS_SERVER=${PATH_WAS_SERVER_PROFILE}/logs/$WAS_SERVER/SystemOut.log
WAS_USER=wasadmin
WAS_PWD=passw0rd
PATH_HTTPSERVER=/opt/IBM/HTTPServer

# Funciones
OpenLogFile ()
{
    # Check params:
    # LOG_FILE: log file
    # LOG_FILE_TITLE: log file title

    proc=$(xlsclients -a | grep SystemOut.log)

    if [ -z "${proc}" ]
    then
    {
        TAIL_FILE="tail -f ${LOG_FILE}"
        gnome-terminal --title "${LOG_FILE_TITLE}" -e "${TAIL_FILE}" &
    }
    fi
}

CloseLogFile ()
{
    proc=$(xlsclients -a | grep gnome-terminal | grep SystemOut.log)

    if [ ! -z "${proc}" ]
    then
    {
        kill -9 `ps -eaf | grep gnome-terminal | grep SystemOut.log | awk '{ print $2 }'`
    }
    fi
}

InitServer ()
{
    # Check params:
    # TMP_CMD: command to exec
    # TMP_FILE: pid file
  
    echo "Starting server: $TMP_FILE"

    # exists PID file?  
    if [ -f $TMP_FILE ]
    then
    {
        PID=`cat $TMP_FILE`
         echo "Server with PID:"$PID

            echo "Restart server (y/n)?"

        printf "> "
        read quest
        case $quest in
          y)
            StartServer;;
        Y)
            StartServer;;
        N)
            ;;
          n)
            ;;
        esac

    }
    else
    {
        StartServer
    }  
    fi
}

StartServer()
{
    # Start server
    # &, run background
    # $TMP_CMD &      
    $TMP_CMD      
  
    IS_STARTED=0
    while [ $IS_STARTED = 0 ]
    do {
        # wait one second
        sleep 1
        if [ -f $TMP_FILE ]
        then
        {
            IS_STARTED=1
        }
        else
        {
            IS_STARTED=0
        }
        fi
    }
    done
}

StopServer ()
{
    # Check params:
    # TMP_CMD: command to exec
    # TMP_FILE: pid file

    echo "Stoping server: $TMP_FILE"

    # exists PID file?  
    if [ -f $TMP_FILE ]
    then
    {
        # Stop server
        # &, run background
        # $TMP_CMD &      
        $TMP_CMD      
      
        IS_STARTED=0
        while [ $IS_STARTED = 0 ]
        do {
            # wait one second
            sleep 1

            if [ -f $TMP_FILE ]
            then
            {
                IS_STARTED=0
            }
            else
            {
                IS_STARTED=1
            }
            fi
        }
        done
    }
    else
    {
         echo "Server stopped."
    }  
    fi
}

SetStartDmgrParams ()
{
    LOG_FILE_TITLE="Fichero de trazas: $WAS_DMGR"
    LOG_FILE=$LOG_WAS_DMGR
    TMP_CMD=$PATH_WAS_DMGR_PROFILE/bin/startManager.sh
    TMP_FILE=$PATH_WAS_DMGR_PROFILE/logs/$WAS_DMGR/$WAS_DMGR.pid
}

SetStartAppSrvNodeParams ()
{
    LOG_FILE_TITLE="Fichero de trazas: $WAS_SERVER_NODE"
    LOG_FILE=$LOG_WAS_SERVER_NODE
    TMP_CMD=$PATH_WAS_SERVER_PROFILE/bin/startNode.sh
    TMP_FILE=$PATH_WAS_SERVER_PROFILE/logs/$WAS_SERVER_NODE/$WAS_SERVER_NODE.pid
}

SetStartAppSrvParams ()
{
    LOG_FILE_TITLE="Fichero de trazas: $WAS_SERVER"
    LOG_FILE=$LOG_WAS_SERVER
    TMP_CMD="$PATH_WAS_SERVER_PROFILE/bin/startServer.sh server1"
    TMP_FILE=$PATH_WAS_SERVER_PROFILE/logs/$WAS_SERVER/$WAS_SERVER.pid
}

SetStopDmgrParams ()
{
    LOG_FILE_TITLE="Fichero de trazas: $WAS_DMGR"
    LOG_FILE=$LOG_WAS_DMGR
    TMP_CMD="$PATH_WAS_DMGR_PROFILE/bin/stopManager.sh -username $WAS_USER -password $WAS_PWD"
    TMP_FILE=$PATH_WAS_DMGR_PROFILE/logs/$WAS_DMGR/$WAS_DMGR.pid
}

SetStopAppSrvNodeParams ()
{
    LOG_FILE_TITLE="Fichero de trazas: $WAS_SERVER_NODE"
    LOG_FILE=$LOG_WAS_SERVER_NODE
    TMP_CMD="$PATH_WAS_SERVER_PROFILE/bin/stopNode.sh -username $WAS_USER -password $WAS_PWD"
    TMP_FILE=$PATH_WAS_SERVER_PROFILE/logs/$WAS_SERVER_NODE/$WAS_SERVER_NODE.pid
}

SetStopAppSrvParams ()
{
    LOG_FILE_TITLE="Fichero de trazas: $WAS_SERVER"
    LOG_FILE=$LOG_WAS_SERVER
    TMP_CMD="$PATH_WAS_SERVER_PROFILE/bin/stopServer.sh $WAS_SERVER -username $WAS_USER -password $WAS_PWD"
    TMP_FILE=$PATH_WAS_SERVER_PROFILE/logs/$WAS_SERVER/$WAS_SERVER.pid
}

StartWebserver ()
{
    echo "Start HTTPServer"
    TMP_CMD="$PATH_HTTPSERVER/bin/apachectl -k start"
    $TMP_CMD
}

StopWebserver ()
{
    echo "Stop HTTPServer"
    TMP_CMD="$PATH_HTTPSERVER/bin/apachectl -k stop"
    $TMP_CMD
}

ExitProcess ()
{
    # TODO
    # Check StopServer

    # TODO
    # Check CloseLogFile
      
    exit 1;
}

ShowMenu ()
{  
    # clear  
    echo ""
    echo "-------------------------"
    echo "* Process - Launch WAS Menu"
    echo "1 - Start dmgr-nodeagent-server1-httpserver"
        echo "2 - Start dmgr"
        echo "3 - Start nodeagent"
        echo "4 - Start server1"
        echo "5 - Stop dmgr"
        echo "6 - Stop nodeaget"
        echo "7 - Stop server1"
    echo "8 - Stop httpserver-server1-nodeagent-dmgr"
    echo "-------------------------"
        echo "10 - Start HTTPServer"
        echo "11 - Stop HTTPServer"
    echo ""

        echo "99 - Exit"

    printf "> "
    read num
    case $num in
      1)
        SetStartDmgrParams;      
        OpenLogFile;
         InitServer;

        SetStartAppSrvNodeParams;
        OpenLogFile;
         InitServer;

        SetStartAppSrvParams;
        OpenLogFile;
         InitServer;

         StartWebserver;;
    2)
        SetStartDmgrParams;      
        OpenLogFile;
         InitServer;;
    3)
        SetStartAppSrvNodeParams;
        OpenLogFile;
         InitServer;;
    4)
        SetStartAppSrvParams;
        OpenLogFile;
         InitServer;;
    5)
        SetStopDmgrParams;      
        CloseLogFile;
        StopServer;;
    6)
        SetStopAppSrvNodeParams;
        CloseLogFile;
        StopServer;;
    7)
        SetStopAppSrvParams;
        OpenLogFile;
         StopServer;;
    8)
         StopWebserver;

        SetStopAppSrvParams;
        CloseLogFile;
        StopServer;

        SetStopAppSrvNodeParams;
        CloseLogFile;
        StopServer;

        SetStopDmgrParams;      
        CloseLogFile;
        StopServer;;
    10)
         StartWebserver;;
    11)
         StopWebserver;;
      99)
        ExitProcess;;
    esac
  
    # back to menu
    ShowMenu
}

ShowMenu