[tripleo_transfer] Add more thorough testing
In this patch we add some tests to verify that the correct files are copied over, are exactly the same and the files in the destination are removed. Change-Id: I1dd246badb8d7d00abfb72cf7451856bf49263cc
This commit is contained in:
parent
d7730980c9
commit
a025bfec8f
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
# Copyright 2019 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
- name: Cleanup
|
||||
hosts: localhost
|
||||
connection: local
|
||||
gather_facts: false
|
||||
any_errors_fatal: true
|
||||
tasks:
|
||||
- name: Remove test files
|
||||
file:
|
||||
state: absent
|
||||
path: "{{ item }}"
|
||||
loop:
|
||||
- "{{ test_src_dir }}"
|
||||
- "{{ test_dst_dir }}"
|
|
@ -27,9 +27,39 @@
|
|||
hosts: localhost
|
||||
connection: local
|
||||
any_errors_fatal: true
|
||||
roles:
|
||||
- role: "tripleo_transfer"
|
||||
tasks:
|
||||
- name: Install openssl for file creation
|
||||
package:
|
||||
name: openssl
|
||||
state: present
|
||||
become: true
|
||||
|
||||
- name: Create test directories
|
||||
file:
|
||||
state: directory
|
||||
path: "{{ item }}"
|
||||
loop:
|
||||
- "{{ test_src_dir }}"
|
||||
- "{{ test_dst_dir }}"
|
||||
|
||||
- name: Create 1GB src test files with random content
|
||||
shell: >-
|
||||
openssl rand -out {{ item }} -base64 $(( 2**30 * 3/4 ))
|
||||
args:
|
||||
chdir: "{{ test_src_dir }}"
|
||||
creates: "{{ item }}"
|
||||
loop: "{{ test_src_files }}"
|
||||
|
||||
- name: Create empty dst test files with random content
|
||||
file:
|
||||
path: "{{ test_dst_dir }}/{{ item }}"
|
||||
state: touch
|
||||
loop: "{{ test_dst_files }}"
|
||||
|
||||
- include_role:
|
||||
name: "tripleo_transfer"
|
||||
vars:
|
||||
tripleo_transfer_src_host: controller2
|
||||
tripleo_transfer_src_dir: /etc
|
||||
tripleo_transfer_src_dir: "{{ test_src_dir }}"
|
||||
tripleo_transfer_dest_host: controller1
|
||||
tripleo_transfer_dest_dir: /opt/etc-target
|
||||
tripleo_transfer_dest_dir: "{{ test_dst_dir }}"
|
||||
|
|
|
@ -36,13 +36,27 @@ provisioner:
|
|||
ansible_host: 127.0.0.2
|
||||
controller2:
|
||||
ansible_host: 127.0.0.3
|
||||
vars:
|
||||
test_src_dir: "/tmp/src_files"
|
||||
test_src_files:
|
||||
- testfile1
|
||||
- testfile2
|
||||
- testfile3
|
||||
test_dst_dir: "/tmp/dst_files"
|
||||
test_dst_files:
|
||||
- testfile4
|
||||
- testfile5
|
||||
- testfile6
|
||||
log: true
|
||||
env:
|
||||
ANSIBLE_STDOUT_CALLBACK: yaml
|
||||
|
||||
scenario:
|
||||
test_sequence:
|
||||
- cleanup
|
||||
- converge
|
||||
- verify
|
||||
- cleanup
|
||||
|
||||
verifier:
|
||||
name: testinfra
|
||||
name: ansible
|
||||
|
|
|
@ -0,0 +1,47 @@
|
|||
---
|
||||
# Copyright 2019 Red Hat, Inc.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# 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.
|
||||
|
||||
- name: Verify
|
||||
hosts: localhost
|
||||
connection: local
|
||||
any_errors_fatal: true
|
||||
tasks:
|
||||
- name: Collect file system data
|
||||
find:
|
||||
paths:
|
||||
- "{{ test_src_dir }}"
|
||||
- "{{ test_dst_dir }}"
|
||||
get_checksum: true
|
||||
recurse: true
|
||||
register: _fs_data
|
||||
|
||||
- name: Verify that the src files copied to the dst
|
||||
assert:
|
||||
that:
|
||||
- _fs_data | json_query(srcfilequery) == _fs_data | json_query(dstfilequery)
|
||||
vars:
|
||||
srcfilequery: files[?path =='{{ test_src_dir }}/{{ item }}'].checksum
|
||||
dstfilequery: files[?path =='{{ test_dst_dir }}/{{ item }}'].checksum
|
||||
loop: "{{ test_src_files }}"
|
||||
|
||||
- set_fact:
|
||||
result_file_list: "{{ _fs_data | json_query('files[*].path') }}"
|
||||
test_dst_files: "{{ test_dst_files | map('regex_replace', '(.*)', test_dst_dir ~ '/\\1') }}"
|
||||
|
||||
- name: Verify that the dst file are not there any more
|
||||
assert:
|
||||
that:
|
||||
- test_dst_files is not subset(result_file_list)
|
Loading…
Reference in New Issue