#!/bin/bash
# This script runs integration tests for gnuradio.
# Run it fron the enclosing directory.
export TEST_IMAGE_NAMES=()
export TEST_SCAN_BANDS=(P-GSM DCS1800 PCS1900 E-GSM R-GSM GSM450 GSM480 GSM850)
export TEMP_DIR=`mktemp -d`
cd ../../
export GR_SRC_DIR=`echo $PWD`

echo "Using source dir: $GR_SRC_DIR"
echo "Using destination dir: $TEMP_DIR"
cp -R $GR_SRC_DIR $TEMP_DIR

cd $TEMP_DIR/gr-gsm

export DOCKERFILE_LIST=($TEMP_DIR/gr-gsm/dockerfiles/*.docker)

for DOCKERFILE in ${DOCKERFILE_LIST[*]}
do
  cat $DOCKERFILE > Dockerfile
  export IMAGE_BASE=`echo $DOCKERFILE | \
  sed -e "s|$TEMP_DIR/gr-gsm/dockerfiles/||g" | \
  sed -e 's/\.docker//g'`
  export IMAGE_NAME=`echo $IMAGE_BASE | tr '[:upper:]' '[:lower:]'`
  echo "Attempt to build $IMAGE_NAME"
  docker build -t $IMAGE_NAME ./ && TEST_IMAGE_NAMES+=($IMAGE_NAME)
done


for BAND in ${TEST_SCAN_BANDS[*]}
do
  export SCAN_COMMAND="/usr/bin/python /usr/local/bin/airprobe_rtlsdr_scanner.py -b `echo $BAND` -v"
  for IMG in ${TEST_IMAGE_NAMES[*]}
  do
    echo "Now we test: $SCAN_COMMAND on $IMG"
    docker run -it --rm --privileged $IMG `echo $SCAN_COMMAND`
  done
done

cd $GR_SRC_DIR/build_test/scripts && rm -rf $TEMP_DIR
