summaryrefslogtreecommitdiff
path: root/test/integration/targets/postgresql_subscription/tasks/setup_publication.yml
blob: dc99f89d11a8f8261ceec4eafe5589422e0ca559 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# Copyright: (c) 2019, Andrew Klychkov (@Andersson007) <aaklychkov@mail.ru>
# 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