#!/bin/bash
#
# Simple VLANd test script

set -e

NAME="simple-NetgearXSM-1"

DESCRIPTION="Check VLAN isolation for 2 machines on the same switch"

# List all the switches and hosts we need to use, if not using all of
# them. We can make tests run faster by not involving *all* of them in
# every test.
HOSTS="imx5301 imx5302"     # Just 2 machines
SWITCHES="vlandswitch05"    # And we know which switch they're on

# Show more detail during test output
VERBOSE=0

# And give a filename for logging
LOGFILE=$0-$$.log

# Include the core test wrapper code that makes life easier
DIR=$(dirname $0)
. ${DIR}/test-common

# Ensure all the ports we're using are on their base VLANs
log "checking base VLANs"
verify_all_hosts_are_base
log "$HOSTS are all on their base VLANs - good"

# Clear old logfiles from our test machines
stop_logging
clear_logs

# Start all the test machines logging, then wait 60s to let all of
# them show baseline results before we start testing
start_logging
log "CHECK INIT START"
log "CHECK INIT CHECK VLAN_BASE:imx5301:imx5302"
pause 60
log "CHECK INIT END"

# Create a VLAN with tag 30, named "test30"
log "Creating new VLAN tag 30"
OUTPUT=$(run_admin_command create_vlan --name test30 --tag 30 --is_base_vlan false)
VLAN_ID=$(run_admin_command lookup_vlan_by_tag --tag 30)
log "Created new VLAN with ID $VLAN_ID"

# Wait 10s for everything to settle
pause 10

# Move some of the test machines to this new VLAN
log "Moving imx5301 to VLAN ID $VLAN_ID"
OUTPUT=$(run_admin_command set_port_current_vlan --port_id ${imx5301_PORT_ID} --vlan_id $VLAN_ID)

pause 60

log "Moving imx5302 to VLAN ID $VLAN_ID"
OUTPUT=$(run_admin_command set_port_current_vlan --port_id ${imx5302_PORT_ID} --vlan_id $VLAN_ID)
log "Done moving ports to VLAN ID $VLAN_ID"

# Wait 60s for everything to settle and logs to show it again
pause 60

log "CHECK STEP1 START"
log "CHECK STEP1 CHECK VLAN_30:imx5301:imx5302"
pause 60
log "CHECK STEP1 END"

# Move test machines back to their base VLANs
log "Moving ports back to base"
OUTPUT=$(run_admin_command restore_port_to_base_vlan --port_id ${imx5301_PORT_ID})
OUTPUT=$(run_admin_command restore_port_to_base_vlan --port_id ${imx5302_PORT_ID})
log "Done moving ports back to base"

# Wait 60s for everything to settle
pause 60

log "CHECK FINI START"
log "CHECK FINI CHECK VLAN_BASE:imx5301:imx5302"
pause 60
log "CHECK FINI END"

# Check that they're all back on their base VLANs
log "Checking base VLANs after the test"
verify_all_hosts_are_base

log "Delete the test VLAN"
OUTPUT=$(run_admin_command delete_vlan --vlan_id ${VLAN_ID})

# Stop all the test machines logging (and wait 60s)
stop_logging
pause 20

log "Test done, grab logs"
# Grab logs from the machines
grab_logs >> $LOGFILE

# Clear old logs
clear_logs

# How did the test do?
check_test_steps

# DONE!
