#!/bin/sh
#
# Automated integration testing for the Named Data Networking Forwarding Daemon.
# Part of the Named Data Networking project <http://named-data.net>
#
# --
#
# Copyright (c) 2014-2015,  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@email.arizona.edu>

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

vagrant up

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

rm -Rf temp
