I don't know if I have understood your suggestion correctly, but I have put a print inside the function that is registered as callback in the streamIncomingGossips function (so before sending the gossip packet the node passed as parameter to the callback, in the channel). Then I have put another print in the go routine that is called for every node, to set the flag inside the result map of the node, at the entry of the message received, to true. Basically sometimes it happens that: the callback is called, the message is sent into the channel, but the go routine in the test does not receive the message. It's a very odd behaviour that manifests itself when there is a lot of traffic. The only possible reason for not printing would be to receive a gossip with field rumor == nil.
I have investigate that and I found something very odd.
For example I am getting "node J missing msg 0 from E". In the logs the following is stated:
- J calls callback with msg 0 from E
- message 0 from E is sent to the channel
-message 0 from E is never received. The channel does not even contain a packet with rumor == nil (I put a print before checking if rumor is nil).