Coder Social home page Coder Social logo

Comments (9)

xiangpingjiang avatar xiangpingjiang commented on June 21, 2024

/assign

from client.

dsimansk avatar dsimansk commented on June 21, 2024

The original issue is not fixed. We need to further investigate & verify the wait loop is working as expected and maybe fix ti.

@xiangpingjiang I'll remove your previous assignment. But feel free to assign again and do a second pass if you are still interested.

from client.

xiangpingjiang avatar xiangpingjiang commented on June 21, 2024

The original issue is not fixed. We need to further investigate & verify the wait loop is working as expected and maybe fix ti.

@xiangpingjiang I'll remove your previous assignment. But feel free to assign again and do a second pass if you are still interested.

@dsimansk
Did you find that e2e/TestDomain not pass after #1888 merged?

from client.

dsimansk avatar dsimansk commented on June 21, 2024

The original issue is not fixed. We need to further investigate & verify the wait loop is working as expected and maybe fix ti.
@xiangpingjiang I'll remove your previous assignment. But feel free to assign again and do a second pass if you are still interested.

@dsimansk Did you find that e2e/TestDomain not pass after #1888 merged?

Yes. E.g.: https://prow.knative.dev/view/gs/knative-prow/pr-logs/pull/knative_client/1901/integration-tests-latest-release_client_main/1729841947746504704

from client.

xiangpingjiang avatar xiangpingjiang commented on June 21, 2024

/assign

from client.

dsimansk avatar dsimansk commented on June 21, 2024

The suspicious part in test log is the following. See age: field is 1s, URL is still empty, but the test is already failed with missing string error.

There's still possibility to a short timeout (e.g. 3 - 5s) between create and verify operations. But I'd rather check first if the wait loop is working as expected.

domain_mapping_test.go:153: assertion failed: 
        Actual output: Name:       newdomain.com
        Namespace:  kne2etests21
        Age:        1s
        
        URL:  
        
        Reference:     
          APIVersion:  serving.knative.dev/v1
          Kind:        Service
          Name:        hello
        
        Conditions:  
          OK TYPE    AGE REASON
        
        Missing strings: https://newdomain.com/

from client.

Ipppoooo avatar Ipppoooo commented on June 21, 2024

It could be a timing related issue. This may work better for the for loop

func domainDescribe(r *test.KnRunResultCollector, domainName string, tls bool) {
	k := test.NewKubectl(r.KnTest().Kn().Namespace())

	// Wait for Domain Mapping URL to be populated
	var url string
	timeout := time.After(30 * time.Second) // Adjust the timeout as needed

	for {
		select {
		case <-time.After(time.Second):
			out, err := k.Run("get", "domainmapping", domainName, "-o=jsonpath='{.status.url}'")
			assert.NilError(r.T(), err)

			if len(out) > 0 {
				url = out
				break
			}
		case <-timeout:
			assert.Fail(r.T(), "Timed out waiting for the domain mapping URL to be populated")
			return
		}
	}

	out := r.KnTest().Kn().Run("domain", "describe", domainName)
	r.AssertNoError(out)

	if tls {
		url = "https://" + domainName
	} else {
		url = "http://" + domainName
	}

	assert.Assert(r.T(), util.ContainsAll(out.Stdout, "Name", "Namespace", "URL", "Service", url))
}

By introducing this more robust waiting mechanism, you can mitigate timing issues and reduce the likelihood of intermittent test failures.

from client.

rhuss avatar rhuss commented on June 21, 2024

Thanks @Ipppoooo , i think its worth a try. Maybe don't retry every second as this will cause 30 calls if this is a non-recoverable error. Maybe use e.g. 5seconds or an exponential backoff. Fancy to send in a PR ?

from client.

xiangpingjiang avatar xiangpingjiang commented on June 21, 2024

hello @rhuss
I think the reason maybe the break condition in for loop is len(out) > 0, but the assert condition is util.ContainsAll(out.Stdout, "Name", "Namespace", "URL", "Service", url).

It's different conditions.

What do you think?

from client.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.