Added partial subscribe and unsubscribe logic

This commit is contained in:
Ziver Koc 2018-11-08 22:09:54 +01:00
parent a1caa8b0e1
commit f175830fae
6 changed files with 164 additions and 21 deletions

View file

@ -2,10 +2,7 @@ package zutil.net.mqtt;
import org.junit.Test;
import zutil.net.mqtt.MqttBroker.MqttConnectionThread;
import zutil.net.mqtt.packet.MqttPacketDisconnect;
import zutil.net.mqtt.packet.MqttPacketHeader;
import zutil.net.mqtt.packet.MqttPacketPingReq;
import zutil.net.mqtt.packet.MqttPacketPingResp;
import zutil.net.mqtt.packet.*;
import java.io.IOException;
import java.util.LinkedList;
@ -24,12 +21,40 @@ public class MqttBrokerTest {
}
}
@Test
public void subscribeEmpty() throws IOException {
MqttConnectionMockThread thread = new MqttConnectionMockThread();
MqttPacketSubscribe subscribePacket = new MqttPacketSubscribe();
subscribePacket.packetId = (int)(Math.random()*1000);
thread.handlePacket(subscribePacket);
MqttPacketHeader responsePacket = thread.sentPackets.poll();
assertEquals(MqttPacketSubscribeAck.class, responsePacket.getClass());
assertEquals(subscribePacket.packetId, ((MqttPacketSubscribeAck)responsePacket).packetId);
}
@Test
public void unsubscribe() throws IOException {
MqttConnectionMockThread thread = new MqttConnectionMockThread();
MqttPacketUnsubscribe unsubscribePacket = new MqttPacketUnsubscribe();
unsubscribePacket.packetId = (int)(Math.random()*1000);
thread.handlePacket(unsubscribePacket);
MqttPacketHeader responsePacket = thread.sentPackets.poll();
assertEquals(MqttPacketUnsubscribeAck.class, responsePacket.getClass());
assertEquals(unsubscribePacket.packetId, ((MqttPacketUnsubscribeAck)responsePacket).packetId);
}
@Test
public void ping() throws IOException {
MqttConnectionMockThread thread = new MqttConnectionMockThread();
MqttPacketPingReq pingPacket = new MqttPacketPingReq();
assertEquals(MqttPacketPingResp.class, thread.handlePacket(pingPacket).getClass());
thread.handlePacket(pingPacket);
assertEquals(MqttPacketPingResp.class, thread.sentPackets.poll().getClass());
}
@Test
@ -37,7 +62,9 @@ public class MqttBrokerTest {
MqttConnectionMockThread thread = new MqttConnectionMockThread();
MqttPacketDisconnect disconnectPacket = new MqttPacketDisconnect();
assertEquals(null, thread.handlePacket(disconnectPacket));
thread.handlePacket(disconnectPacket);
assertEquals(null, thread.sentPackets.poll());
assertTrue(thread.isShutdown());
}
}