socket.io-client-java
socket.io-client-java copied to clipboard
SocketIO ThreadPoolExecuter error while unit-testing
I am trying to unit test the SocketIO connection established using RxJava2 from Android Studio. Although I have added TrampolineScheduler
as a rule but still it throws the following error whenever the state is going to change to EVENT_CONNECT
, for other states it never shows this error:
Jan 30, 2018 12:20:00 PM io.socket.thread.EventThread$2 run
SEVERE: Task threw exception
java.lang.NullPointerException
at io.socket.engineio.client.HandshakeData.<init>(HandshakeData.java:21)
at io.socket.engineio.client.HandshakeData.<init>(HandshakeData.java:16)
at io.socket.engineio.client.Socket.onPacket(Socket.java:539)
at io.socket.engineio.client.Socket.access$1000(Socket.java:36)
at io.socket.engineio.client.Socket$5.call(Socket.java:335)
at io.socket.emitter.Emitter.emit(Emitter.java:117)
at io.socket.engineio.client.Transport.onPacket(Transport.java:126)
at io.socket.engineio.client.transports.Polling.access$700(Polling.java:18)
at io.socket.engineio.client.transports.Polling$2.call(Polling.java:127)
at io.socket.engineio.parser.Parser.decodePayload(Parser.java:241)
at io.socket.engineio.client.transports.Polling._onData(Polling.java:135)
at io.socket.engineio.client.transports.Polling.onData(Polling.java:102)
at io.socket.engineio.client.transports.PollingXHR$5$1.run(PollingXHR.java:125)
at io.socket.thread.EventThread$2.run(EventThread.java:80)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "EventThread" java.lang.NullPointerException
at io.socket.engineio.client.HandshakeData.<init>(HandshakeData.java:21)
at io.socket.engineio.client.HandshakeData.<init>(HandshakeData.java:16)
at io.socket.engineio.client.Socket.onPacket(Socket.java:539)
at io.socket.engineio.client.Socket.access$1000(Socket.java:36)
at io.socket.engineio.client.Socket$5.call(Socket.java:335)
at io.socket.emitter.Emitter.emit(Emitter.java:117)
at io.socket.engineio.client.Transport.onPacket(Transport.java:126)
at io.socket.engineio.client.transports.Polling.access$700(Polling.java:18)
at io.socket.engineio.client.transports.Polling$2.call(Polling.java:127)
at io.socket.engineio.parser.Parser.decodePayload(Parser.java:241)
at io.socket.engineio.client.transports.Polling._onData(Polling.java:135)
at io.socket.engineio.client.transports.Polling.onData(Polling.java:102)
at io.socket.engineio.client.transports.PollingXHR$5$1.run(PollingXHR.java:125)
at io.socket.thread.EventThread$2.run(EventThread.java:80)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
@zishanj Did you resolved this issue?
It's probably because the library uses JSONObject to retrieve data from the handshake. JSONObject by default is not included when running android unit tests, hence the NullPointerException.
try adding the below to the module's build.gradle:
testImplementation: 'org.json:json:20140107
@ethand91 it works. Thank you!