protected void closeNetworks(Map<Integer, CloseableNetwork> networks) { networks.values().stream().forEach(t -> { try { t.close(); } catch (IOException e) { fail("This should never happen"); e.printStackTrace(); } }); }
byte[] receivedData; for (int j = 0; j < numMessages; j++) { receivedData = networks.get(1).receive(2); r.nextBytes(data); networks.get(1).send(2, data); networks.get(1).send(2, data); assertArrayEquals(data, receivedData); networks.get(1).close(); } catch (IOException e) { e.printStackTrace(); for (int j = 0; j < numMessages; j++) { r.nextBytes(data); networks.get(2).send(1, data); receivedData = networks.get(2).receive(1); receivedData = networks.get(2).receive(1); assertArrayEquals(data, receivedData); networks.get(2).close(); } catch (IOException e) { e.printStackTrace();
@Test(expected = RuntimeException.class) public void testStoppedReciever() throws InterruptedException, ExecutionException, IOException { final int numParties = 3; List<NetworkConfiguration> confs = getNetConfs(numParties); ExecutorService es = Executors.newFixedThreadPool(numParties); List<Future<NetworkConnector>> fs = new ArrayList<>(numParties); CloseableNetwork network = null; try { for (int i = 0; i < numParties; i++) { final int id = i; fs.add(es.submit(() -> new Connector(confs.get(id), DEFAULT_CONNECTION_TIMEOUT))); } Map<Integer, Socket> socketMap1 = fs.get(0).get().getSocketMap(); Map<Integer, Socket> socketMap2 = fs.get(1).get().getSocketMap(); network = new SocketNetwork(confs.get(0), socketMap1); new DataOutputStream(socketMap2.get(1).getOutputStream()).writeInt(-1); network.receive(2); } finally { for (Future<NetworkConnector> futureConn : fs) { for (Socket s : futureConn.get().getSocketMap().values()) { s.close(); } } if (network != null) { network.close(); } es.shutdownNow(); } }
@Test(expected = RuntimeException.class) public void testStoppedSender() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException { networks = createNetworks(2); Field f1 = networks.get(1).getClass().getDeclaredField("senders"); f1.setAccessible(true); @SuppressWarnings("unchecked") Sender sender = ((HashMap<Integer, Sender>) f1.get(networks.get(1))).get(2); sender.stop(); networks.get(1).send(2, new byte[] { 0x01 }); f1.setAccessible(false); }
@Test(expected = IllegalArgumentException.class, timeout = TWO_MINUTE_TIMEOUT_MILLIS) public void testReceiveFromNegativePartyId() { networks = createNetworks(1); networks.get(1).receive(-1); }
byte[] receivedData; for (int j = 0; j < numMessages; j++) { receivedData = networks.get(id).receive(k); r.nextBytes(data); assertArrayEquals(data, receivedData); for (int j = 0; j < numMessages; j++) { r.nextBytes(data); networks.get(id).send(numParties, data.clone()); networks.get(id).close(); } catch (IOException e) { e.printStackTrace();
@Test(expected = IllegalArgumentException.class, timeout = TWO_MINUTE_TIMEOUT_MILLIS) public void testSendToTooLargePartyId() { networks = createNetworks(1); networks.get(1).send(2, new byte[] { 0x01 }); }
@Test(expected = IllegalArgumentException.class, timeout = TWO_MINUTE_TIMEOUT_MILLIS) public void testReceiveFromTooLargePartyId() { networks = createNetworks(1); networks.get(1).receive(2); }
@Test(expected = IllegalArgumentException.class, timeout = TWO_MINUTE_TIMEOUT_MILLIS) public void testSendToNegativePartyId() { networks = createNetworks(1); networks.get(1).send(-1, new byte[] { 0x01 }); }
@Test(timeout = TWO_MINUTE_TIMEOUT_MILLIS, expected = RuntimeException.class) public void testReceiveAfterClose() { networks = createNetworks(3); closeNetworks(networks); networks.get(1).receive(2); }
@Test(timeout = TWO_MINUTE_TIMEOUT_MILLIS, expected = RuntimeException.class) public void testSendAfterClose() { networks = createNetworks(3); closeNetworks(networks); networks.get(1).send(2, new byte[] {}); }