From 69cd705634864e80fd6fb3fd8559640e7e5b5eaa Mon Sep 17 00:00:00 2001 From: David Newswanger Date: Fri, 2 Feb 2018 16:04:19 -0500 Subject: [PATCH] Add vyos smoke integration tests. (#35456) * added preliminary vyos smoke tests * added comments, determined current tests are sufficient * add tests for check mode in module_utils.network.vyos * removed vyos_smoke from shippable * added comment explaining why AWS/Shippable tests won't work --- .../targets/vyos_smoke/defaults/main.yaml | 3 ++ .../targets/vyos_smoke/tasks/cli.yaml | 22 +++++++++ .../targets/vyos_smoke/tasks/main.yaml | 2 + .../vyos_smoke/tests/cli/common_config.yaml | 10 ++++ .../vyos_smoke/tests/cli/common_utils.yaml | 49 +++++++++++++++++++ .../vyos_smoke/tests/cli/misc_tests.yaml | 13 +++++ 6 files changed, 99 insertions(+) create mode 100644 test/integration/targets/vyos_smoke/defaults/main.yaml create mode 100644 test/integration/targets/vyos_smoke/tasks/cli.yaml create mode 100644 test/integration/targets/vyos_smoke/tasks/main.yaml create mode 100644 test/integration/targets/vyos_smoke/tests/cli/common_config.yaml create mode 100644 test/integration/targets/vyos_smoke/tests/cli/common_utils.yaml create mode 100644 test/integration/targets/vyos_smoke/tests/cli/misc_tests.yaml diff --git a/test/integration/targets/vyos_smoke/defaults/main.yaml b/test/integration/targets/vyos_smoke/defaults/main.yaml new file mode 100644 index 0000000000..9ef5ba5165 --- /dev/null +++ b/test/integration/targets/vyos_smoke/defaults/main.yaml @@ -0,0 +1,3 @@ +--- +testcase: "*" +test_items: [] diff --git a/test/integration/targets/vyos_smoke/tasks/cli.yaml b/test/integration/targets/vyos_smoke/tasks/cli.yaml new file mode 100644 index 0000000000..890d3acf3e --- /dev/null +++ b/test/integration/targets/vyos_smoke/tasks/cli.yaml @@ -0,0 +1,22 @@ +--- +- name: collect all cli test cases + find: + paths: "{{ role_path }}/tests/cli" + patterns: "{{ testcase }}.yaml" + register: test_cases + delegate_to: localhost + +- name: set test_items + set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + +- name: run test case (connection=network_cli) + include: "{{ test_case_to_run }} ansible_connection=network_cli" + with_items: "{{ test_items }}" + loop_control: + loop_var: test_case_to_run + +- name: run test case (connection=local) + include: "{{ test_case_to_run }} ansible_connection=local" + with_first_found: "{{ test_items }}" + loop_control: + loop_var: test_case_to_run diff --git a/test/integration/targets/vyos_smoke/tasks/main.yaml b/test/integration/targets/vyos_smoke/tasks/main.yaml new file mode 100644 index 0000000000..415c99d8b1 --- /dev/null +++ b/test/integration/targets/vyos_smoke/tasks/main.yaml @@ -0,0 +1,2 @@ +--- +- { include: cli.yaml, tags: ['cli'] } diff --git a/test/integration/targets/vyos_smoke/tests/cli/common_config.yaml b/test/integration/targets/vyos_smoke/tests/cli/common_config.yaml new file mode 100644 index 0000000000..bad66f57bc --- /dev/null +++ b/test/integration/targets/vyos_smoke/tests/cli/common_config.yaml @@ -0,0 +1,10 @@ +# vyos.py in plugins and module_utils/network covered by these as well +# hit NetworkConfig +- name: configure simple config command + vyos_config: + lines: set system host-name smoke + +- name: return host name to inventory_hostname + vyos_config: + lines: set system host-name {{ inventory_hostname_short }} + match: none diff --git a/test/integration/targets/vyos_smoke/tests/cli/common_utils.yaml b/test/integration/targets/vyos_smoke/tests/cli/common_utils.yaml new file mode 100644 index 0000000000..7dfbb41eec --- /dev/null +++ b/test/integration/targets/vyos_smoke/tests/cli/common_utils.yaml @@ -0,0 +1,49 @@ +# vyos.py in plugins and module_utils/network covered by these as well +# remove_default_spec() hit by multiple plays + +# hit ComplexList +- name: get output for single command + vyos_command: + commands: + - show version + register: result + +- assert: + that: + - result.changed == false + - result.stdout is defined + - result.stdout_lines is defined + +# hit conditional() - used for declarative intent +# Note, this can't be run on AWS because fully testing the vyos_interface dependencies +# requires the ability to create and remove interfaces other than eth0 +- name: enable eth1 + vyos_interface: + name: eth1 + enabled: True + state: present + register: result + +- name: Check intent arguments + vyos_interface: + name: eth1 + state: up + register: result + +- name: Check intent arguments (failed condition) + vyos_interface: + name: eth1 + state: down + ignore_errors: yes + register: result + +- assert: + that: + - "result.failed == true" + - "'state eq(down)' in result.failed_conditions" + +- name: Config + intent + vyos_interface: + name: eth1 + enabled: False + state: down diff --git a/test/integration/targets/vyos_smoke/tests/cli/misc_tests.yaml b/test/integration/targets/vyos_smoke/tests/cli/misc_tests.yaml new file mode 100644 index 0000000000..a56d057cca --- /dev/null +++ b/test/integration/targets/vyos_smoke/tests/cli/misc_tests.yaml @@ -0,0 +1,13 @@ +# hit check conditional in module_utils.network.vyos -> load_config() +- name: configure simple config command + vyos_config: + lines: set system host-name check-test + check_mode: yes + +- name: get host name + vyos_command: + commands: show host name + register: result + +- assert: + that: '"check-test" not in result.stdout'