From 6d36d20564b6842845cc7fabe7f6d34342657810 Mon Sep 17 00:00:00 2001 From: igooch Date: Thu, 7 Nov 2024 00:23:57 -0800 Subject: [PATCH] Add Shutdown Delay Seconds to the containers (#4030) --- test/sdk/go/Makefile | 2 +- test/sdk/go/sdk-client-test.go | 26 ++++++++++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/test/sdk/go/Makefile b/test/sdk/go/Makefile index 3c3e60551b..45b8d7726a 100644 --- a/test/sdk/go/Makefile +++ b/test/sdk/go/Makefile @@ -29,7 +29,7 @@ project_path := $(dir $(mkfile_path)) root_path = $(realpath $(project_path)/) # Because go mod init in the Dockerfile installs the most recently released version of Agones, this # will need to be built and pushed post-release. During DEV it will be built at DEV - 1. -release_version = 1.43.0 +release_version = 1.44.0 server_tag := $(REGISTRY)/sdk-client-test:$(release_version) # _____ _ diff --git a/test/sdk/go/sdk-client-test.go b/test/sdk/go/sdk-client-test.go index 699c382f7f..6ed365d5ff 100644 --- a/test/sdk/go/sdk-client-test.go +++ b/test/sdk/go/sdk-client-test.go @@ -17,6 +17,7 @@ package main import ( "log" + "os" "strconv" "strings" "time" @@ -38,6 +39,24 @@ func main() { runtime.Must(runtime.FeaturesBindEnv()) runtime.Must(runtime.ParseFeaturesFromEnv()) + // Use to delays to prevent Game Servers from churning too quickly on a running cluster. + shutdownDelaySec := 0 + gracefulTerminationDelaySec := 0 + if sds := os.Getenv("SHUTDOWN_DELAY_SECONDS"); sds != "" { + sec, err := strconv.Atoi(sds) + if err != nil { + log.Fatalf("Could not parse SHUTDOWN_DELAY_SECONDS: %v", err) + } + shutdownDelaySec = sec + } + if gtds := os.Getenv("GRACEFUL_TERMINATION_DELAY_SECONDS"); gtds != "" { + sec, err := strconv.Atoi(gtds) + if err != nil { + log.Fatalf("Could not parse GRACEFUL_TERMINATION_DELAY_SECONDS: %v", err) + } + gracefulTerminationDelaySec = sec + } + log.SetFlags(log.Lshortfile) log.Println("Client is starting") log.Printf("Feature Flags: %s\n", runtime.EncodeFeatures()) @@ -105,13 +124,16 @@ func main() { testLists(sdk) } - // Delay before shutdown to prevent Game Servers from churning too quickly on a running cluster - time.Sleep(8 * time.Second) + log.Printf("Waiting %d seconds before shutting down game server", shutdownDelaySec) + time.Sleep(time.Duration(shutdownDelaySec) * time.Second) err = sdk.Shutdown() if err != nil { log.Fatalf("Could not shutdown GameServer: %s", err) } + + log.Printf("Waiting %d seconds before exiting", gracefulTerminationDelaySec) + time.Sleep(time.Duration(gracefulTerminationDelaySec) * time.Second) } func testPlayerTracking(sdk *goSdk.SDK) {