diff --git a/defaults/main.yml b/defaults/main.yml index 3fcdcc7..1d639d7 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -195,11 +195,16 @@ siesta_psml_pps_src_archive: "{{ siesta_psml_pps_src }}.tar.gz" siesta_psml_pps_code_folder: "/tmp" siesta_psml_pps_url: "https://gitlab.com/garalb/psml-files/-/archive/{{ siesta_psml_pps_version }}/{{ siesta_psml_pps_src_archive }}" -# -# Tests. Just a few -# +# there is currently a bug that results in tests failing due to insignificant diffs +# https://bugs.launchpad.net/siesta/+bug/1725813 +# therefore by default we only test that the runs complete, and do not check them against the expected output +siesta_test_type: completed # check + +# Note: running all tests would take of the order of 1h + siesta_tests: - h2o +- h2o-psml - mno_ldau siesta_lua_tests: diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml index d6ab639..ed4d7bf 100644 --- a/molecule/default/converge.yml +++ b/molecule/default/converge.yml @@ -1,15 +1,5 @@ - name: Converge hosts: all - pre_tasks: - - name: Update apt cache. - apt: - update_cache: yes - cache_valid_time: 600 - when: ansible_os_family == 'Debian' - - vars: - run_tests: false - roles: - role: marvel-nccr.siesta diff --git a/tasks/main.yml b/tasks/main.yml index bbd9a3b..ddba6c3 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -8,6 +8,8 @@ - name: Install siesta dependencies become: true apt: + update_cache: true + cache_valid_time: 86400 name: - gfortran - make diff --git a/tasks/psml-pps.yml b/tasks/psml-pps.yml index 5ea1ad1..4554e58 100644 --- a/tasks/psml-pps.yml +++ b/tasks/psml-pps.yml @@ -36,3 +36,12 @@ mode: "0755" recurse: true when: psml_pps_extract.changed + +- name: Add release notes (pmsl) + include_role: + name: release_notes + vars: + section: "siesta" + option: "pps" + value: "PSML pseudopotentials have been downloaded to: {{ siesta_data_folder }}" + when: release_notes is defined and release_notes diff --git a/tasks/siesta-tests.yml b/tasks/siesta-tests.yml new file mode 100644 index 0000000..9e7dbe5 --- /dev/null +++ b/tasks/siesta-tests.yml @@ -0,0 +1,49 @@ +- name: Install siesta test dependencies + become: true + apt: + name: + - ssh + +- name: Set of tests + set_fact: + siesta_all_tests: "{{ siesta_tests }}" + +- name: Include Lua tests + set_fact: + siesta_all_tests: "{{ siesta_tests + siesta_lua_tests }}" + when: siesta_enable_flook | bool + +# Writing a file to indicate tests have passed ensures they are still run on re-runs of the role, +# if the tests failed on the previous run (in this case siesta_make may not have changed) + +- name: Remove test pass indicator + when: siesta_make.changed + file: + path: "{{ siesta_topdir }}/Obj/Tests/TESTS_PASSED" + state: absent + +- name: Read test pass indicator + stat: + path: "{{ siesta_topdir }}/Obj/Tests/TESTS_PASSED" + register: siesta_tests_passed + +# Use --oversubscribe in case there is only one core in the virtual machine... +# use --allow-run-as-root for when running in test docker +- name: Run siesta tests (type={{ siesta_test_type }}) + when: not siesta_tests_passed.stat.exists + shell: make clean; make MPI='mpirun --allow-run-as-root --oversubscribe -np {{ siesta_build_cpus }}' {{ siesta_test_type }} + args: + chdir: "{{ siesta_topdir }}/Obj/Tests/{{ item }}" + with_items: "{{ siesta_all_tests }}" + tags: tests + +- name: Write test pass indicator + file: + path: "{{ siesta_topdir }}/Obj/Tests/TESTS_PASSED" + state: touch + modification_time: preserve + access_time: preserve + +# fails (return code != 0), if "Test Failed." is found +# - name: check siesta test results +# command: grep -vFxq "Test Failed." "{{ siesta_topdir }}/build/Testing/Temporary/LastTest.log" diff --git a/tasks/siesta.yml b/tasks/siesta.yml index f569b98..3a0351c 100644 --- a/tasks/siesta.yml +++ b/tasks/siesta.yml @@ -33,16 +33,6 @@ creates: "{{ siesta_topdir }}/Obj/siesta" register: siesta_make -- import_tasks: tests.yml - -- name: Install siesta executable - become: true - copy: - src: "{{ siesta_topdir }}/Obj/siesta" - dest: "{{ siesta_prefix }}/bin" - remote_src: true - mode: '0755' - # This is needed to find the shared libs (notably libgridxc) - name: add dynamic library path config @@ -57,6 +47,17 @@ command: ldconfig when: ld_conf.changed +- import_tasks: siesta-tests.yml + when: run_tests is defined and run_tests + +- name: Install siesta executable + become: true + copy: + src: "{{ siesta_topdir }}/Obj/siesta" + dest: "{{ siesta_prefix }}/bin" + remote_src: true + mode: '0755' + - name: Add release notes (version) include_role: name: release_notes diff --git a/tasks/tests.yml b/tasks/tests.yml deleted file mode 100644 index 262512c..0000000 --- a/tasks/tests.yml +++ /dev/null @@ -1,33 +0,0 @@ -# running all tests would take of the order of 1h -# there is currently a bug that results in the test failing -# https://bugs.launchpad.net/siesta/+bug/1725813 - -# -# Use --oversubscribe in case there is only one core in the virtual machine... -# - -# -# Tests. Just a few -# - -- name: Set of tests - set_fact: - siesta_all_tests: "{{ siesta_tests }}" - -- name: Include Lua tests - set_fact: - siesta_all_tests: "{{ siesta_tests + siesta_lua_tests }}" - when: siesta_enable_flook | bool - -- name: run siesta tests - shell: make clean; make MPI='mpirun --oversubscribe -np {{ siesta_build_cpus }}' check - args: - chdir: "{{ siesta_topdir }}/Obj/Tests/{{ item }}" - with_items: "{{ siesta_all_tests }}" - tags: tests - when: siesta_make.changed and run_tests is defined and run_tests - - -# fails (return code != 0), if "Test Failed." is found -# - name: check siesta test results -# command: grep -vFxq "Test Failed." "{{ siesta_topdir }}/build/Testing/Temporary/LastTest.log"