use of org.tinyradius.io.client.timeout.TimeoutHandler in project tinyradius-netty by globalreachtech.
the class RadiusClientTest method communicateEndpointListFirstSuccess.
@Test
void communicateEndpointListFirstSuccess() throws RadiusPacketException {
final byte id = (byte) random.nextInt(256);
final RadiusResponse response = RadiusResponse.create(DefaultDictionary.INSTANCE, (byte) 2, id, null, Collections.emptyList());
final CapturingOutboundHandler capturingOutboundHandler = spy(new CapturingOutboundHandler(p -> p.trySuccess(response)));
final RadiusClient radiusClient = new RadiusClient(bootstrap, address, timeoutHandler, capturingOutboundHandler);
final InetSocketAddress address2 = new InetSocketAddress(1);
// never used
final RadiusEndpoint stubEndpoint2 = new RadiusEndpoint(address2, "secret2");
final InetSocketAddress address3 = new InetSocketAddress(2);
// never used
final RadiusEndpoint stubEndpoint3 = new RadiusEndpoint(address3, "secret3");
final List<RadiusEndpoint> endpoints = Arrays.asList(stubEndpoint, stubEndpoint2, stubEndpoint3);
final RadiusRequest request = RadiusRequest.create(dictionary, (byte) 1, (byte) 1, null, Collections.emptyList());
final Future<RadiusResponse> future = radiusClient.communicate(request, endpoints);
await().until(future::isDone);
assertTrue(future.isSuccess());
assertEquals(response, future.getNow());
assertEquals(1, capturingOutboundHandler.requests.size());
assertEquals("secret", capturingOutboundHandler.requests.get(0).getEndpoint().getSecret());
}
use of org.tinyradius.io.client.timeout.TimeoutHandler in project tinyradius-netty by globalreachtech.
the class RadiusClientTest method communicateEndpointListEmpty.
@Test
void communicateEndpointListEmpty() throws RadiusPacketException {
final Exception expectedException = new Exception("test 123");
final CapturingOutboundHandler capturingOutboundHandler = spy(new CapturingOutboundHandler(p -> p.tryFailure(expectedException)));
final RadiusClient radiusClient = new RadiusClient(bootstrap, address, timeoutHandler, capturingOutboundHandler);
final RadiusRequest request = RadiusRequest.create(dictionary, (byte) 1, (byte) 1, null, Collections.emptyList());
final Future<RadiusResponse> future = radiusClient.communicate(request, Collections.emptyList());
await().until(future::isDone);
assertFalse(future.isSuccess());
assertTrue(future.cause().getMessage().contains("no valid endpoints"));
}
use of org.tinyradius.io.client.timeout.TimeoutHandler in project tinyradius-netty by globalreachtech.
the class RadiusClientTest method communicateWithTimeout.
@Test
void communicateWithTimeout() throws RadiusPacketException {
RadiusClient radiusClient = new RadiusClient(bootstrap, address, timeoutHandler, new CapturingOutboundHandler(a -> {
}));
final RadiusRequest request = RadiusRequest.create(dictionary, (byte) 1, (byte) 1, null, Collections.emptyList());
final TimeoutException e = assertThrows(TimeoutException.class, () -> radiusClient.communicate(request, stubEndpoint).syncUninterruptibly());
assertTrue(e.getMessage().toLowerCase().contains("max attempts reached"));
verify(timeoutHandler).onTimeout(any(), anyInt(), any());
}
Aggregations