I'm trying to write a test for a channel handler that starts a scheduled job. When invoking such a code path the follwing exception is thrown:
[main] INFO org.jboss.aerogear.simplepush.server.netty.ReaperHandler - Creating UserAgentReaper job : 2000
[main] ERROR io.netty.handler.codec.sockjs.transports.WebSocketSendHandler - Caught :
java.lang.UnsupportedOperationException
at io.netty.util.concurrent.AbstractEventExecutor.scheduleAtFixedRate(AbstractEventExecutor.java:127)
at org.jboss.aerogear.simplepush.server.netty.ReaperHandler.userEventTriggered(ReaperHandler.java:51)
at io.netty.channel.DefaultChannelHandlerContext.invokeUserEventTriggered(DefaultChannelHandlerContext.java:336)
at io.netty.channel.DefaultChannelHandlerContext.fireUserEventTriggered(DefaultChannelHandlerContext.java:321)
at io.netty.channel.ChannelInboundHandlerAdapter.userEventTriggered(ChannelInboundHandlerAdapter.java:109)
at io.netty.channel.DefaultChannelHandlerContext.invokeUserEventTriggered(DefaultChannelHandlerContext.java:336)
at io.netty.channel.DefaultChannelHandlerContext.fireUserEventTriggered(DefaultChannelHandlerContext.java:321)
at io.netty.channel.DefaultChannelPipeline.fireUserEventTriggered(DefaultChannelPipeline.java:774)
at org.jboss.aerogear.simplepush.server.netty.SimplePushSockJSService.onOpen(SimplePushSockJSService.java:63)
The test is using an EmbeddedChannel which has a EmbeddedEventLoop which extends AbstractEventExecutor. EmbeddedEventLoop does not override the scheduleAtFixedRate and the the scheduleAtFixedRate method in AbstractEventExcecutor simple throws java.lang.UnsupportedOperationException.
So how can I enable a job to be executed?
For testing it would be fine if it only executed once, at least for my current use case.