Explorar o código

swarm/pss: fix data race in notify_test.go (TestStart) (#18518)

Ferenc Szabo %!s(int64=6) %!d(string=hai) anos
pai
achega
6167dd65b5
Modificáronse 1 ficheiros con 11 adicións e 4 borrados
  1. 11 4
      swarm/pss/notify/notify_test.go

+ 11 - 4
swarm/pss/notify/notify_test.go

@@ -128,7 +128,7 @@ func TestStart(t *testing.T) {
 	defer rightSub.Unsubscribe()
 
 	updateC := make(chan []byte)
-	updateMsg := []byte{}
+	var updateMsg []byte
 	ctrlClient := NewController(psses[rightPub])
 	ctrlNotifier := NewController(psses[leftPub])
 	ctrlNotifier.NewNotifier("foo.eth", 2, updateC)
@@ -145,17 +145,24 @@ func TestStart(t *testing.T) {
 	if err != nil {
 		t.Fatal(err)
 	}
+
+	copyOfUpdateMsg := make([]byte, len(updateMsg))
+	copy(copyOfUpdateMsg, updateMsg)
+	ctrlClientError := make(chan error, 1)
 	ctrlClient.Subscribe(rsrcName, pubkey, addrbytes, func(s string, b []byte) error {
-		if s != "foo.eth" || !bytes.Equal(updateMsg, b) {
-			t.Fatalf("unexpected result in client handler: '%s':'%x'", s, b)
+		if s != "foo.eth" || !bytes.Equal(copyOfUpdateMsg, b) {
+			ctrlClientError <- fmt.Errorf("unexpected result in client handler: '%s':'%x'", s, b)
+		} else {
+			log.Info("client handler receive", "s", s, "b", b)
 		}
-		log.Info("client handler receive", "s", s, "b", b)
 		return nil
 	})
 
 	var inMsg *pss.APIMsg
 	select {
 	case inMsg = <-rmsgC:
+	case err := <-ctrlClientError:
+		t.Fatal(err)
 	case <-ctx.Done():
 		t.Fatal(ctx.Err())
 	}