socket.io-client-java icon indicating copy to clipboard operation
socket.io-client-java copied to clipboard

SocketIO ThreadPoolExecuter error while unit-testing

Open zishanj opened this issue 7 years ago • 3 comments

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 avatar Jan 30 '18 07:01 zishanj

@zishanj Did you resolved this issue?

ganeshvl avatar Feb 06 '19 10:02 ganeshvl

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 avatar Dec 23 '19 02:12 ethand91

@ethand91 it works. Thank you!

Gongcu avatar Jul 19 '21 01:07 Gongcu