PeerAddress upa = unreachablePeer.peerBean().serverPeerAddress();
upa = upa.changeFirewalledTCP(true).changeFirewalledUDP(true);
unreachablePeer.peerBean().serverPeerAddress(upa);
// find neighbors
FutureBootstrap futureBootstrap = unreachablePeer.bootstrap().peerAddress(peers[0].peerAddress()).start();
futureBootstrap.awaitUninterruptibly();
Assert.assertTrue(futureBootstrap.isSuccess());
// setup relay
PeerNAT uNat = new PeerBuilderNAT(unreachablePeer).relayType(relayType).gcmServerCredentials(gcmServerCredentials).peerMapUpdateInterval(5).start();
FutureRelayNAT startRelay = uNat.startRelay(peers[0].peerAddress()).awaitUninterruptibly();
Assert.assertTrue(startRelay.isSuccess());
mockGCM(peers, uNat);
// find neighbors again
futureBootstrap = unreachablePeer.bootstrap().peerAddress(peers[0].peerAddress()).start();
futureBootstrap.awaitUninterruptibly();
Assert.assertTrue(futureBootstrap.isSuccess());
boolean otherPeersHaveRelay = false;
for (Peer peer : peers) {
if (peer.peerBean().peerMap().allOverflow().contains(unreachablePeer.peerAddress())) {