Change:
<!-- Please use this template while reporting a bug and provide as much info as possible. Not doing so may result in your bug not being addressed in a timely manner. Thanks! If the matter is security related, please disclose it privately via --Below are the failures while running unit test with golang in master branch. Reference : $ go version go version devel go1.17- Thu Apr 22 01:40:02 2021 +0000 linux/ppc64le Note: Occurs in x86 architecture as well. The tests should Pass as with stable go git clone cd kubernetes make test KUBERACE=-race WHAT=./pkg/scheduler/framework/runtime/ Master branch of kubernetes repo. OS: Linux Observed failure on ppc64le and x86 architectures Below is the attached log:
This issue is currently awaiting triage. If a SIG or subproject determines this is a relevant issue, they will accept it by applying the label and provide further guidance. The label can be by org members by writing in a comment. <detailsInstructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
I request help on getting this triaged. Is there a procedure to follow to get this accepted as a bug?
The Go compiler developer has identified the bugs in the test that is causing it to fail. They are listed in the last comment in the Go issue before closing it.
So the correct way to compare function would be something like would you test it in your env?
The issue still exists. Can you please reopen?
I am not sure if you can access this link for our CI job. Can you please check? https://prow.ppc64le- The above tests have been failing every day in our jobs!
/reopen
Reopened this issue. <detailsIn response to : /reopen Instructions for interacting with me using PR comments are available . If you have questions or suggestions related to my behavior, please file an issue against the repository. </details
downloads go from url="${GOLANGVERSION}.linux-" downloads go from "curl -X GET http://build-?project=build_commit -o " I suspect the postsubmit-master-golang-kubernetes-unit-test-ppc64le failed for wrong golang version. failed for other problems. The TestMerge is not failed. For ppc64le failures, there are several issues in golang: (fixed yesterday)  
Yes the go versions for both the jobs are different and it is intentional: : It is meant to run Kubernetes unit tests with the stable version of golang : It is meant to run Kubernetes unit tests with golang built from the master branch of As I mentioned in the description of this issue, these unit test cases are failing only on golang that is built from master branch and passing with stable versions of golang. And as Lynn mentioned in , the golang team has concluded that these failures are due to the bugs in the test case. And the golang issues that you mentioned do not seem to be related to the failures mentioned in this issue.
With , is false Per , do you mean that we should change to ?
No. In general comparing is the right thing to do. But if the Value is actually a , which is not comparable, comparing will panic.
/sig scheduling
Note from golang team about this bug is here:

Discussion:
"reflect" "testing" <ins> "github.com/google/uuid" </ins> "k8s.io/apimachinery/pkg/runtime" "k8s.io/kubernetes/pkg/scheduler/framework" )

func isRegistryEqual(registryX, registryY Registry) bool { for name, pluginFactory := range registryY { if val, ok := registryX[name]; ok { <del> if reflect.ValueOf(pluginFactory).Pointer() != reflect.ValueOf(val).Pointer() { </del> <ins> p1, _ := pluginFactory(nil, nil) p2, _ := val(nil, nil) if p1.Name() != p2.Name() { </ins> // pluginFactory functions are not the same. return false }

return true } <del> type mockNoopPlugin struct{} </del> <ins> type mockNoopPlugin struct { uuid string } </ins> func (p *mockNoopPlugin) Name() string { <del> return "MockNoop" </del> <ins> return p.uuid </ins> } func NewMockNoopPluginFactory() PluginFactory { <ins> uuid := uuid.New().String() </ins> return func(_ runtime.Object, _ framework.Handle) (framework.Plugin, error) { <del> return &mockNoopPlugin{}, nil </del> <ins> return &mockNoopPlugin{uuid}, nil </ins> } } func TestMerge(t *testing.T) { <ins> m1 := NewMockNoopPluginFactory() m2 := NewMockNoopPluginFactory() </ins> tests := []struct { name            string primaryRegistry Registry

{ name: "valid Merge", primaryRegistry: Registry{ <del> "pluginFactory1": NewMockNoopPluginFactory(), </del> <ins> "pluginFactory1": m1, </ins> }, registryToMerge: Registry{ <del> "pluginFactory2": NewMockNoopPluginFactory(), </del> <ins> "pluginFactory2": m2, </ins> }, expected: Registry{ <del> "pluginFactory1": NewMockNoopPluginFactory(), "pluginFactory2": NewMockNoopPluginFactory(), </del> <ins> "pluginFactory1": m1, "pluginFactory2": m2, </ins> }, shouldError: false, }, { name: "Merge duplicate factories", primaryRegistry: Registry{ <del> "pluginFactory1": NewMockNoopPluginFactory(), </del> <ins> "pluginFactory1": m1, </ins> }, registryToMerge: Registry{ <del> "pluginFactory1": NewMockNoopPluginFactory(), </del> <ins> "pluginFactory1": m2, </ins> }, expected: Registry{ <del> "pluginFactory1": NewMockNoopPluginFactory(), </del> <ins> "pluginFactory1": m1, </ins> }, shouldError: true, },

} func TestRegister(t *testing.T) { <ins> m1 := NewMockNoopPluginFactory() m2 := NewMockNoopPluginFactory() </ins> tests := []struct { name              string registry          Registry

name:              "valid Register", registry:          Registry{}, nameToRegister:    "pluginFactory1", <del> factoryToRegister: NewMockNoopPluginFactory(), </del> <ins> factoryToRegister: m1, </ins> expected: Registry{ <del> "pluginFactory1": NewMockNoopPluginFactory(), </del> <ins> "pluginFactory1": m1, </ins> }, shouldError: false, }, { name: "Register duplicate factories", registry: Registry{ <del> "pluginFactory1": NewMockNoopPluginFactory(), </del> <ins> "pluginFactory1": m1, </ins> }, nameToRegister:    "pluginFactory1", <del> factoryToRegister: NewMockNoopPluginFactory(), </del> <ins> factoryToRegister: m2, </ins> expected: Registry{ <del> "pluginFactory1": NewMockNoopPluginFactory(), </del> <ins> "pluginFactory1": m1, </ins> }, shouldError: true, },

} func TestUnregister(t *testing.T) { <ins> m1 := NewMockNoopPluginFactory() m2 := NewMockNoopPluginFactory() </ins> tests := []struct { name             string registry         Registry

{ name: "valid Unregister", registry: Registry{ <del> "pluginFactory1": NewMockNoopPluginFactory(), "pluginFactory2": NewMockNoopPluginFactory(), </del> <ins> "pluginFactory1": m1, "pluginFactory2": m2, </ins> }, nameToUnregister: "pluginFactory1", expected: Registry{ <del> "pluginFactory2": NewMockNoopPluginFactory(), </del> <ins> "pluginFactory2": m2, </ins> }, shouldError: false, },