From 76b235c6b3c688b26490e1e0f3091bdf9563f64d Mon Sep 17 00:00:00 2001 From: Minei3oat Date: Tue, 26 Jul 2022 17:59:52 +0200 Subject: [PATCH] Pacman: Improve url integrity test (#4968) * Fix typo * Host url package * Delete cached files * Add cases for cached url package * Rename file_pkg for clarification * Change port to 8080, as 80 is already used in pipeline * Added fragment * Change port to 8000, as 8080 is already used in pipeline * Fixed changelog fragment * Change port to 53280, as 8000 is already used in pipeline * Change port to 27617 (copied from get_url), as 53280 is already used in pipeline * Also download the signature of url package Co-authored-by: Jean Raby * Fix duplication errors Co-authored-by: Jean Raby * Copied waiting from get_url; applyed output redirection from jraby * Fix signature filename * Use correct cache dir * Add missing assertions for uninstall_1c * Fix typo * Delete changelog fragment * Make python server true async with 90 sec timeout Copied from ainsible.builtin.get_url Co-authored-by: Jean Raby --- .../targets/pacman/tasks/package_urls.yml | 110 ++++++++++++++++-- 1 file changed, 100 insertions(+), 10 deletions(-) diff --git a/tests/integration/targets/pacman/tasks/package_urls.yml b/tests/integration/targets/pacman/tasks/package_urls.yml index 4bb897b404..653657f1ec 100644 --- a/tests/integration/targets/pacman/tasks/package_urls.yml +++ b/tests/integration/targets/pacman/tasks/package_urls.yml @@ -1,9 +1,13 @@ --- - vars: + http_port: 27617 reg_pkg: ed url_pkg: lemon + url_pkg_filename: url.pkg.zst + url_pkg_path: '/tmp/' + url_pkg_url: 'http://localhost:{{http_port}}/{{url_pkg_filename}}' file_pkg: hdparm - file_pkg_path: /tmp/pkg.zst + file_pkg_path: /tmp/file.pkg.zst extra_pkg: core/sdparm extra_pkg_outfmt: sdparm block: @@ -15,11 +19,33 @@ - '{{file_pkg}}' - '{{extra_pkg}}' state: absent + - name: Make sure that url package is not cached + file: + path: '/var/cache/pacman/pkg/{{url_pkg_filename}}' + state: absent - name: Get URL for {{url_pkg}} command: cmd: pacman --sync --print-format "%l" {{url_pkg}} - register: url_pkg_url + register: url_pkg_stdout + - name: Download {{url_pkg}} pkg + get_url: + url: '{{url_pkg_stdout.stdout}}' + dest: '{{url_pkg_path}}/{{url_pkg_filename}}' + - name: Download {{url_pkg}} pkg sig + get_url: + url: '{{url_pkg_stdout.stdout}}.sig' + dest: '{{url_pkg_path}}/{{url_pkg_filename}}.sig' + - name: Host {{url_pkg}} + shell: + cmd: 'python -m http.server --directory {{url_pkg_path}} {{http_port}} >/dev/null 2>&1' + async: 90 + poll: 0 + - name: Wait for http.server to come up online + wait_for: + host: 'localhost' + port: '{{http_port}}' + state: started - name: Get URL for {{file_pkg}} command: @@ -34,26 +60,50 @@ pacman: name: - '{{reg_pkg}}' - - '{{url_pkg_url.stdout}}' + - '{{url_pkg_url}}' - '{{file_pkg_path}}' check_mode: True register: install_1 + - name: Install packages from url (check mode, cached) + pacman: + name: + - '{{url_pkg_url}}' + check_mode: True + register: install_1c + - name: Delete cached {{url_pkg}} + file: + path: '/var/cache/pacman/pkg/{{url_pkg_filename}}' + state: absent + - name: Install packages from mixed sources pacman: name: - '{{reg_pkg}}' - - '{{url_pkg_url.stdout}}' + - '{{url_pkg_url}}' - '{{file_pkg_path}}' register: install_2 + - name: Delete cached {{url_pkg}} + file: + path: '/var/cache/pacman/pkg/{{url_pkg_filename}}' + state: absent - name: Install packages from mixed sources - (idempotency) pacman: name: - '{{reg_pkg}}' - - '{{url_pkg_url.stdout}}' + - '{{url_pkg_url}}' - '{{file_pkg_path}}' register: install_3 + - name: Install packages from url - (idempotency, cached) + pacman: + name: + - '{{url_pkg_url}}' + register: install_3c + - name: Delete cached {{url_pkg}} + file: + path: '/var/cache/pacman/pkg/{{url_pkg_filename}}' + state: absent - name: Install packages with their regular names (idempotency) pacman: @@ -62,54 +112,89 @@ - '{{url_pkg}}' - '{{file_pkg}}' register: install_4 + - name: Delete cached {{url_pkg}} + file: + path: '/var/cache/pacman/pkg/{{url_pkg_filename}}' + state: absent - name: Install new package with already installed packages from mixed sources pacman: name: - '{{reg_pkg}}' - - '{{url_pkg_url.stdout}}' + - '{{url_pkg_url}}' - '{{file_pkg_path}}' - '{{extra_pkg}}' register: install_5 + - name: Delete cached {{url_pkg}} + file: + path: '/var/cache/pacman/pkg/{{url_pkg_filename}}' + state: absent - name: Uninstall packages - mixed sources (check mode) pacman: state: absent name: - '{{reg_pkg}}' - - '{{url_pkg_url.stdout}}' + - '{{url_pkg_url}}' - '{{file_pkg_path}}' check_mode: True register: uninstall_1 + - name: Uninstall packages - url (check mode, cached) + pacman: + state: absent + name: + - '{{url_pkg_url}}' + check_mode: True + register: uninstall_1c + - name: Delete cached {{url_pkg}} + file: + path: '/var/cache/pacman/pkg/{{url_pkg_filename}}' + state: absent - name: Uninstall packages - mixed sources pacman: state: absent name: - '{{reg_pkg}}' - - '{{url_pkg_url.stdout}}' + - '{{url_pkg_url}}' - '{{file_pkg_path}}' register: uninstall_2 + - name: Delete cached {{url_pkg}} + file: + path: '/var/cache/pacman/pkg/{{url_pkg_filename}}' + state: absent - name: Uninstall packages - mixed sources (idempotency) pacman: state: absent name: - '{{reg_pkg}}' - - '{{url_pkg_url.stdout}}' + - '{{url_pkg_url}}' - '{{file_pkg_path}}' register: uninstall_3 + - name: Uninstall package - url (idempotency, cached) + pacman: + state: absent + name: + - '{{url_pkg_url}}' + register: uninstall_3c + - assert: that: - install_1 is changed - install_1.msg == 'Would have installed 3 packages' - install_1.packages|sort() == [reg_pkg, url_pkg, file_pkg]|sort() + - install_1c is changed + - install_1c.msg == 'Would have installed 1 packages' + - install_1c.packages|sort() == [url_pkg] - install_2 is changed - install_2.msg == 'Installed 3 package(s)' - - install_1.packages|sort() == [reg_pkg, url_pkg, file_pkg]|sort() + - install_2.packages|sort() == [reg_pkg, url_pkg, file_pkg]|sort() - install_3 is not changed - install_3.msg == 'package(s) already installed' + - install_3c is not changed + - install_3c.msg == 'package(s) already installed' - install_4 is not changed - install_4.msg == 'package(s) already installed' - install_5 is changed @@ -118,8 +203,13 @@ - uninstall_1 is changed - uninstall_1.msg == 'Would have removed 3 packages' - uninstall_1.packages | length() == 3 # pkgs have versions here + - uninstall_1c is changed + - uninstall_1c.msg == 'Would have removed 1 packages' + - uninstall_1c.packages | length() == 1 # pkgs have versions here - uninstall_2 is changed - uninstall_2.msg == 'Removed 3 package(s)' - uninstall_2.packages | length() == 3 - uninstall_3 is not changed - uninstall_3.msg == 'package(s) already absent' + - uninstall_3c is not changed + - uninstall_3c.msg == 'package(s) already absent'