package dslab.monitoring; import dslab.rmi.channel.DatagramReadOnlyChannel; import dslab.util.MonitoringConfig; import dslab.util.TransferServerConfig; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ErrorCollector; import java.net.DatagramSocket; import static dslab.TestObjects.*; import static dslab.protocol.MessageBuilder.aMessage; import static org.hamcrest.CoreMatchers.containsString; public class MonitoringClientTest { private final ErrorCollector err = new ErrorCollector(); @Test(timeout = 2000) //timeout because this test blocks forever if it fails public void shouldReportTwiceForMessageToTwoRecipients() throws Exception { //arrange var monitoring = new MonitoringClient(new TransferServerConfig("transfer-1")); var channel = new DatagramReadOnlyChannel(new DatagramSocket(new MonitoringConfig().udpPort())); //act monitoring.report(aMessage() .recipients(arthurAtEarthPlanet, trillianAtEarthPlanet) .sender(zaphodAtUniverZe) .build()); //assert err.checkThat(channel.read(), containsString("zaphod@univer.ze")); err.checkThat(channel.read(), containsString("zaphod@univer.ze")); //cleanup channel.close(); } }