public class ReuseSessionStrategyTest extends Object implements Supplier<SessionStrategyTestHelper.TestContext>
Modifier and Type | Class and Description |
---|---|
(package private) class |
ReuseSessionStrategyTest.ReuseSessionTestContext |
Modifier and Type | Field and Description |
---|---|
(package private) List<com.cloudhopper.smpp.SmppSession> |
allSessions |
(package private) com.cloudhopper.smpp.SmppClient |
client1 |
(package private) com.cloudhopper.smpp.SmppClient |
client2 |
(package private) List<com.cloudhopper.smpp.SmppClient> |
clients |
LoggingTestRule |
loggingRule |
org.mockito.junit.MockitoRule |
mockito |
(package private) SmppClientSupplier |
supplier |
Constructor and Description |
---|
ReuseSessionStrategyTest() |
Modifier and Type | Method and Description |
---|---|
void |
cleanup() |
SessionStrategyTestHelper.TestContext |
get() |
void |
reuseSession()
┌─────────┐ ┌─────────┐
│ Client │ │ Server │
└────┬────┘ └────┬────┘
│ ├─┐ start()
│ │<┘
│ │
│ │
├─┐ send(Sms(sms content 1 / session 1)) │
│<┘ │
│ connect [session 1] │
├─────────────────────────────────────────────>│
│ connected │
│<─────────────────────────────────────────────┤
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
: :
: wait for expiration of last request (200ms) : (?) expiration is configured to 100ms (=> need to send EnquireLink)
: :
│ │
│ │
├─┐ send(Sms(sms content 2 / session 1)) │
│<┘ │
│ send EnquireLink │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
: :
: wait for expiration of last request (200ms) : (?) expiration is configured to 100ms (=> need to send EnquireLink)
: :
│ │
│ │
├─┐ send(Sms(sms content 3 / session 1)) │
│<┘ │
│ send EnquireLink │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
|
void |
reuseSessionButEnquireLinkTimeout()
┌─────────┐ ┌─────────┐
│ Client │ │ Server │
└────┬────┘ └────┬────┘
│ ├─┐ start()
│ │<┘
│ │
│ │
├─┐ send(Sms(sms content 1 / session 1)) │
│<┘ │
│ connect [session 1] │
├─────────────────────────────────────────────>│
│ connected │
│<─────────────────────────────────────────────┤
│ │
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
: :
: wait for expiration of last request (50ms) : (?) expiration is configured to 20ms
: :
│ │
│ │
├─┐ send(Sms(sms content 2 / session 2)) │
│<┘ │
│ send EnquireLink │
├─────────────────────────────────────────────>│
│ ├─┐ wait(300ms)
├─┐ timeout (100ms) │ │
│<┘ │ │
│ │ :
│ │
│ unbind [session 1] │
├─────────────────────────────────────────────>│
│ disconnected │
│<─────────────────────────────────────────────┤
│ │
│ connect [session 2] │
├─────────────────────────────────────────────>│
│ connected │
│<─────────────────────────────────────────────┤
│ │
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
|
void |
reuseSessionButSendFailsDueToSessionClosedByServer()
┌─────────┐ ┌─────────┐
│ Client │ │ Server │
└────┬────┘ └────┬────┘
│ ├─┐ start()
│ │<┘
│ │
│ │
├─┐ send(Sms(sms content 1 / session 1)) │
│<┘ │
│ connect [session 1] │
├─────────────────────────────────────────────>│
│ connected │
│<─────────────────────────────────────────────┤
│ │
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
│ ├─┐ stop() (?) session is closed by the server => need a new session
│ │<┘
│ │
├─┐ send(Sms(can't be sent)) │
│<┘ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ /!\ failure │
│<─────────────────────────────────────────────┤
│ │
├─┐ closing [session 1] │
│<┘ │
│ unbind [session 1] │
├─────────────────────────────────────────────>│
│ disconnected │
│<─────────────────────────────────────────────┤
│ │
: ├─┐ start()
: │<┘
: wait for server ready │
: │
: │
├─┐ send(Sms(sms content 2 / session 2)) │
│<┘ │
│ connect [session 2] │
├─────────────────────────────────────────────>│
│ connected │
│<─────────────────────────────────────────────┤
│ │
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
│ │
│ ├─┐ wait(200ms)
│ │<┘
: :
: wait for expiration of last request (200ms) : (?) expiration is configured to 100ms (=> need to send EnquireLink)
: :
│ │
│ │
│ │
├─┐ send(Sms(sms content 3 / session 2)) │
│<┘ │
│ send EnquireLink │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
|
void |
reuseSessionButSessionClosedByServer()
┌─────────┐ ┌─────────┐
│ Client │ │ Server │
└────┬────┘ └────┬────┘
│ ├─┐ start()
│ │<┘
│ │
│ │
├─┐ send(Sms(sms content 1 / session 1)) │
│<┘ │
│ connect [session 1] │
├─────────────────────────────────────────────>│
│ connected │
│<─────────────────────────────────────────────┤
│ │
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
: :
: wait for expiration of last request (200ms) : (?) expiration is configured to 100ms (=> need to send EnquireLink)
: :
│ │
│ │
├─┐ send(Sms(sms content 2 / session 1)) │
│<┘ │
│ send EnquireLink │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ ├─┐ wait(200ms)
│ │<┘
: :
: wait for expiration of last request (200ms) : (?) expiration is configured to 100ms (=> need to send EnquireLink)
: :
│ │
│ │
: :
: wait for reception of messages :
: :
│ │
│ ├─┐ stop() (?) session is closed by the server => need a new session
│ │<┘
│ ├─┐ start()
│ │<┘
│ │
├─┐ send(Sms(sms content 3 / session 2)) │
│<┘ │
│ send EnquireLink │
├─────────────────────────────────────────────>│
│ /!\ failure │ (?) ClosedChannelException
│<─────────────────────────────────────────────┤
├─┐ closing [session 1] │
│<┘ │
│ │
│ connect [session 2] │
├─────────────────────────────────────────────>│
│ connected │
│<─────────────────────────────────────────────┤
│ │
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
│ │
│ │
├─┐ send(Sms(sms content 4 / session 2)) │
│<┘ │
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
|
void |
setup() |
public final LoggingTestRule loggingRule
public final org.mockito.junit.MockitoRule mockito
@Spy com.cloudhopper.smpp.SmppClient client1
@Spy com.cloudhopper.smpp.SmppClient client2
List<com.cloudhopper.smpp.SmppClient> clients
List<com.cloudhopper.smpp.SmppSession> allSessions
@Spy SmppClientSupplier supplier
public void setup() throws IOException
IOException
public void cleanup() throws SmppServerException
SmppServerException
public void reuseSession() throws Exception
┌─────────┐ ┌─────────┐
│ Client │ │ Server │
└────┬────┘ └────┬────┘
│ ├─┐ start()
│ │<┘
│ │
│ │
├─┐ send(Sms(sms content 1 / session 1)) │
│<┘ │
│ connect [session 1] │
├─────────────────────────────────────────────>│
│ connected │
│<─────────────────────────────────────────────┤
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
: :
: wait for expiration of last request (200ms) : (?) expiration is configured to 100ms (=> need to send EnquireLink)
: :
│ │
│ │
├─┐ send(Sms(sms content 2 / session 1)) │
│<┘ │
│ send EnquireLink │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
: :
: wait for expiration of last request (200ms) : (?) expiration is configured to 100ms (=> need to send EnquireLink)
: :
│ │
│ │
├─┐ send(Sms(sms content 3 / session 1)) │
│<┘ │
│ send EnquireLink │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
Exception
public void reuseSessionButSessionClosedByServer() throws Exception
┌─────────┐ ┌─────────┐
│ Client │ │ Server │
└────┬────┘ └────┬────┘
│ ├─┐ start()
│ │<┘
│ │
│ │
├─┐ send(Sms(sms content 1 / session 1)) │
│<┘ │
│ connect [session 1] │
├─────────────────────────────────────────────>│
│ connected │
│<─────────────────────────────────────────────┤
│ │
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
: :
: wait for expiration of last request (200ms) : (?) expiration is configured to 100ms (=> need to send EnquireLink)
: :
│ │
│ │
├─┐ send(Sms(sms content 2 / session 1)) │
│<┘ │
│ send EnquireLink │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ ├─┐ wait(200ms)
│ │<┘
: :
: wait for expiration of last request (200ms) : (?) expiration is configured to 100ms (=> need to send EnquireLink)
: :
│ │
│ │
: :
: wait for reception of messages :
: :
│ │
│ ├─┐ stop() (?) session is closed by the server => need a new session
│ │<┘
│ ├─┐ start()
│ │<┘
│ │
├─┐ send(Sms(sms content 3 / session 2)) │
│<┘ │
│ send EnquireLink │
├─────────────────────────────────────────────>│
│ /!\ failure │ (?) ClosedChannelException
│<─────────────────────────────────────────────┤
├─┐ closing [session 1] │
│<┘ │
│ │
│ connect [session 2] │
├─────────────────────────────────────────────>│
│ connected │
│<─────────────────────────────────────────────┤
│ │
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
│ │
│ │
├─┐ send(Sms(sms content 4 / session 2)) │
│<┘ │
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
Exception
public void reuseSessionButEnquireLinkTimeout() throws Exception
┌─────────┐ ┌─────────┐
│ Client │ │ Server │
└────┬────┘ └────┬────┘
│ ├─┐ start()
│ │<┘
│ │
│ │
├─┐ send(Sms(sms content 1 / session 1)) │
│<┘ │
│ connect [session 1] │
├─────────────────────────────────────────────>│
│ connected │
│<─────────────────────────────────────────────┤
│ │
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
: :
: wait for expiration of last request (50ms) : (?) expiration is configured to 20ms
: :
│ │
│ │
├─┐ send(Sms(sms content 2 / session 2)) │
│<┘ │
│ send EnquireLink │
├─────────────────────────────────────────────>│
│ ├─┐ wait(300ms)
├─┐ timeout (100ms) │ │
│<┘ │ │
│ │ :
│ │
│ unbind [session 1] │
├─────────────────────────────────────────────>│
│ disconnected │
│<─────────────────────────────────────────────┤
│ │
│ connect [session 2] │
├─────────────────────────────────────────────>│
│ connected │
│<─────────────────────────────────────────────┤
│ │
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
Exception
public void reuseSessionButSendFailsDueToSessionClosedByServer() throws Exception
┌─────────┐ ┌─────────┐
│ Client │ │ Server │
└────┬────┘ └────┬────┘
│ ├─┐ start()
│ │<┘
│ │
│ │
├─┐ send(Sms(sms content 1 / session 1)) │
│<┘ │
│ connect [session 1] │
├─────────────────────────────────────────────>│
│ connected │
│<─────────────────────────────────────────────┤
│ │
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
│ ├─┐ stop() (?) session is closed by the server => need a new session
│ │<┘
│ │
├─┐ send(Sms(can't be sent)) │
│<┘ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ /!\ failure │
│<─────────────────────────────────────────────┤
│ │
├─┐ closing [session 1] │
│<┘ │
│ unbind [session 1] │
├─────────────────────────────────────────────>│
│ disconnected │
│<─────────────────────────────────────────────┤
│ │
: ├─┐ start()
: │<┘
: wait for server ready │
: │
: │
├─┐ send(Sms(sms content 2 / session 2)) │
│<┘ │
│ connect [session 2] │
├─────────────────────────────────────────────>│
│ connected │
│<─────────────────────────────────────────────┤
│ │
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
│ │
│ ├─┐ wait(200ms)
│ │<┘
: :
: wait for expiration of last request (200ms) : (?) expiration is configured to 100ms (=> need to send EnquireLink)
: :
│ │
│ │
│ │
├─┐ send(Sms(sms content 3 / session 2)) │
│<┘ │
│ send EnquireLink │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
│ │
│ send SubmitSm │
├─────────────────────────────────────────────>│
│ response │
│<─────────────────────────────────────────────┤
Exception
public SessionStrategyTestHelper.TestContext get()
get
in interface Supplier<SessionStrategyTestHelper.TestContext>
Copyright © 2021. All rights reserved.