mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-23 05:10:22 -07:00
CI: Add ArchLinux, Debian Bullseye, CentOS Stream 8, and Alpine 3 (#4222)
* Add ArchLinux, Debian Bullseye and CentOS Stream 8 to CI. * Add Alpine to CI matrix as well.
This commit is contained in:
parent
2416b81aa4
commit
a06903f33a
56 changed files with 861 additions and 700 deletions
|
@ -5,6 +5,13 @@ my_pass: 'md5d5e044ccd9b4b8adc89e8fed2eb0db8a'
|
|||
my_pass_decrypted: '6EjMk<hcX3<5(Yp?Xi5aQ8eS`a#Ni'
|
||||
dsn: "DRIVER={PostgreSQL};Server=localhost;Port=5432;Database=postgres;Uid={{ my_user }};Pwd={{ my_pass_decrypted }};UseUnicode=True"
|
||||
packages:
|
||||
Alpine:
|
||||
- psqlodbc
|
||||
- unixodbc
|
||||
- unixodbc-dev
|
||||
- g++
|
||||
Archlinux:
|
||||
- unixodbc
|
||||
RedHat:
|
||||
- postgresql-odbc
|
||||
- unixODBC
|
||||
|
|
|
@ -3,142 +3,151 @@
|
|||
# and should not be used as examples of how to write Ansible roles #
|
||||
####################################################################
|
||||
|
||||
#
|
||||
# Test for proper failures without pyodbc
|
||||
#
|
||||
# Some of the docker images already have pyodbc installed on it
|
||||
- include_tasks: no_pyodbc.yml
|
||||
when: ansible_os_family != 'FreeBSD' and ansible_os_family != 'Suse' and ansible_os_family != 'Debian'
|
||||
- when:
|
||||
- ansible_os_family != 'Archlinux' # TODO install driver from AUR: https://aur.archlinux.org/packages/psqlodbc
|
||||
block:
|
||||
|
||||
#
|
||||
# Get pyodbc installed
|
||||
#
|
||||
- include_tasks: install_pyodbc.yml
|
||||
#
|
||||
# Test for proper failures without pyodbc
|
||||
#
|
||||
# Some of the docker images already have pyodbc installed on it
|
||||
- include_tasks: no_pyodbc.yml
|
||||
when: ansible_os_family != 'FreeBSD' and ansible_os_family != 'Suse' and ansible_os_family != 'Debian'
|
||||
|
||||
#
|
||||
# Test missing parameters & invalid DSN
|
||||
#
|
||||
- include_tasks: negative_tests.yml
|
||||
#
|
||||
# Get pyodbc installed
|
||||
#
|
||||
- include_tasks: install_pyodbc.yml
|
||||
|
||||
#
|
||||
# Setup DSN per env
|
||||
#
|
||||
- name: Changing DSN for Suse
|
||||
set_fact:
|
||||
dsn: "DRIVER={PSQL};Server=localhost;Port=5432;Database=postgres;Uid={{ my_user }};Pwd={{ my_pass_decrypted }};UseUnicode=True"
|
||||
when: ansible_os_family == 'Suse'
|
||||
#
|
||||
# Test missing parameters & invalid DSN
|
||||
#
|
||||
- include_tasks: negative_tests.yml
|
||||
|
||||
- name: Changing DSN for Debian
|
||||
set_fact:
|
||||
dsn: "DRIVER={PostgreSQL Unicode};Server=localhost;Port=5432;Database=postgres;Uid={{ my_user }};Pwd={{ my_pass_decrypted }};UseUnicode=True"
|
||||
when: ansible_os_family == 'Debian'
|
||||
#
|
||||
# Setup DSN per env
|
||||
#
|
||||
- name: Changing DSN for Suse
|
||||
set_fact:
|
||||
dsn: "DRIVER={PSQL};Server=localhost;Port=5432;Database=postgres;Uid={{ my_user }};Pwd={{ my_pass_decrypted }};UseUnicode=True"
|
||||
when: ansible_os_family == 'Suse' or ansible_os_family == 'Alpine'
|
||||
|
||||
#
|
||||
# Name setup database
|
||||
#
|
||||
- name: Create a user to run the tests with
|
||||
shell: echo "CREATE USER {{ my_user }} SUPERUSER PASSWORD '{{ my_pass }}'" | psql postgres
|
||||
become_user: "{{ pg_user }}"
|
||||
become: True
|
||||
- name: Changing DSN for Alpine
|
||||
set_fact:
|
||||
dsn: "DRIVER={/usr/lib/psqlodbcw.so};Server=localhost;Port=5432;Database=postgres;Uid={{ my_user }};Pwd={{ my_pass_decrypted }};UseUnicode=True"
|
||||
when: ansible_os_family == 'Alpine'
|
||||
|
||||
- name: Create a table
|
||||
odbc:
|
||||
dsn: "{{ dsn }}"
|
||||
query: |
|
||||
CREATE TABLE films (
|
||||
code char(5) CONSTRAINT firstkey PRIMARY KEY,
|
||||
title varchar(40) NOT NULL,
|
||||
did integer NOT NULL,
|
||||
date_prod date,
|
||||
kind varchar(10),
|
||||
len interval hour to minute
|
||||
);
|
||||
become_user: "{{ pg_user }}"
|
||||
become: True
|
||||
register: results
|
||||
- name: Changing DSN for Debian
|
||||
set_fact:
|
||||
dsn: "DRIVER={PostgreSQL Unicode};Server=localhost;Port=5432;Database=postgres;Uid={{ my_user }};Pwd={{ my_pass_decrypted }};UseUnicode=True"
|
||||
when: ansible_os_family == 'Debian'
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- results is changed
|
||||
#
|
||||
# Name setup database
|
||||
#
|
||||
- name: Create a user to run the tests with
|
||||
shell: echo "CREATE USER {{ my_user }} SUPERUSER PASSWORD '{{ my_pass }}'" | psql postgres
|
||||
become_user: "{{ pg_user }}"
|
||||
become: True
|
||||
|
||||
#
|
||||
# Insert records
|
||||
#
|
||||
- name: Insert a record without params
|
||||
odbc:
|
||||
dsn: "{{ dsn }}"
|
||||
query: "INSERT INTO films (code, title, did, date_prod, kind, len) VALUES ('asdfg', 'My First Movie', 1, '2019-01-12', 'SyFi', '02:00')"
|
||||
become_user: "{{ pg_user }}"
|
||||
become: True
|
||||
register: results
|
||||
- name: Create a table
|
||||
odbc:
|
||||
dsn: "{{ dsn }}"
|
||||
query: |
|
||||
CREATE TABLE films (
|
||||
code char(5) CONSTRAINT firstkey PRIMARY KEY,
|
||||
title varchar(40) NOT NULL,
|
||||
did integer NOT NULL,
|
||||
date_prod date,
|
||||
kind varchar(10),
|
||||
len interval hour to minute
|
||||
);
|
||||
become_user: "{{ pg_user }}"
|
||||
become: True
|
||||
register: results
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- results is changed
|
||||
- assert:
|
||||
that:
|
||||
- results is changed
|
||||
|
||||
- name: Insert a record with params
|
||||
odbc:
|
||||
dsn: "{{ dsn }}"
|
||||
query: "INSERT INTO films (code, title, did, date_prod, kind, len) VALUES (?, ?, ?, ?, ?, ?)"
|
||||
params:
|
||||
- 'qwert'
|
||||
- 'My Second Movie'
|
||||
- 2
|
||||
- '2019-01-12'
|
||||
- 'Comedy'
|
||||
- '01:30'
|
||||
become_user: "{{ pg_user }}"
|
||||
become: True
|
||||
register: results
|
||||
#
|
||||
# Insert records
|
||||
#
|
||||
- name: Insert a record without params
|
||||
odbc:
|
||||
dsn: "{{ dsn }}"
|
||||
query: "INSERT INTO films (code, title, did, date_prod, kind, len) VALUES ('asdfg', 'My First Movie', 1, '2019-01-12', 'SyFi', '02:00')"
|
||||
become_user: "{{ pg_user }}"
|
||||
become: True
|
||||
register: results
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- results is changed
|
||||
- results['row_count'] == -1
|
||||
- results['results'] == []
|
||||
- results['description'] == []
|
||||
- assert:
|
||||
that:
|
||||
- results is changed
|
||||
|
||||
#
|
||||
# Select data
|
||||
#
|
||||
- name: Perform select single row without params (do not coherse changed)
|
||||
odbc:
|
||||
dsn: "{{ dsn }}"
|
||||
query: "SELECT * FROM films WHERE code='asdfg'"
|
||||
register: results
|
||||
- name: Insert a record with params
|
||||
odbc:
|
||||
dsn: "{{ dsn }}"
|
||||
query: "INSERT INTO films (code, title, did, date_prod, kind, len) VALUES (?, ?, ?, ?, ?, ?)"
|
||||
params:
|
||||
- 'qwert'
|
||||
- 'My Second Movie'
|
||||
- 2
|
||||
- '2019-01-12'
|
||||
- 'Comedy'
|
||||
- '01:30'
|
||||
become_user: "{{ pg_user }}"
|
||||
become: True
|
||||
register: results
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- results is changed
|
||||
- results is successful
|
||||
- results.row_count == 1
|
||||
- assert:
|
||||
that:
|
||||
- results is changed
|
||||
- results['row_count'] == -1
|
||||
- results['results'] == []
|
||||
- results['description'] == []
|
||||
|
||||
- name: Perform select multiple rows with params (coherse changed)
|
||||
odbc:
|
||||
dsn: "{{ dsn }}"
|
||||
query: 'SELECT * FROM films WHERE code=? or code=?'
|
||||
params:
|
||||
- 'asdfg'
|
||||
- 'qwert'
|
||||
register: results
|
||||
changed_when: False
|
||||
#
|
||||
# Select data
|
||||
#
|
||||
- name: Perform select single row without params (do not coherse changed)
|
||||
odbc:
|
||||
dsn: "{{ dsn }}"
|
||||
query: "SELECT * FROM films WHERE code='asdfg'"
|
||||
register: results
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- results is not changed
|
||||
- results is successful
|
||||
- results.row_count == 2
|
||||
- assert:
|
||||
that:
|
||||
- results is changed
|
||||
- results is successful
|
||||
- results.row_count == 1
|
||||
|
||||
- name: Drop the table
|
||||
odbc:
|
||||
dsn: "{{ dsn }}"
|
||||
query: "DROP TABLE films"
|
||||
register: results
|
||||
- name: Perform select multiple rows with params (coherse changed)
|
||||
odbc:
|
||||
dsn: "{{ dsn }}"
|
||||
query: 'SELECT * FROM films WHERE code=? or code=?'
|
||||
params:
|
||||
- 'asdfg'
|
||||
- 'qwert'
|
||||
register: results
|
||||
changed_when: False
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- results is successful
|
||||
- results is changed
|
||||
- results['row_count'] == -1
|
||||
- results['results'] == []
|
||||
- results['description'] == []
|
||||
- assert:
|
||||
that:
|
||||
- results is not changed
|
||||
- results is successful
|
||||
- results.row_count == 2
|
||||
|
||||
- name: Drop the table
|
||||
odbc:
|
||||
dsn: "{{ dsn }}"
|
||||
query: "DROP TABLE films"
|
||||
register: results
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- results is successful
|
||||
- results is changed
|
||||
- results['row_count'] == -1
|
||||
- results['results'] == []
|
||||
- results['description'] == []
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue