# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) # Preparation for further tests of postgresql_subscription module. - vars: task_parameters: &task_parameters become_user: '{{ pg_user }}' become: yes register: result pg_parameters: &pg_parameters login_user: '{{ pg_user }}' login_db: '{{ test_db }}' block: - name: postgresql_publication - create test db <<: *task_parameters postgresql_db: login_user: '{{ pg_user }}' login_port: '{{ master_port }}' maintenance_db: '{{ db_default }}' name: '{{ test_db }}' - name: postgresql_publication - create test role <<: *task_parameters postgresql_user: <<: *pg_parameters login_port: '{{ master_port }}' name: '{{ replication_role }}' password: '{{ replication_pass }}' role_attr_flags: LOGIN,REPLICATION - name: postgresql_publication - create test table <<: *task_parameters postgresql_table: <<: *pg_parameters login_port: '{{ master_port }}' name: '{{ test_table1 }}' columns: - id int - name: Master - dump schema <<: *task_parameters shell: pg_dumpall -p '{{ master_port }}' -s > /tmp/schema.sql - name: Replicat restore schema <<: *task_parameters shell: psql -p '{{ replica_port }}' -f /tmp/schema.sql - name: postgresql_publication - create publication <<: *task_parameters postgresql_publication: <<: *pg_parameters login_port: '{{ master_port }}' name: '{{ test_pub }}' - assert: that: - result is changed - result.exists == true - result.queries == ["CREATE PUBLICATION \"{{ test_pub }}\" FOR ALL TABLES"] - result.owner == '{{ pg_user }}' - result.alltables == true - result.tables == [] - result.parameters.publish != {} - name: postgresql_publication - create one more publication <<: *task_parameters postgresql_publication: <<: *pg_parameters login_port: '{{ master_port }}' name: '{{ test_pub2 }}' - name: postgresql_publication - check the publication was created <<: *task_parameters postgresql_query: <<: *pg_parameters login_port: '{{ master_port }}' query: > SELECT * FROM pg_publication WHERE pubname = '{{ test_pub }}' AND pubowner = '10' AND puballtables = 't' - assert: that: - result.rowcount == 1