From 79e285916252d77c5b6c8ac52798a47efb38a9c9 Mon Sep 17 00:00:00 2001
From: David Moreau-Simard <dms@redhat.com>
Date: Sun, 17 Sep 2017 11:15:17 -0400
Subject: [PATCH] Add integration tests for multi-node-bridge role

Change-Id: I1cf7d5de19b3426a9577b4ecbc3538813a16dfc7
---
 tests/multi-node-bridge.yaml | 54 ++++++++++++++++++++++++++++++++++++
 tests/multinode.yaml         |  1 +
 zuul.d/jobs.yaml             |  1 +
 3 files changed, 56 insertions(+)
 create mode 100644 tests/multi-node-bridge.yaml

diff --git a/tests/multi-node-bridge.yaml b/tests/multi-node-bridge.yaml
new file mode 100644
index 00000000..d05d50f4
--- /dev/null
+++ b/tests/multi-node-bridge.yaml
@@ -0,0 +1,54 @@
+- name: Test the multi-node-bridge role
+  hosts:
+    - switch
+    - peers
+  roles:
+    - multi-node-bridge
+  post_tasks:
+    - become: yes
+      block:
+        - name: openvswitch should be installed
+          package:
+            name: "{{ ovs_package }}"
+            state: installed
+          register: ovs_installed
+
+        - name: openvswitch should be running
+          service:
+            name: "{{ ovs_service }}"
+            state: started
+            enabled: yes
+          register: ovs_running
+
+        - name: bridge should exist
+          openvswitch_bridge:
+            bridge: "{{ bridge_name }}"
+          register: ovs_bridge
+
+        - name: port should exist
+          command: ovs-vsctl show
+          changed_when: false
+          register: ovs_port
+
+        - name: switch should be reachable
+          command: ping -c 4 {{ bridge_address_prefix }}.{{ bridge_address_offset }}
+          changed_when: false
+          failed_when: false
+          register: ovs_ping_switch
+
+        - name: peer should be reachable
+          command: ping -c 4 {{ bridge_address_prefix }}.{{ bridge_address_offset + 1 }}
+          changed_when: false
+          failed_when: false
+          register: ovs_ping_peer
+
+        - name: assert test results
+          assert:
+            that:
+              - not ovs_installed | changed
+              - not ovs_running | changed
+              - not ovs_bridge | changed
+              - ovs_port.rc == 0
+              - "'Port \"br-infra_' in ovs_port.stdout"
+              - ovs_ping_switch.rc == 0
+              - ovs_ping_peer.rc == 0
diff --git a/tests/multinode.yaml b/tests/multinode.yaml
index 2a32ea28..5e42ad5a 100644
--- a/tests/multinode.yaml
+++ b/tests/multinode.yaml
@@ -9,3 +9,4 @@
 - include: multi-node-known-hosts.yaml
 - include: multi-node-hosts-file.yaml
 - include: multi-node-firewall.yaml
+- include: multi-node-bridge.yaml
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index f8e02f6d..4eab44b8 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -63,6 +63,7 @@
       - ^roles/configure-unbound/.*
       - ^roles/fetch-zuul-cloner/.*
       - ^roles/mirror-info/.*
+      - ^roles/multi-node-bridge/.*
       - ^roles/multi-node-firewall/.*
       - ^roles/multi-node-hosts-file/.*
       - ^roles/multi-node-known-hosts/.*