Skip to content

Commit 2084dc9

Browse files
Add spring component
Add improve a few thigns around capturing logs in ci jobs among others things
1 parent 78d7041 commit 2084dc9

File tree

8 files changed

+130
-47
lines changed

8 files changed

+130
-47
lines changed

.github/workflows/test-authnz.yaml

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,20 +74,22 @@ jobs:
7474
- name: Run Suites
7575
id: tests
7676
run: |
77-
IMAGE_TAG=$(find PACKAGES/rabbitmq-server-generic-unix-*.tar.xz | awk -F 'PACKAGES/rabbitmq-server-generic-unix-|.tar.xz' '{print $2}')
78-
CONF_DIR_PREFIX="$(mktemp -d)" RABBITMQ_DOCKER_IMAGE=pivotalrabbitmq/rabbitmq:$IMAGE_TAG \
79-
${SELENIUM_DIR}/run-suites.sh full-suite-authnz-messaging
80-
echo "SELENIUM_ARTIFACTS=$CONF_DIR_PREFIX" >> "$GITHUB_OUTPUT"
81-
77+
export IMAGE_TAG=$(find PACKAGES/rabbitmq-server-generic-unix-*.tar.xz | awk -F 'PACKAGES/rabbitmq-server-generic-unix-|.tar.xz' '{print $2}')
78+
export CONF_DIR_PREFIX="$(mktemp -d)"
79+
export RABBITMQ_DOCKER_IMAGE=pivotalrabbitmq/rabbitmq:$IMAGE_TAG
80+
echo "Running selenium tests with "
81+
echo " - CONF_DIR_PREFIX: ${CONF_DIR_PREFIX}"
82+
echo " - IMAGE_TAG: ${IMAGE_TAG}"
83+
echo " - RABBITMQ_DOCKER_IMAGE: ${RABBITMQ_DOCKER_IMAGE}"
84+
echo "SELENIUM_ARTIFACTS=${CONF_DIR_PREFIX}" >> $GITHUB_ENV
85+
${SELENIUM_DIR}/run-suites.sh full-suite-authnz-messaging
86+
8287
- name: Upload Test Artifacts
83-
if: always()
88+
if: ${{ failure() && steps.tests.outcome == 'failure' }}
8489
uses: actions/[email protected]
85-
env:
86-
SELENIUM_ARTIFACTS: ${{ steps.tests.outputs.SELENIUM_ARTIFACTS }}
8790
with:
8891
name: test-artifacts-${{ matrix.browser }}-${{ matrix.erlang_version }}
89-
path: |
90-
$SELENIUM_ARTIFACTS/*
92+
path: ${{ env.SELENIUM_ARTIFACTS }}/*
9193

9294
summary-selenium:
9395
needs:

.github/workflows/test-management-ui-for-pr.yaml

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -62,17 +62,19 @@ jobs:
6262
- name: Run short UI suites on a standalone rabbitmq server
6363
id: tests
6464
run: |
65-
IMAGE_TAG=$(find PACKAGES/rabbitmq-server-generic-unix-*.tar.xz | awk -F 'PACKAGES/rabbitmq-server-generic-unix-|.tar.xz' '{print $2}')
66-
CONF_DIR_PREFIX="$(mktemp -d)" RABBITMQ_DOCKER_IMAGE=pivotalrabbitmq/rabbitmq:$IMAGE_TAG \
67-
${SELENIUM_DIR}/run-suites.sh short-suite-management-ui
68-
echo "SELENIUM_ARTIFACTS=$CONF_DIR_PREFIX" >> "$GITHUB_OUTPUT"
69-
65+
export IMAGE_TAG=$(find PACKAGES/rabbitmq-server-generic-unix-*.tar.xz | awk -F 'PACKAGES/rabbitmq-server-generic-unix-|.tar.xz' '{print $2}')
66+
export CONF_DIR_PREFIX="$(mktemp -d)"
67+
export RABBITMQ_DOCKER_IMAGE=pivotalrabbitmq/rabbitmq:$IMAGE_TAG
68+
echo "Running selenium tests with "
69+
echo " - CONF_DIR_PREFIX: ${CONF_DIR_PREFIX}"
70+
echo " - IMAGE_TAG: ${IMAGE_TAG}"
71+
echo " - RABBITMQ_DOCKER_IMAGE: ${RABBITMQ_DOCKER_IMAGE}"
72+
echo "SELENIUM_ARTIFACTS=${CONF_DIR_PREFIX}" >> $GITHUB_ENV
73+
${SELENIUM_DIR}/run-suites.sh short-suite-management-ui
74+
7075
- name: Upload Test Artifacts
71-
if: ${{ failure() && steps.tests.outcome == 'failed' }}
76+
if: ${{ failure() && steps.tests.outcome == 'failure' }}
7277
uses: actions/upload-artifact@v4
73-
env:
74-
SELENIUM_ARTIFACTS: ${{ steps.tests.outputs.SELENIUM_ARTIFACTS }}
7578
with:
7679
name: test-artifacts-${{ matrix.browser }}-${{ matrix.erlang_version }}
77-
path: |
78-
$SELENIUM_ARTIFACTS/*
80+
path: ${{ env.SELENIUM_ARTIFACTS }}/*

.github/workflows/test-management-ui.yaml

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -66,17 +66,19 @@ jobs:
6666
- name: Run full UI suite on a 3-node rabbitmq cluster
6767
id: tests
6868
run: |
69-
IMAGE_TAG=$(find PACKAGES/rabbitmq-server-generic-unix-*.tar.xz | awk -F 'PACKAGES/rabbitmq-server-generic-unix-|.tar.xz' '{print $2}')
70-
CONF_DIR_PREFIX="$(mktemp -d)" RABBITMQ_DOCKER_IMAGE=pivotalrabbitmq/rabbitmq:$IMAGE_TAG \
71-
${SELENIUM_DIR}/run-suites.sh full-suite-management-ui
72-
echo "SELENIUM_ARTIFACTS=$CONF_DIR_PREFIX" >> "$GITHUB_OUTPUT"
69+
export IMAGE_TAG=$(find PACKAGES/rabbitmq-server-generic-unix-*.tar.xz | awk -F 'PACKAGES/rabbitmq-server-generic-unix-|.tar.xz' '{print $2}')
70+
export CONF_DIR_PREFIX="$(mktemp -d)"
71+
export RABBITMQ_DOCKER_IMAGE=pivotalrabbitmq/rabbitmq:$IMAGE_TAG
72+
echo "Running selenium tests with "
73+
echo " - CONF_DIR_PREFIX: ${CONF_DIR_PREFIX}"
74+
echo " - IMAGE_TAG: ${IMAGE_TAG}"
75+
echo " - RABBITMQ_DOCKER_IMAGE: ${RABBITMQ_DOCKER_IMAGE}"
76+
echo "SELENIUM_ARTIFACTS=${CONF_DIR_PREFIX}" >> $GITHUB_ENV
77+
${SELENIUM_DIR}/run-suites.sh full-suite-management-ui
7378
7479
- name: Upload Test Artifacts
75-
if: ${{ failure() && steps.tests.outcome == 'failed' }}
80+
if: ${{ failure() && steps.tests.outcome == 'failure' }}
7681
uses: actions/[email protected]
77-
env:
78-
SELENIUM_ARTIFACTS: ${{ steps.run-suites.outputs.SELENIUM_ARTIFACTS }}
7982
with:
8083
name: test-artifacts-${{ matrix.browser }}-${{ matrix.erlang_version }}
81-
path: |
82-
$SELENIUM_ARTIFACTS/*
84+
path: ${{ env.SELENIUM_ARTIFACTS }}/*

selenium/bin/components/fakeportal

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ init_fakeportal() {
3232
print "> CLIENT_ID: ${CLIENT_ID}"
3333
print "> CLIENT_SECRET: ${CLIENT_SECRET}"
3434
print "> RABBITMQ_URL: ${RABBITMQ_URL}"
35+
print "> IDP_TOKEN_ENDPOINT: ${IDP_TOKEN_ENDPOINT}"
36+
print "> IDP: ${IDP}"
3537
}
3638
start_fakeportal() {
3739
begin "Starting fakeportal ..."
@@ -48,11 +50,11 @@ start_fakeportal() {
4850
--env PORT=3000 \
4951
--env RABBITMQ_URL="${RABBITMQ_URL_FOR_FAKEPORTAL}" \
5052
--env PROXIED_RABBITMQ_URL="${RABBITMQ_URL}" \
51-
--env UAA_URL="${UAA_URL_FOR_FAKEPORTAL}" \
53+
--env IDP_TOKEN_ENDPOINT="${IDP_TOKEN_ENDPOINT}" \
5254
--env CLIENT_ID="${CLIENT_ID}" \
5355
--env CLIENT_SECRET="${CLIENT_SECRET}" \
54-
--env NODE_EXTRA_CA_CERTS=/etc/uaa/ca_uaa_certificate.pem \
55-
-v ${TEST_CONFIG_DIR}/uaa:/etc/uaa \
56+
--env NODE_EXTRA_CA_CERTS=/etc/${IDP}/ca_${IDP}_certificate.pem \
57+
-v ${TEST_CONFIG_DIR}/${IDP}:/etc/${IDP} \
5658
-v ${FAKEPORTAL_DIR}:/code/fakeportal \
5759
mocha-test:${mocha_test_tag} run fakeportal
5860

selenium/bin/components/spring

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/usr/bin/env bash
2+
3+
SPRING_DOCKER_IMAGE=${SPRING_DOCKER_IMAGE:-pivotalrabbitmq/spring-authorization-server:0.0.10}
4+
5+
ensure_spring() {
6+
if docker ps | grep spring &> /dev/null; then
7+
print "spring already running ..."
8+
else
9+
start_spring
10+
fi
11+
}
12+
init_spring() {
13+
SPRING_CONFIG_DIR=${TEST_CONFIG_PATH}/spring
14+
SPRING_URL=${SPRING_URL:-$OAUTH_PROVIDER_URL}
15+
16+
print "> SPRING_CONFIG_DIR: ${SPRING_CONFIG_DIR}"
17+
print "> SPRING_URL: ${SPRING_URL}"
18+
print "> SPRING_DOCKER_IMAGE: ${SPRING_DOCKER_IMAGE}"
19+
20+
generate-ca-server-client-kpi spring $SPRING_CONFIG_DIR
21+
generate-server-keystore-if-required spring $SPRING_CONFIG_DIR
22+
}
23+
start_spring() {
24+
begin "Starting spring ..."
25+
26+
init_spring
27+
kill_container_if_exist spring
28+
29+
MOUNT_SPRING_CONF_DIR=$CONF_DIR/spring
30+
31+
mkdir -p $MOUNT_SPRING_CONF_DIR
32+
${BIN_DIR}/gen-spring-yml ${SPRING_CONFIG_DIR} $ENV_FILE $MOUNT_SPRING_CONF_DIR/application.yml
33+
print "> EFFECTIVE SPRING_CONFIG_FILE: $MOUNT_SPRING_CONF_DIR/application.yml"
34+
cp ${SPRING_CONFIG_DIR}/*.pem $MOUNT_SPRING_CONF_DIR
35+
cp ${SPRING_CONFIG_DIR}/*.jks $MOUNT_SPRING_CONF_DIR
36+
37+
docker run \
38+
--detach \
39+
--name spring \
40+
--net ${DOCKER_NETWORK} \
41+
--publish 8080:8080 \
42+
--publish 8443:8443 \
43+
-v ${MOUNT_SPRING_CONF_DIR}:/config \
44+
${SPRING_DOCKER_IMAGE}
45+
46+
wait_for_oidc_endpoint spring $SPRING_URL $MOUNT_SPRING_CONF_DIR/ca_spring_certificate.pem
47+
end "spring is ready"
48+
49+
}

selenium/bin/gen-spring-yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#!/usr/bin/env bash
2+
SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
3+
4+
#set -x
5+
6+
SPRING_PATH=${1:?First parameter is the directory env and config files are relative to}
7+
ENV_FILE=${2:?Second parameter is a comma-separated list of .env file which has exported template variables}
8+
FINAL_CONFIG_FILE=${3:?Forth parameter is the name of the final config file. It is relative to where this script is run from}
9+
10+
source $ENV_FILE
11+
12+
parentdir="$(dirname "$FINAL_CONFIG_FILE")"
13+
mkdir -p $parentdir
14+
15+
echo "" > $FINAL_CONFIG_FILE
16+
17+
for f in $($SCRIPT/find-template-files "${PROFILES}" $SPRING_PATH "application" "yml")
18+
do
19+
envsubst < $f >> $FINAL_CONFIG_FILE
20+
done

selenium/bin/suite_template

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -154,16 +154,17 @@ build_mocha_image() {
154154
}
155155

156156
kill_container_if_exist() {
157-
if docker stop $1 &> /dev/null; then
158-
docker rm $1 &> /dev/null
159-
fi
157+
docker kill $1 &> /dev/null
158+
docker rm $1 &> /dev/null
160159
}
161160
wait_for_message() {
162-
attemps_left=10
161+
delay=${3:-5}
162+
attemps_left=${4:-10}
163+
163164
while ! docker logs $1 2>&1 | grep -q "$2";
164165
do
165-
sleep 5
166-
print "Waiting 5sec for $1 to start ($attemps_left attempts left )..."
166+
sleep $delay
167+
print "Waiting $delay sec for $1 to start ($attemps_left attempts left )..."
167168
((attemps_left--))
168169
if [[ "$attemps_left" -lt 1 ]]; then
169170
print "Timed out waiting"
@@ -185,17 +186,20 @@ wait_for_oidc_endpoint() {
185186
wait_for_oidc_endpoint_local() {
186187
NAME=$1
187188
BASE_URL=$2
188-
CURL_ARGS="-k --tlsv1.2 -L --fail "
189-
DELAY_BETWEEN_ATTEMPTS=5
189+
CURL_ARGS="--tlsv1.2 -L --fail "
190+
DELAY_BETWEEN_ATTEMPTS=10
190191
if [[ $# -eq 3 ]]; then
191192
CURL_ARGS="$CURL_ARGS --cacert $3"
192193
DELAY_BETWEEN_ATTEMPTS=10
194+
else
195+
CURL_ARGS="$CURL_ARGS -k "
193196
fi
194197
max_retry=15
195198
counter=0
196199
print "Waiting for OIDC discovery endpoint $NAME ... (BASE_URL: $BASE_URL)"
197200
until (curl $CURL_ARGS ${BASE_URL}/.well-known/openid-configuration >/dev/null 2>&1)
198201
do
202+
echo "Failed $?"
199203
sleep $DELAY_BETWEEN_ATTEMPTS
200204
[[ counter -eq $max_retry ]] && print "Failed!" && exit 1
201205
print "Trying again. Try #$counter"
@@ -208,7 +212,7 @@ wait_for_oidc_endpoint_docker() {
208212
BASE_URL=$2
209213
CURL_ARGS="-k --tlsv1.2 -L --fail "
210214
DOCKER_ARGS="--rm --net ${DOCKER_NETWORK} "
211-
DELAY_BETWEEN_ATTEMPTS=5
215+
DELAY_BETWEEN_ATTEMPTS=10
212216
if [[ $# -gt 2 ]]; then
213217
DOCKER_ARGS="$DOCKER_ARGS -v $3:/tmp/ca_certificate.pem"
214218
CURL_ARGS="$CURL_ARGS --cacert /tmp/ca_certificate.pem"
@@ -469,7 +473,7 @@ do_generate-ca-server-client-kpi() {
469473
cd $ROOT/tls-gen/basic
470474
cp openssl.cnf openssl.cnf.bak
471475
if [ -f "$FOLDER/openssl.cnf.in" ]; then
472-
cp $FOLDER/openssl.cnf.in >> openssl.cnf
476+
cat $FOLDER/openssl.cnf.in >> openssl.cnf
473477
fi
474478
if [[ ! -z "${DEBUG}" ]]; then
475479
print "Used this openssl.conf"

selenium/fakeportal/app.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const rabbitmq_url = process.env.RABBITMQ_URL;
77
const proxied_rabbitmq_url = process.env.PROXIED_RABBITMQ_URL;
88
const client_id = process.env.CLIENT_ID;
99
const client_secret = process.env.CLIENT_SECRET;
10-
const uaa_url = process.env.UAA_URL;
10+
const idp_token_endpoint = process.env.IDP_TOKEN_ENDPOINT;
1111
const port = process.env.PORT || 3000;
1212

1313
app.engine('.html', require('ejs').__express);
@@ -28,7 +28,10 @@ app.get('/favicon.ico', (req, res) => res.status(204));
2828

2929

3030
app.listen(port);
31-
console.log('Express started on port ' + port);
31+
console.log('Express started on port ' + port + " using ")
32+
console.log(" - idp_token_endpoint: " + idp_token_endpoint)
33+
console.log(" - rabbitmq_url: " + rabbitmq_url)
34+
console.log(" - proxied_rabbitmq_url: " + proxied_rabbitmq_url)
3235

3336
function default_if_blank(value, defaultValue) {
3437
if (typeof value === "undefined" || value === null || value == "") {
@@ -40,14 +43,13 @@ function default_if_blank(value, defaultValue) {
4043

4144
function access_token(id, secret) {
4245
const req = new XMLHttpRequest();
43-
const url = uaa_url + '/oauth/token';
46+
const url = idp_token_endpoint
4447
const params = 'client_id=' + id +
4548
'&client_secret=' + secret +
4649
'&grant_type=client_credentials' +
47-
'&token_format=jwt' +
4850
'&response_type=token';
4951

50-
console.debug("Sending " + url + " with params "+ params);
52+
console.debug("Sending " + url + " with params " + params);
5153

5254
req.open('POST', url, false);
5355
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

0 commit comments

Comments
 (0)