From 6b8f183066d3450cbf61adc40d99ae0eb5dc5641 Mon Sep 17 00:00:00 2001 From: jo Date: Sun, 7 Jan 2024 13:38:26 +0100 Subject: [PATCH 1/2] test: replace testinfra with ansible --- molecule/default/molecule.yml | 2 +- molecule/default/test/test_default.py | 31 --------------- molecule/default/verify.yml | 56 +++++++++++++++++++++++++++ requirements.txt | 2 - 4 files changed, 57 insertions(+), 34 deletions(-) delete mode 100644 molecule/default/test/test_default.py create mode 100644 molecule/default/verify.yml diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml index e9c5390..02b2165 100644 --- a/molecule/default/molecule.yml +++ b/molecule/default/molecule.yml @@ -42,4 +42,4 @@ provisioner: libretime_systemd_hardening: false verifier: - name: testinfra + name: ansible diff --git a/molecule/default/test/test_default.py b/molecule/default/test/test_default.py deleted file mode 100644 index 0c72f1c..0000000 --- a/molecule/default/test/test_default.py +++ /dev/null @@ -1,31 +0,0 @@ -import os -import pytest -from testinfra.utils.ansible_runner import AnsibleRunner - -testinfra_hosts = AnsibleRunner(os.environ["MOLECULE_INVENTORY_FILE"]).get_hosts("all") - - -def test_is_listening_on_required_port(host): - assert host.socket("tcp://0.0.0.0:8888").is_listening - - -@pytest.mark.parametrize( - "service_name", - [ - "libretime-analyzer", - "libretime-api", - "libretime-playout", - "libretime-liquidsoap", - "libretime-worker", - ], -) -def test_services_are_enabled_and_running(host, service_name): - assert host.service(service_name).is_running - assert host.service(service_name).is_enabled - - -def test_config_is_deployed(host): - config = host.file("/etc/libretime/config.yml") - assert config.user == "libretime" - assert config.group == "libretime" - assert config.mode == 0o640 diff --git a/molecule/default/verify.yml b/molecule/default/verify.yml new file mode 100644 index 0000000..f667c1a --- /dev/null +++ b/molecule/default/verify.yml @@ -0,0 +1,56 @@ +--- +- name: Verify + hosts: all + gather_facts: true + become: true + + vars: + services: + - libretime-analyzer.service + - libretime-api.service + - libretime-liquidsoap.service + - libretime-playout.service + - libretime-worker.service + + tasks: + - name: Check that server is listening + ansible.builtin.wait_for: + port: "{{ libretime_listen_port }}" + timeout: 2 + + - name: Register /etc/libretime/config.yml + ansible.builtin.stat: + path: /etc/libretime/config.yml + register: result + + - name: Check /etc/libretime/config.yml + ansible.builtin.assert: + that: + - result.stat.exists is true + - result.stat.pw_name == 'libretime' + - result.stat.gr_name == 'libretime' + - result.stat.mode == '0640' + + - name: Register /usr/share/libretime/legacy/application/preload.php + ansible.builtin.stat: + path: /usr/share/libretime/legacy/application/preload.php + register: result + + - name: Check /usr/share/libretime/legacy/application/preload.php + ansible.builtin.assert: + that: + - result.stat.exists is true + - result.stat.pw_name == 'libretime' + - result.stat.gr_name == 'libretime' + - result.stat.mode == '0644' + + - name: Gather services facts + ansible.builtin.service_facts: + register: result + + - name: Ensure that services are started and enabled + ansible.builtin.assert: + that: + - result.ansible_facts.services[item].state == 'running' + - result.ansible_facts.services[item].status == 'enabled' + loop: "{{ services }}" diff --git a/requirements.txt b/requirements.txt index edc690b..1b7badd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,5 +7,3 @@ black>=23.1.0,<24.0 molecule>=6,<6.1 molecule-plugins[podman]>=23.0.0,<24.0 pylint>=3,<3.1 -pytest>=7.2.2,<8.0 -pytest-testinfra==10.0.0,<10.1 From 3b0ac23a6bfc0f566256396f2b1ded7cabd4d860 Mon Sep 17 00:00:00 2001 From: jo Date: Sun, 7 Jan 2024 13:39:18 +0100 Subject: [PATCH 2/2] test: ensure libretime services can start --- molecule/default/converge.yml | 6 ++++++ molecule/default/molecule.yml | 2 ++ templates/libretime/config.yml.j2 | 3 +++ 3 files changed, 11 insertions(+) diff --git a/molecule/default/converge.yml b/molecule/default/converge.yml index f276553..4442e2e 100644 --- a/molecule/default/converge.yml +++ b/molecule/default/converge.yml @@ -26,6 +26,12 @@ name: [git, make, acl] # Is acl only required while testing ? update_cache: true + - name: Link /usr/bin/sh to /bin/bash + ansible.builtin.file: + src: /bin/bash + dest: /usr/bin/sh + state: link + - name: Include libretime ansible.builtin.include_role: name: ansible-role-libretime diff --git a/molecule/default/molecule.yml b/molecule/default/molecule.yml index 02b2165..88892e3 100644 --- a/molecule/default/molecule.yml +++ b/molecule/default/molecule.yml @@ -25,6 +25,7 @@ provisioner: inventory: host_vars: instance1: + libretime_checkout_version: main libretime_public_url: http://localhost:{{ libretime_listen_port }}/ libretime_listen_port: 9001 libretime_api_key: hackme @@ -35,6 +36,7 @@ provisioner: Environment=LIBRETIME_LOG_LEVEL=debug libretime_systemd_hardening: false instance2: + libretime_checkout_version: main libretime_public_url: http://localhost:{{ libretime_listen_port }}/ libretime_listen_port: 9002 libretime_api_key: hackme diff --git a/templates/libretime/config.yml.j2 b/templates/libretime/config.yml.j2 index 4161c3d..a88b341 100644 --- a/templates/libretime/config.yml.j2 +++ b/templates/libretime/config.yml.j2 @@ -178,6 +178,9 @@ stream: - <<: *default_icecast_output enabled: false mount: extra + audio: + format: ogg + bitrate: 256 - # Whether the output is enabled. # > default is false