
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


---
- hosts: all
  sudo: True
  tasks:
    - name: Run fabric tests using cord-tester
      become: yes
      shell: "{{ item }}"
      args:
        chdir: "/home/{{ ansible_user }}/cord-tester/src/test/setup"
      with_items:
        - ./cord-test.py run -e onos-fabric/onos-fabric --no-switch --prefix=docker-registry:5000 -t fabric
        #- ./cord-test.py run --prefix=docker-registry:5000 --onos=docker-registry:5000/onosproject/onos:candidate --olt --start-switch -t cordSubscriber:subscriber_exchange.cord_test_subscriber_join_jump
        - ./cord-test.py cleanup --olt --prefix=docker-registry:5000 --onos=docker-registry:5000/onosproject/onos:candidate
        - docker kill cord-onos 2>/dev/null || true
        - docker kill cord-radius 2>/dev/null || true
