You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@yunikorn.apache.org by ma...@apache.org on 2026/07/28 06:18:38 UTC

(yunikorn-core) branch master updated: [YUNIKORN-3337] Fix race condition in webservice unit tests (#1109)

This is an automated email from the ASF dual-hosted git repository.

manirajv06 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/yunikorn-core.git


The following commit(s) were added to refs/heads/master by this push:
     new 4055294d [YUNIKORN-3337] Fix race condition in webservice unit tests (#1109)
4055294d is described below

commit 4055294d7c9edec1843377a5a9de507c9d707ee8
Author: PoiBlackTea <ki...@gmail.com>
AuthorDate: Tue Jul 28 11:48:20 2026 +0530

    [YUNIKORN-3337] Fix race condition in webservice unit tests (#1109)
    
    Add waitForServerReady helper in webservice_test.go using common.WaitForCondition() and net.DialTimeout() to prevent connection refused failures during local test execution.
    
    Closes: #1109
    
    Signed-off-by: mani <ma...@gmail.com>
---
 pkg/webservice/webservice_test.go | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/pkg/webservice/webservice_test.go b/pkg/webservice/webservice_test.go
index 128023e6..aeec0f62 100644
--- a/pkg/webservice/webservice_test.go
+++ b/pkg/webservice/webservice_test.go
@@ -23,22 +23,38 @@ import (
 	"compress/gzip"
 	"fmt"
 	"io"
+	"net"
 	"net/http"
 	"strings"
 	"testing"
+	"time"
 
 	"gotest.tools/v3/assert"
 
+	"github.com/apache/yunikorn-core/pkg/common"
 	"github.com/apache/yunikorn-core/pkg/metrics/history"
 	"github.com/apache/yunikorn-core/pkg/scheduler"
 )
 
 const base = "http://localhost:9080"
 
+func waitForServerReady(t *testing.T) {
+	err := common.WaitForCondition(10*time.Millisecond, 3*time.Second, func() bool {
+		conn, err := net.DialTimeout("tcp", net.JoinHostPort("127.0.0.1", "9080"), 100*time.Millisecond)
+		if err == nil {
+			defer conn.Close()
+			return true
+		}
+		return false
+	})
+	assert.NilError(t, err, "webapp failed to start in 3 seconds")
+}
+
 func Test_RedirectDebugHandler(t *testing.T) {
 	defer ResetIMHistory()
 	s := NewWebApp(&scheduler.ClusterContext{}, history.NewInternalMetricsHistory(5))
 	s.StartWebApp()
+	waitForServerReady(t)
 	defer func(s *WebService) {
 		err := s.StopWebApp()
 		if err != nil {
@@ -74,6 +90,7 @@ func Test_RedirectDebugHandler(t *testing.T) {
 func Test_RouterHandling(t *testing.T) {
 	s := NewWebApp(&scheduler.ClusterContext{}, nil)
 	s.StartWebApp()
+	waitForServerReady(t)
 	defer func(s *WebService) {
 		err := s.StopWebApp()
 		if err != nil {
@@ -112,6 +129,7 @@ func Test_RouterHandling(t *testing.T) {
 func Test_HeaderChecks(t *testing.T) {
 	s := NewWebApp(&scheduler.ClusterContext{}, nil)
 	s.StartWebApp()
+	waitForServerReady(t)
 	defer func(s *WebService) {
 		err := s.StopWebApp()
 		if err != nil {
@@ -173,6 +191,7 @@ func Test_GzipCompression(t *testing.T) {
 
 	s := NewWebApp(&scheduler.ClusterContext{}, nil)
 	s.StartWebApp()
+	waitForServerReady(t)
 	defer func() {
 		if err := s.StopWebApp(); err != nil {
 			t.Fatal("failed to stop webapp")
@@ -249,6 +268,7 @@ func Test_GzipCompression(t *testing.T) {
 func Test_GzipMinCompressionSize(t *testing.T) {
 	s := NewWebApp(&scheduler.ClusterContext{}, nil)
 	s.StartWebApp()
+	waitForServerReady(t)
 	defer func() {
 		if err := s.StopWebApp(); err != nil {
 			t.Fatal("failed to stop webapp")
@@ -315,6 +335,7 @@ func Test_GzipClientAcceptsGzip(t *testing.T) {
 func Test_GzipExcludesEventStream(t *testing.T) {
 	s := NewWebApp(&scheduler.ClusterContext{}, nil)
 	s.StartWebApp()
+	waitForServerReady(t)
 	defer func() {
 		if err := s.StopWebApp(); err != nil {
 			t.Fatal("failed to stop webapp")
@@ -345,6 +366,7 @@ func Test_GzipVaryHeaderNotDuplicated(t *testing.T) {
 
 	s := NewWebApp(&scheduler.ClusterContext{}, nil)
 	s.StartWebApp()
+	waitForServerReady(t)
 	defer func() {
 		if err := s.StopWebApp(); err != nil {
 			t.Fatal("failed to stop webapp")


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@yunikorn.apache.org
For additional commands, e-mail: issues-help@yunikorn.apache.org