From d76e964764b8a8966ec4e1f31357ac4c060f74d5 Mon Sep 17 00:00:00 2001 From: irisdingbj Date: Fri, 7 Jun 2024 17:41:14 +0000 Subject: [PATCH 1/6] enable gmc e2e for manifests changes and some minor fix Signed-off-by: irisdingbj --- .github/workflows/go-e2e.yaml | 11 ++--- .../scripts/e2e/{go_test.sh => gmc_test.sh} | 45 +++---------------- 2 files changed, 13 insertions(+), 43 deletions(-) rename .github/workflows/scripts/e2e/{go_test.sh => gmc_test.sh} (80%) diff --git a/.github/workflows/go-e2e.yaml b/.github/workflows/go-e2e.yaml index 73483cad..eb111c91 100644 --- a/.github/workflows/go-e2e.yaml +++ b/.github/workflows/go-e2e.yaml @@ -1,7 +1,7 @@ # Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -name: Golang E2e Tests +name: GMC E2e Tests on: pull_request: @@ -9,6 +9,7 @@ on: types: [opened, reopened, ready_for_review, synchronize] # added `ready_for_review` since draft is skipped paths: - microservices-connector/** + - manifests/** workflow_dispatch: # If there is a new commit, the previous jobs will be canceled @@ -43,10 +44,10 @@ jobs: make docker.build make docker.push - - name: Install modules + - name: Install GMC run: | echo "should_cleanup=true" >> $GITHUB_ENV - .github/workflows/scripts/e2e/go_test.sh install_gmc + .github/workflows/scripts/e2e/gmc_test.sh install_gmc exit_status=$$?$$ if [ $$exit_status -ne 0 ]; then echo "Failed to install modules" @@ -60,12 +61,12 @@ jobs: if $skip_validate; then echo "Skip validate" else - .github/workflows/scripts/e2e/go_test.sh validate_gmc + .github/workflows/scripts/e2e/gmc_test.sh validate_gmc fi - name: Cleanup modules if: always() run: | if $should_cleanup; then - .github/workflows/scripts/e2e/go_test.sh cleanup_gmc + .github/workflows/scripts/e2e/gmc_test.sh cleanup_gmc fi diff --git a/.github/workflows/scripts/e2e/go_test.sh b/.github/workflows/scripts/e2e/gmc_test.sh similarity index 80% rename from .github/workflows/scripts/e2e/go_test.sh rename to .github/workflows/scripts/e2e/gmc_test.sh index 6654da52..e522b5c8 100755 --- a/.github/workflows/scripts/e2e/go_test.sh +++ b/.github/workflows/scripts/e2e/gmc_test.sh @@ -21,7 +21,8 @@ function install_gmc() { kubectl apply -f $(pwd)/config/manager/gmc-manager.yaml # Wait until the gmc controller pod is ready - wait_until_pod_ready "gmc-controller" $SYSTEM_NAMESPACE "gmc-controller" + GMC_CONTROLLER_POD=$(kubectl get pods --namespace=$SYSTEM_NAMESPACE | awk '{print $1}') + wait_until_pod_ready "gmc-controller" $GMC_CONTROLLER_POD $SYSTEM_NAMESPACE } function validate_gmc() { @@ -55,12 +56,13 @@ function validate_chatqna() { # Wait until the router service is ready echo "Waiting for the chatqa router service to be ready..." - wait_until_pod_ready "chatqna router" $APP_NAMESPACE "router-service" + ROUTER_POD=$(kubectl get pods --namespace=$APP_NAMESPACE -l app=router-service | awk '{print $1}') + wait_until_pod_ready "chatqna router" $ROUTER_POD $APP_NAMESPACE # Wait until the tgi pod is ready TGI_POD_NAME=$(kubectl get pods --namespace=$APP_NAMESPACE | grep ^tgi-service | awk '{print $1}') kubectl describe pod $TGI_POD_NAME -n $APP_NAMESPACE - kubectl wait --for=condition=ready pod/$TGI_POD_NAME --namespace=$APP_NAMESPACE --timeout=300s + wait_until_pod_ready "tgi service" $TGI_POD_NAME $APP_NAMESPACE # deploy client pod for testing @@ -123,46 +125,12 @@ function init_gmc() { find . -name '*.yaml' -type f -exec sed -i "s#default.svc#$APP_NAMESPACE.svc#g" {} \; } - function wait_until_pod_ready() { echo "Waiting for the $1 to be ready..." - max_retries=3000 - retry_count=0 - while ! is_pod_ready $2 $3; do - if [ $retry_count -ge $max_retries ]; then - echo "$1 is not ready after waiting for a significant amount of time" - exit 1 - fi - echo "$1 is not ready yet. Retrying in 10 seconds..." - sleep 10 - output=$(kubectl get pods -n $2) - # Check if the command was successful - if [ $? -eq 0 ]; then - echo "Successfully retrieved $1 information:" - echo "$output" - else - echo "Failed to retrieve $1 information" - exit 1 - fi - retry_count=$((retry_count + 1)) - done -} - -function is_pod_ready() { - if [ "$2" == "gmc-controller" ]; then - pod_status=$(kubectl get pods -n $1 -o jsonpath='{.items[].status.conditions[?(@.type=="Ready")].status}') - else - pod_status=$(kubectl get pods -n $1 -l app=$2 -o jsonpath='{.items[].status.conditions[?(@.type=="Ready")].status}') - fi - if [ "$pod_status" == "True" ]; then - return 0 - else - return 1 - fi + kubectl wait --for=condition=ready pod/$2 --namespace=$3 --timeout=300s } - if [ $# -eq 0 ]; then echo "Usage: $0 " exit 1 @@ -186,3 +154,4 @@ case "$1" in echo "Unknown function: $1" ;; esac + From 1482096bfc314540327f67219ddbdd332fd0d46d Mon Sep 17 00:00:00 2001 From: irisdingbj Date: Fri, 7 Jun 2024 17:54:34 +0000 Subject: [PATCH 2/6] update personas picture Signed-off-by: irisdingbj --- microservices-connector/personas.png | Bin 22497 -> 249264 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/microservices-connector/personas.png b/microservices-connector/personas.png index 4f841c3c1a071a69110dddf4e12c1d1e9d3712bd..752942b000435e319521771d957e2d5cb4fca3e8 100644 GIT binary patch literal 249264 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 P{z}r#XgLA8{I~xf?DA@y literal 22497 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 z z5LD=FTU|puaCLtASo|{oO}Gu=#O8HfxqEHJ(qQ*OB>)E(oE5KfMK}` z)MY-FKfOBO|7E>eFr#;FWYOX-98O~G3x}Ww2PvzEYZop`d{+mcWhz+8uARDRo|g9l z(Hehbgn& zD7|sGH>roDZPIE&NF}AvV@u$F{Fu+XogKaWbojMrqh(9emJkoV*BI_teS)aeiO*U8 zDwRvdsa?A12BG*`#NF?z~>91-`2^aj5A>&h(drH0@4zCJ+fT{EQB=BUx zrt{V003sE{7Yk>LxBh>cF2KCRBICbt6fe5>hUejiID%%AX-^k%_h#w}*4jCEL|7wP zvI5XT(|m|B=L zGp^6~s^s1lAJc@81edB;=4B|lC-<712I5wkE<~cp6TgU#yQS&@Vm>qP&H2K)7`Z2& zpCDb3ek-d=x8H8Yz0;mZ<`2jG>Y*&tcvA8l>j%jG(|dn=GcHq@E#xH37kmss#-SnU z@__CQj4PFZ4+&_~a7U#e_UMHx2t6TYw96_P`!DG<7KOe}L7z9r4m}n5)1cy%`(Hs< zyk3#8LqY0Gq2Y&=`m@+O=za>(1Yy~slVug>LJ?n)`abg?SI37Qr?tA^!*iw`{68}k zb>wxX>`WD=g;{iwTacL7d2x4ZWuP&pLfC|2z%ubQR8X@OSnn4A1*KYH4n>fVa{FH*g|%m4rY From d8bb6d1fd490cdcf8562cdd0de03bee750c27b26 Mon Sep 17 00:00:00 2001 From: irisdingbj Date: Fri, 7 Jun 2024 22:16:30 +0000 Subject: [PATCH 3/6] fix pod name Signed-off-by: irisdingbj --- .github/workflows/scripts/e2e/gmc_test.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/scripts/e2e/gmc_test.sh b/.github/workflows/scripts/e2e/gmc_test.sh index e522b5c8..228d81a3 100755 --- a/.github/workflows/scripts/e2e/gmc_test.sh +++ b/.github/workflows/scripts/e2e/gmc_test.sh @@ -21,7 +21,7 @@ function install_gmc() { kubectl apply -f $(pwd)/config/manager/gmc-manager.yaml # Wait until the gmc controller pod is ready - GMC_CONTROLLER_POD=$(kubectl get pods --namespace=$SYSTEM_NAMESPACE | awk '{print $1}') + GMC_CONTROLLER_POD=$(kubectl get pods --namespace=$SYSTEM_NAMESPACE | awk 'NR>1 {print $1; exit}') wait_until_pod_ready "gmc-controller" $GMC_CONTROLLER_POD $SYSTEM_NAMESPACE } @@ -56,7 +56,7 @@ function validate_chatqna() { # Wait until the router service is ready echo "Waiting for the chatqa router service to be ready..." - ROUTER_POD=$(kubectl get pods --namespace=$APP_NAMESPACE -l app=router-service | awk '{print $1}') + ROUTER_POD=$(kubectl get pods --namespace=$APP_NAMESPACE -l app=router-service | awk 'NR>1 {print $1; exit}') wait_until_pod_ready "chatqna router" $ROUTER_POD $APP_NAMESPACE # Wait until the tgi pod is ready @@ -69,7 +69,8 @@ function validate_chatqna() { kubectl create deployment client-test -n $APP_NAMESPACE --image=python:3.8.13 -- sleep infinity # wait for client pod ready - wait_until_pod_ready "client-test" $APP_NAMESPACE "client-test" + CLIENT_POD=$(kubectl get pods --namespace=$APP_NAMESPACE -l app=client-test | awk 'NR>1 {print $1; exit}') + wait_until_pod_ready "client-test" $CLIENT_POD $APP_NAMESPACE # giving time to populating data sleep 120 kubectl get pods -n $APP_NAMESPACE From 9e49cc8228866b2eeac8f82ef688bb0608dfdae7 Mon Sep 17 00:00:00 2001 From: irisdingbj Date: Fri, 7 Jun 2024 22:35:17 +0000 Subject: [PATCH 4/6] fix wait error Signed-off-by: irisdingbj --- .github/workflows/scripts/e2e/gmc_test.sh | 47 ++++++++++++++++------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/.github/workflows/scripts/e2e/gmc_test.sh b/.github/workflows/scripts/e2e/gmc_test.sh index 228d81a3..c6940927 100755 --- a/.github/workflows/scripts/e2e/gmc_test.sh +++ b/.github/workflows/scripts/e2e/gmc_test.sh @@ -21,8 +21,8 @@ function install_gmc() { kubectl apply -f $(pwd)/config/manager/gmc-manager.yaml # Wait until the gmc controller pod is ready - GMC_CONTROLLER_POD=$(kubectl get pods --namespace=$SYSTEM_NAMESPACE | awk 'NR>1 {print $1; exit}') - wait_until_pod_ready "gmc-controller" $GMC_CONTROLLER_POD $SYSTEM_NAMESPACE + wait_until_pod_ready "gmc-controller" $SYSTEM_NAMESPACE "gmc-controller" + kubectl get pods -n $SYSTEM_NAMESPACE } function validate_gmc() { @@ -43,36 +43,31 @@ function cleanup_gmc() { function validate_chatqna() { - kubectl get pods -n $SYSTEM_NAMESPACE # todo select gaudi or xeon kubectl create ns $APP_NAMESPACE sed -i "s|namespace: chatqa|namespace: $APP_NAMESPACE|g" $(pwd)/config/samples/chatQnA_xeon.yaml kubectl apply -f $(pwd)/config/samples/chatQnA_xeon.yaml - - - output=$(kubectl get pods) - echo $output - # Wait until the router service is ready echo "Waiting for the chatqa router service to be ready..." - ROUTER_POD=$(kubectl get pods --namespace=$APP_NAMESPACE -l app=router-service | awk 'NR>1 {print $1; exit}') - wait_until_pod_ready "chatqna router" $ROUTER_POD $APP_NAMESPACE + wait_until_pod_ready "chatqna router" $APP_NAMESPACE "router-service" + output=$(kubectl get pods -n $APP_NAMESPACE) + echo $output # Wait until the tgi pod is ready TGI_POD_NAME=$(kubectl get pods --namespace=$APP_NAMESPACE | grep ^tgi-service | awk '{print $1}') kubectl describe pod $TGI_POD_NAME -n $APP_NAMESPACE - wait_until_pod_ready "tgi service" $TGI_POD_NAME $APP_NAMESPACE + kubectl wait --for=condition=ready pod/TGI_POD_NAME --namespace=$APP_NAMESPACE --timeout=300s # deploy client pod for testing kubectl create deployment client-test -n $APP_NAMESPACE --image=python:3.8.13 -- sleep infinity # wait for client pod ready - CLIENT_POD=$(kubectl get pods --namespace=$APP_NAMESPACE -l app=client-test | awk 'NR>1 {print $1; exit}') - wait_until_pod_ready "client-test" $CLIENT_POD $APP_NAMESPACE + wait_until_pod_ready "client-test" $APP_NAMESPACE "client-test" # giving time to populating data sleep 120 + kubectl get pods -n $APP_NAMESPACE # send request to chatqnA export CLIENT_POD=$(kubectl get pod -n $APP_NAMESPACE -l app=client-test -o jsonpath={.items..metadata.name}) @@ -128,9 +123,33 @@ function init_gmc() { function wait_until_pod_ready() { echo "Waiting for the $1 to be ready..." - kubectl wait --for=condition=ready pod/$2 --namespace=$3 --timeout=300s + max_retries=30 + retry_count=0 + while ! is_pod_ready $2 $3; do + if [ $retry_count -ge $max_retries ]; then + echo "$1 is not ready after waiting for a significant amount of time" + exit 1 + fi + echo "$1 is not ready yet. Retrying in 10 seconds..." + sleep 10 + output=$(kubectl get pods -n $2) + echo $output + retry_count=$((retry_count + 1)) + done } +function is_pod_ready() { + if [ "$2" == "gmc-controller" ]; then + pod_status=$(kubectl get pods -n $1 -o jsonpath='{.items[].status.conditions[?(@.type=="Ready")].status}') + else + pod_status=$(kubectl get pods -n $1 -l app=$2 -o jsonpath='{.items[].status.conditions[?(@.type=="Ready")].status}') + fi + if [ "$pod_status" == "True" ]; then + return 0 + else + return 1 + fi +} if [ $# -eq 0 ]; then echo "Usage: $0 " From 506c6da73c654e79fb852c159c6af1a3547ace01 Mon Sep 17 00:00:00 2001 From: irisdingbj Date: Fri, 7 Jun 2024 22:38:35 +0000 Subject: [PATCH 5/6] fix wait error Signed-off-by: irisdingbj --- .github/workflows/scripts/e2e/gmc_test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scripts/e2e/gmc_test.sh b/.github/workflows/scripts/e2e/gmc_test.sh index c6940927..17e520da 100755 --- a/.github/workflows/scripts/e2e/gmc_test.sh +++ b/.github/workflows/scripts/e2e/gmc_test.sh @@ -57,7 +57,7 @@ function validate_chatqna() { # Wait until the tgi pod is ready TGI_POD_NAME=$(kubectl get pods --namespace=$APP_NAMESPACE | grep ^tgi-service | awk '{print $1}') kubectl describe pod $TGI_POD_NAME -n $APP_NAMESPACE - kubectl wait --for=condition=ready pod/TGI_POD_NAME --namespace=$APP_NAMESPACE --timeout=300s + kubectl wait --for=condition=ready pod/$TGI_POD_NAME --namespace=$APP_NAMESPACE --timeout=300s # deploy client pod for testing From 5045aae5b974d3a58285e9f017b80d2425401c75 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 7 Jun 2024 22:38:49 +0000 Subject: [PATCH 6/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .github/workflows/go-e2e.yaml | 2 +- .github/workflows/scripts/e2e/gmc_test.sh | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/go-e2e.yaml b/.github/workflows/go-e2e.yaml index eb111c91..894fc792 100644 --- a/.github/workflows/go-e2e.yaml +++ b/.github/workflows/go-e2e.yaml @@ -44,7 +44,7 @@ jobs: make docker.build make docker.push - - name: Install GMC + - name: Install GMC run: | echo "should_cleanup=true" >> $GITHUB_ENV .github/workflows/scripts/e2e/gmc_test.sh install_gmc diff --git a/.github/workflows/scripts/e2e/gmc_test.sh b/.github/workflows/scripts/e2e/gmc_test.sh index 17e520da..86a4aacb 100755 --- a/.github/workflows/scripts/e2e/gmc_test.sh +++ b/.github/workflows/scripts/e2e/gmc_test.sh @@ -174,4 +174,3 @@ case "$1" in echo "Unknown function: $1" ;; esac -