#!/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-2018,  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 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 router A B C 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
