#!/bin/bash
#
# Automated integration testing for the Named Data Networking Forwarding Daemon.
# Part of the Named Data Networking project <http://named-data.net>
#
# --
#
# Copyright (c) 2014-2017,  Regents of the University of California,
#                           Arizona Board of Regents,
#                           Colorado State University,
#                           University Pierre & Marie Curie, Sorbonne University,
#                           Washington University in St. Louis,
#                           Beijing Institute of Technology,
#                           The University of Memphis.
#
# This file is part of NFD (Named Data Networking Forwarding Daemon).
# See AUTHORS.md for complete list of NFD authors and contributors.
#
# NFD 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.
#
# NFD 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
# NFD, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
#
# Author: Eric Newberry <enewberry@cs.arizona.edu>

mkdir -p logs/A logs/B logs/C logs/D
mkdir -p temp
ssh-keygen -t ecdsa -f temp/sshkey -q -N ""

vagrant up router

vagrant up template
vagrant ssh template -c "sudo apt-get clean"
vagrant package --output nfd-integ.box template
vagrant box remove nfd-integ
vagrant box add --name nfd-integ nfd-integ.box

vagrant up A
vagrant up B
vagrant up C
vagrant up D

vagrant ssh A -c "cd integration-tests && ./run_tests.py test_all 2>&1 | tee run.log"
vagrant ssh A -c "integration-tests/collect-logs.sh A"
vagrant ssh B -c "integration-tests/collect-logs.sh B"
vagrant ssh C -c "integration-tests/collect-logs.sh C"
vagrant ssh D -c "integration-tests/collect-logs.sh D"

vagrant destroy -f

vagrant box remove nfd-integ
rm -rf temp prepare
rm -f nfd-integ.box
