Skip to content

Commit d946be8

Browse files
committed
test: support an external proxy
This PR allows to specify an external global proxy for testing purposes. The format of `SR_RHC_EXTERNAL_PROXY` is scheme://hostname.port e.g. `http://my.hostname.com:3128` Signed-off-by: Rich Megginson <rmeggins@redhat.com>
1 parent 97bf779 commit d946be8

13 files changed

Lines changed: 66 additions & 3 deletions

tests/tasks/check_candlepin.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@
55
url: "https://{{ lsr_rhc_test_data.candlepin_host }}:{{ lsr_rhc_test_data.candlepin_port }}{{ lsr_rhc_test_data.candlepin_prefix }}" # yamllint disable-line
66
method: HEAD
77
validate_certs: false
8+
environment: "{{ {'http_proxy': __rhc_external_proxy_url, 'https_proxy': __rhc_external_proxy_url}
9+
if __rhc_external_proxy_url | length > 0 else {} }}"

tests/tasks/setup_test_data.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,36 @@
3737
- name: Set flag to indicate system is ostree
3838
set_fact:
3939
__rhc_is_ostree: "{{ __ostree_booted_stat.stat.exists }}"
40+
41+
- name: Set flag to indicate use of external proxy
42+
set_fact:
43+
__rhc_use_external_proxy: "{{ lookup('env', 'SR_RHC_EXTERNAL_PROXY') | length > 0 }}"
44+
__rhc_external_proxy_url: "{{ lookup('env', 'SR_RHC_EXTERNAL_PROXY') }}"
45+
46+
- name: Set rhc_external_proxy to empty when external proxy is not used
47+
set_fact:
48+
rhc_external_proxy: {}
49+
when: not __rhc_use_external_proxy
50+
51+
- name: Handle external proxy
52+
when: __rhc_use_external_proxy
53+
block:
54+
- name: Parse and set rhc_external_proxy
55+
set_fact:
56+
rhc_external_proxy:
57+
scheme: "{{ __rhc_external_proxy_url | urlsplit('scheme') }}"
58+
hostname: "{{ __rhc_external_proxy_url | urlsplit('hostname') }}"
59+
port: "{{ (__rhc_external_proxy_url | urlsplit('port')) | default('') | string }}"
60+
61+
# unfortunately this doesn't work in all cases, so we have to add the environment
62+
# explicitly to the check_candlepin.yml task as well
63+
- name: Add proxy vars to bashrc
64+
lineinfile:
65+
path: /root/.bashrc
66+
regexp: "^export https?="
67+
line: "{{ item }}"
68+
create: true
69+
mode: "0644"
70+
loop:
71+
- export http_proxy={{ __rhc_external_proxy_url }}
72+
- export https_proxy={{ __rhc_external_proxy_url }}

tests/tests_environments.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}"
5252
rhc_environments:
5353
- "{{ lsr_rhc_test_data.env_nonworking }}"
54+
rhc_proxy: "{{ rhc_external_proxy | default({}) }}"
5455

5556
- name: Unreachable task
5657
fail:
@@ -80,6 +81,7 @@
8081
insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}"
8182
rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}"
8283
rhc_environments: "{{ lsr_rhc_test_data.envs_register }}"
84+
rhc_proxy: "{{ rhc_external_proxy | default({}) }}"
8385

8486
# 'subscription-manager environments' has a '--list' option only
8587
# in RHEL 8.6+ and greater (incl. RHEL 9+)

tests/tests_insights_ansible_host.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}"
3232
insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}"
3333
rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}"
34+
rhc_proxy: "{{ rhc_external_proxy | default({}) }}"
3435

3536
- name: Check ansible_host is set to 'host' in config file
3637
command:
@@ -89,7 +90,7 @@
8990
state: absent
9091
check_mode: true
9192
register: __test_ansible_host_absent
92-
failed_when: __test_ansible_host_absent.found
93+
failed_when: __test_ansible_host_absent.found != 0
9394

9495
- name: Test ansible_host is removed during insights unregistration
9596
block:
@@ -117,7 +118,7 @@
117118
state: absent
118119
check_mode: true
119120
register: __test_ansible_host_removed
120-
failed_when: __test_ansible_host_removed.found
121+
failed_when: __test_ansible_host_removed.found != 0
121122

122123
always:
123124
- name: Unregister

tests/tests_insights_autoupdate.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}"
3232
insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}"
3333
rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}"
34+
rhc_proxy: "{{ rhc_external_proxy | default({}) }}"
3435

3536
- name: Check that auto_update is true in config file
3637
command:

tests/tests_insights_client_register.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}"
2929
insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}"
3030
rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}"
31+
rhc_proxy: "{{ rhc_external_proxy | default({}) }}"
3132

3233
- name: Register insights (noop)
3334
include_role:
@@ -47,6 +48,7 @@
4748
prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}"
4849
insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}"
4950
rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}"
51+
rhc_proxy: "{{ rhc_external_proxy | default({}) }}"
5052

5153
- name: Get insights UUID
5254
include_tasks: tasks/get_insights_uuid.yml
@@ -73,6 +75,7 @@
7375
insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}"
7476
rhc_state: reconnect
7577
rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}"
78+
rhc_proxy: "{{ rhc_external_proxy | default({}) }}"
7679

7780
- name: Get rhsm UUID
7881
include_tasks: tasks/get_rhsm_uuid.yml

tests/tests_insights_display_name.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}"
3232
insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}"
3333
rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}"
34+
rhc_proxy: "{{ rhc_external_proxy | default({}) }}"
3435

3536
- name: Check display_name is set to 'name' in config file
3637
command:
@@ -99,7 +100,7 @@
99100
state: absent
100101
check_mode: true
101102
register: __test_display_name_removed
102-
failed_when: __test_display_name_removed.found
103+
failed_when: __test_display_name_removed.found != 0
103104

104105
always:
105106
- name: Unregister

tests/tests_insights_remediation.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}"
4242
insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}"
4343
rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}"
44+
rhc_proxy: "{{ rhc_external_proxy | default({}) }}"
4445

4546
- name: Set the fact for the systemd service
4647
set_fact:

tests/tests_insights_tags.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
prefix: "{{ lsr_rhc_test_data.candlepin_prefix }}"
3333
insecure: "{{ lsr_rhc_test_data.candlepin_insecure }}"
3434
rhc_baseurl: "{{ lsr_rhc_test_data.baseurl | d(omit) }}"
35+
rhc_proxy: "{{ rhc_external_proxy | default({}) }}"
3536

3637
- name: Get state of insights tags.yaml file
3738
include_tasks: tasks/get_insights_tags.yml

tests/tests_proxy.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,9 +331,11 @@
331331
vars:
332332
rhc_state: absent
333333

334+
# skip this test if external proxy is used
334335
- name: Register (without proxy)
335336
include_role:
336337
name: linux-system-roles.rhc
338+
when: not __rhc_use_external_proxy
337339
vars:
338340
rhc_auth:
339341
login:

0 commit comments

Comments
 (0)