When I run this test I always get "Expected node X to have received Msg n from Y" (it varies every run). I studied a bit the test and noted that in order to see the packets received by a node the test uses the callback function of the node. So I added debug prints to check whether or not the missing message is being processed by calling correctly the callback, and that's the case for me. If for example I get "Node J is missing message 2 from E", I will see in my logs "J processing msg 2 from E" and "J processed msg 2 from E" ,before and after calling g.Callback with the rumor message. I also added a mutex to manage concurrent calls of the callback, suspecting this was a form of race condition.
Any ideas on the possible problem?