From 8af30796403d89baa82ce7144ec4fcb5f202ccbc Mon Sep 17 00:00:00 2001 From: Rick Elrod Date: Tue, 4 Aug 2020 12:52:38 -0500 Subject: [PATCH] Add intentional coverage for incidental_lvg (#71043) Change: - Add hardware_facts test target which manually sets up some LVM devices and tests facts against them. Test Plan: - New integration tests Tickets: - Refs #71041 and #71042 both of which I discovered during this Signed-off-by: Rick Elrod --- .../targets/hardware_facts/aliases | 3 + .../targets/hardware_facts/meta/main.yml | 2 + .../targets/hardware_facts/tasks/Linux.yml | 92 +++++++++++++++++++ .../targets/hardware_facts/tasks/main.yml | 2 + 4 files changed, 99 insertions(+) create mode 100644 test/integration/targets/hardware_facts/aliases create mode 100644 test/integration/targets/hardware_facts/meta/main.yml create mode 100644 test/integration/targets/hardware_facts/tasks/Linux.yml create mode 100644 test/integration/targets/hardware_facts/tasks/main.yml diff --git a/test/integration/targets/hardware_facts/aliases b/test/integration/targets/hardware_facts/aliases new file mode 100644 index 00000000000..e00c22c3a28 --- /dev/null +++ b/test/integration/targets/hardware_facts/aliases @@ -0,0 +1,3 @@ +destructive +needs/privileged +shippable/posix/group2 diff --git a/test/integration/targets/hardware_facts/meta/main.yml b/test/integration/targets/hardware_facts/meta/main.yml new file mode 100644 index 00000000000..1810d4bec98 --- /dev/null +++ b/test/integration/targets/hardware_facts/meta/main.yml @@ -0,0 +1,2 @@ +dependencies: + - setup_remote_tmp_dir diff --git a/test/integration/targets/hardware_facts/tasks/Linux.yml b/test/integration/targets/hardware_facts/tasks/Linux.yml new file mode 100644 index 00000000000..885aa0ec930 --- /dev/null +++ b/test/integration/targets/hardware_facts/tasks/Linux.yml @@ -0,0 +1,92 @@ +- name: Test LVM facts + block: + - name: Install lvm2 + package: + name: lvm2 + state: present + register: lvm_pkg + + - name: Create files to use as a disk devices + command: "dd if=/dev/zero of={{ remote_tmp_dir }}/img{{ item }} bs=1M count=10" + with_sequence: 'count=2' + + - name: Create loop device for file + command: "losetup --show -f {{ remote_tmp_dir }}/img{{ item }}" + with_sequence: 'count=2' + register: loop_devices + + - name: Get loop names + set_fact: + loop_device1: "{{ loop_devices.results[0].stdout }}" + loop_device2: "{{ loop_devices.results[1].stdout }}" + + - name: Create pvs + command: pvcreate {{ item }} + with_items: + - "{{ loop_device1 }}" + - "{{ loop_device2 }}" + + - name: Create vg + command: vgcreate first {{ loop_device1 }} + + - name: Create another vg + command: vgcreate second {{ loop_device2 }} + + - name: Create lv + command: lvcreate -L 4M first --name one + + - name: Create another lv + command: lvcreate -L 4M first --name two + + - name: Create yet another lv + command: lvcreate -L 4M second --name uno + + - name: Gather facts + setup: + + - assert: + that: + - ansible_lvm.pvs[loop_device1].vg == 'first' + - ansible_lvm.pvs[loop_device2].vg == 'second' + - ansible_lvm.lvs.one.vg == 'first' + - ansible_lvm.lvs.two.vg == 'first' + - ansible_lvm.lvs.uno.vg == 'second' + - ansible_lvm.vgs.first.num_lvs == "2" + - ansible_lvm.vgs.second.num_lvs == "1" + + always: + - name: remove lvs + shell: "lvremove /dev/{{ item }}/* -f" + with_items: + - first + - second + + - name: remove vgs + command: "vgremove {{ item }}" + with_items: + - first + - second + + - name: remove pvs + command: "pvremove {{ item }}" + with_items: + - "{{ loop_device1 }}" + - "{{ loop_device2 }}" + + - name: Detach loop device + command: "losetup -d {{ item }}" + with_items: + - "{{ loop_device1 }}" + - "{{ loop_device2 }}" + + - name: Remove device files + file: + path: "{{ remote_tmp_dir }}/img{{ item }}" + state: absent + with_sequence: 'count={{ loop_devices.results|length }}' + + - name: Remove lvm-tools + package: + name: lvm2 + state: absent + when: lvm_pkg is changed diff --git a/test/integration/targets/hardware_facts/tasks/main.yml b/test/integration/targets/hardware_facts/tasks/main.yml new file mode 100644 index 00000000000..e7059c66c23 --- /dev/null +++ b/test/integration/targets/hardware_facts/tasks/main.yml @@ -0,0 +1,2 @@ +- include_tasks: Linux.yml + when: ansible_system == 'Linux'