Skip to content

Commit 433f893

Browse files
authored
Update network classes and finalize reorganiozation (#48)
* rename network packets * update tests
1 parent af16712 commit 433f893

File tree

194 files changed

+3251
-3329
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

194 files changed

+3251
-3329
lines changed

application/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ dependencies {
1212
implementation libs.springboot.starter.log4j2
1313

1414
testImplementation projects.testSupport
15+
testImplementation testFixtures(projects.network)
1516
}
1617

1718
tasks.withType(GroovyCompile).configureEach {

application/src/main/java/javasabr/mqtt/broker/application/config/MqttBrokerSpringConfig.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import javasabr.mqtt.service.MessageOutFactoryService;
1717
import javasabr.mqtt.service.PublishDeliveringService;
1818
import javasabr.mqtt.service.PublishReceivingService;
19-
import javasabr.mqtt.service.SessionService;
2019
import javasabr.mqtt.service.SubscriptionService;
2120
import javasabr.mqtt.service.handler.client.ExternalMqttClientReleaseHandler;
2221
import javasabr.mqtt.service.impl.DefaultConnectionService;
@@ -27,7 +26,6 @@
2726
import javasabr.mqtt.service.impl.ExternalMqttClientFactory;
2827
import javasabr.mqtt.service.impl.FileCredentialsSource;
2928
import javasabr.mqtt.service.impl.InMemoryClientIdRegistry;
30-
import javasabr.mqtt.service.impl.InMemorySessionService;
3129
import javasabr.mqtt.service.impl.SimpleAuthenticationService;
3230
import javasabr.mqtt.service.impl.SimpleSubscriptionService;
3331
import javasabr.mqtt.service.message.handler.MqttInMessageHandler;
@@ -51,6 +49,8 @@
5149
import javasabr.mqtt.service.publish.handler.impl.Qos1MqttPublishOutMessageHandler;
5250
import javasabr.mqtt.service.publish.handler.impl.Qos2MqttPublishInMessageHandler;
5351
import javasabr.mqtt.service.publish.handler.impl.Qos2MqttPublishOutMessageHandler;
52+
import javasabr.mqtt.service.session.MqttSessionService;
53+
import javasabr.mqtt.service.session.impl.InMemoryMqttSessionService;
5454
import javasabr.rlib.network.NetworkFactory;
5555
import javasabr.rlib.network.ServerNetworkConfig;
5656
import javasabr.rlib.network.server.ServerNetwork;
@@ -76,9 +76,9 @@ ClientIdRegistry clientIdRegistry(Environment env) {
7676
}
7777

7878
@Bean
79-
SessionService mqttSessionService(
79+
MqttSessionService mqttSessionService(
8080
@Value("${sessions.clean.thread.interval:60000}") int cleanInterval) {
81-
return new InMemorySessionService(cleanInterval);
81+
return new InMemoryMqttSessionService(cleanInterval);
8282
}
8383

8484
@Bean
@@ -119,7 +119,7 @@ MessageOutFactoryService mqttMessageOutFactoryService(
119119
MqttInMessageHandler connectInMqttInMessageHandler(
120120
ClientIdRegistry clientIdRegistry,
121121
AuthenticationService authenticationService,
122-
SessionService sessionService,
122+
MqttSessionService sessionService,
123123
SubscriptionService subscriptionService,
124124
MessageOutFactoryService messageOutFactoryService) {
125125
return new ConnectInMqttInMessageHandler(
@@ -244,7 +244,7 @@ PublishReceivingService publishReceivingService(
244244
@Bean
245245
MqttClientReleaseHandler externalMqttClientReleaseHandler(
246246
ClientIdRegistry clientIdRegistry,
247-
SessionService sessionService,
247+
MqttSessionService sessionService,
248248
SubscriptionService subscriptionService) {
249249
return new ExternalMqttClientReleaseHandler(clientIdRegistry, sessionService, subscriptionService);
250250
}

application/src/test/groovy/javasabr/mqtt/application/integration/InternalConnectionTest.groovy

Lines changed: 0 additions & 39 deletions
This file was deleted.

application/src/test/groovy/javasabr/mqtt/application/network/in/BaseInPacketTest.groovy

Lines changed: 0 additions & 6 deletions
This file was deleted.

application/src/test/groovy/javasabr/mqtt/application/network/out/BaseOutPacketTest.groovy

Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package javasabr.mqtt.application.integration
1+
package javasabr.mqtt.broker.application
22

33
import com.hivemq.client.mqtt.datatypes.MqttQos
44
import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package javasabr.mqtt.application.integration
1+
package javasabr.mqtt.broker.application
22

33
import com.hivemq.client.mqtt.mqtt3.exceptions.Mqtt3ConnAckException
44
import com.hivemq.client.mqtt.mqtt3.message.connect.connack.Mqtt3ConnAckReturnCode
@@ -7,8 +7,8 @@ import com.hivemq.client.mqtt.mqtt5.message.connect.connack.Mqtt5ConnAckReasonCo
77
import javasabr.mqtt.model.MqttProperties
88
import javasabr.mqtt.model.QoS
99
import javasabr.mqtt.model.reason.code.ConnectAckReasonCode
10-
import javasabr.mqtt.network.packet.in.ConnectAckInPacket
11-
import javasabr.mqtt.network.packet.out.Connect311OutPacket
10+
import javasabr.mqtt.network.message.in.ConnectAckMqttInMessage
11+
import javasabr.mqtt.network.message.out.ConnectMqtt311OutMessage
1212
import javasabr.rlib.common.util.ArrayUtils
1313
import spock.lang.Ignore
1414

@@ -148,7 +148,7 @@ class ExternalConnectionTest extends IntegrationSpecification {
148148
when:
149149

150150
client.connect()
151-
client.send(new Connect311OutPacket(
151+
client.send(new ConnectMqtt311OutMessage(
152152
"",
153153
"",
154154
clientId,
@@ -160,7 +160,7 @@ class ExternalConnectionTest extends IntegrationSpecification {
160160
false
161161
))
162162

163-
def connectAck = client.readNext() as ConnectAckInPacket
163+
def connectAck = client.readNext() as ConnectAckMqttInMessage
164164

165165
then:
166166
connectAck.reasonCode == ConnectAckReasonCode.BAD_USER_NAME_OR_PASSWORD
Lines changed: 57 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
1-
package javasabr.mqtt.application.integration
1+
package javasabr.mqtt.broker.application
22

33
import com.hivemq.client.mqtt.MqttClient
44
import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient
55
import com.hivemq.client.mqtt.mqtt5.Mqtt5AsyncClient
6-
import javasabr.mqtt.application.integration.config.MqttBrokerTestConfig
7-
import javasabr.mqtt.application.mock.MqttMockClient
6+
import javasabr.mqtt.broker.application.config.MqttBrokerTestConfig
7+
import javasabr.mqtt.model.MqttClientConnectionConfig
88
import javasabr.mqtt.model.MqttProperties
99
import javasabr.mqtt.model.MqttServerConnectionConfig
1010
import javasabr.mqtt.model.MqttVersion
1111
import javasabr.mqtt.network.MqttConnection
12+
import javasabr.mqtt.network.MqttMockClient
1213
import org.springframework.beans.factory.annotation.Autowired
1314
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig
1415
import spock.lang.Specification
1516

1617
import java.nio.charset.StandardCharsets
1718
import java.util.concurrent.atomic.AtomicInteger
19+
import java.util.concurrent.atomic.AtomicReference
1820

1921
import static javasabr.mqtt.network.MqttClient.UnsafeMqttClient
2022

@@ -32,28 +34,17 @@ class IntegrationSpecification extends Specification {
3234
@Autowired
3335
InetSocketAddress externalNetworkAddress
3436

35-
@Autowired
36-
InetSocketAddress internalNetworkAddress
37-
3837
@Autowired
3938
MqttServerConnectionConfig externalConnectionConfig
4039

4140
def buildExternalMqtt311Client() {
4241
return buildMqtt311Client(generateClientId(), externalNetworkAddress)
4342
}
4443

45-
def buildInternalMqtt311Client() {
46-
return buildMqtt311Client(generateClientId(), internalNetworkAddress)
47-
}
48-
4944
def buildExternalMqtt5Client() {
5045
return buildMqtt5Client(generateClientId(), externalNetworkAddress)
5146
}
5247

53-
def buildInternalMqtt5Client() {
54-
return buildMqtt5Client(generateClientId(), internalNetworkAddress)
55-
}
56-
5748
def buildExternalMqtt311Client(String clientId) {
5849
return MqttClient.builder()
5950
.identifier(clientId)
@@ -71,7 +62,7 @@ class IntegrationSpecification extends Specification {
7162
.serverPort(address.getPort())
7263
.useMqttVersion3()
7364
.addDisconnectedListener {
74-
println "[${clientId}|mqtt311] disconnected:[$it.cause]"
65+
println "[${clientId}|mqtt311] disconnected:[${it.cause.message}]"
7566
}
7667
.build()
7768
.toAsync()
@@ -94,7 +85,7 @@ class IntegrationSpecification extends Specification {
9485
.serverPort(address.getPort())
9586
.useMqttVersion5()
9687
.addDisconnectedListener {
97-
println "[${clientId}|mqtt5] disconnected:[$it.cause]"
88+
println "[${clientId}|mqtt5] disconnected:[${it.cause.message}]"
9889
}
9990
.build()
10091
.toAsync()
@@ -144,38 +135,65 @@ class IntegrationSpecification extends Specification {
144135
)
145136
}
146137

147-
def mqtt5MockedConnection(MqttServerConnectionConfig deviceConnectionConfig) {
148-
149-
return Stub(MqttConnection) {
138+
def mqtt5MockedConnection(MqttServerConnectionConfig serverConnConfig) {
139+
MqttClientConnectionConfig clientConnConfig = new MqttClientConnectionConfig(
140+
serverConnConfig.maxQos(),
141+
MqttVersion.MQTT_5,
142+
MqttProperties.SESSION_EXPIRY_INTERVAL_DISABLED,
143+
serverConnConfig.receiveMaxPublishes(),
144+
serverConnConfig.maxPacketSize(),
145+
serverConnConfig.topicAliasMaxValue(),
146+
MqttProperties.SERVER_KEEP_ALIVE_DEFAULT,
147+
false,
148+
false,
149+
serverConnConfig.sessionsEnabled(),
150+
serverConnConfig.retainAvailable(),
151+
serverConnConfig.wildcardSubscriptionAvailable(),
152+
serverConnConfig.subscriptionIdAvailable(),
153+
serverConnConfig.sharedSubscriptionAvailable())
154+
def connectionRef = new AtomicReference<MqttConnection>()
155+
def connection = Stub(MqttConnection) {
150156
isSupported(MqttVersion.MQTT_5) >> true
151157
isSupported(MqttVersion.MQTT_3_1_1) >> true
152-
serverConnectionConfig() >> deviceConnectionConfig
158+
serverConnectionConfig() >> serverConnConfig
153159
client() >> Stub(UnsafeMqttClient) {
154-
connectionConfig() >> deviceConnectionConfig
155-
sessionExpiryInterval() >> MqttProperties.SESSION_EXPIRY_INTERVAL_DISABLED
156-
receiveMaxPublishes() >> deviceConnectionConfig.receiveMaxPublishes()
157-
maxPacketSize() >> deviceConnectionConfig.maxPacketSize()
158-
clientId() >> IntegrationSpecification.clientId
159-
keepAlive() >> MqttProperties.SERVER_KEEP_ALIVE_DEFAULT
160-
topicAliasMaxValue() >> deviceConnectionConfig.topicAliasMaxValue()
160+
connectionConfig() >> clientConnConfig
161+
connection() >> connectionRef.get()
162+
clientId() >> clientId
161163
}
162164
}
163-
}
164-
165-
def mqtt311MockedConnection(MqttServerConnectionConfig deviceConnectionConfig) {
166-
return Stub(MqttConnection) {
165+
connectionRef.set(connection)
166+
return connection
167+
}
168+
169+
def mqtt311MockedConnection(MqttServerConnectionConfig serverConnConfig) {
170+
MqttClientConnectionConfig clientConnConfig = new MqttClientConnectionConfig(
171+
serverConnConfig.maxQos(),
172+
MqttVersion.MQTT_3_1_1,
173+
MqttProperties.SESSION_EXPIRY_INTERVAL_DISABLED,
174+
serverConnConfig.receiveMaxPublishes(),
175+
serverConnConfig.maxPacketSize(),
176+
serverConnConfig.topicAliasMaxValue(),
177+
MqttProperties.SERVER_KEEP_ALIVE_DEFAULT,
178+
false,
179+
false,
180+
serverConnConfig.sessionsEnabled(),
181+
serverConnConfig.retainAvailable(),
182+
serverConnConfig.wildcardSubscriptionAvailable(),
183+
serverConnConfig.subscriptionIdAvailable(),
184+
serverConnConfig.sharedSubscriptionAvailable())
185+
def connectionRef = new AtomicReference<MqttConnection>()
186+
def connection = Stub(MqttConnection) {
167187
isSupported(MqttVersion.MQTT_5) >> false
168188
isSupported(MqttVersion.MQTT_3_1_1) >> true
169-
serverConnectionConfig() >> deviceConnectionConfig
189+
serverConnectionConfig() >> serverConnConfig
170190
client() >> Stub(UnsafeMqttClient) {
171-
connectionConfig() >> deviceConnectionConfig
172-
sessionExpiryInterval() >> MqttProperties.SESSION_EXPIRY_INTERVAL_DISABLED
173-
receiveMaxPublishes() >> deviceConnectionConfig.receiveMaxPublishes()
174-
maxPacketSize() >> deviceConnectionConfig.maxPacketSize()
175-
clientId() >> IntegrationSpecification.clientId
176-
keepAlive() >> MqttProperties.SERVER_KEEP_ALIVE_DEFAULT
177-
topicAliasMaxValue() >> deviceConnectionConfig.topicAliasMaxValue()
191+
connectionConfig() >> clientConnConfig
192+
connection() >> connectionRef.get()
193+
clientId() >> clientId
178194
}
179195
}
196+
connectionRef.set(connection)
197+
return connection
180198
}
181199
}

0 commit comments

Comments
 (0)