Skip to content

Commit cd92b19

Browse files
committed
improve test / mocking support
1 parent bd314bf commit cd92b19

File tree

8 files changed

+290
-167
lines changed

8 files changed

+290
-167
lines changed

src/net/sharksystem/asap/apps/ASAPPeerServices.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22

33
public interface ASAPPeerServices extends
44
ASAPMessageSender,
5-
ASAPEnvironmentChangesListenerManagement
5+
ASAPEnvironmentChangesListenerManagement,
6+
ASAPMessageReceivedListenerManagement
67
{}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package net.sharksystem.asap.apps.mock;
2+
3+
import net.sharksystem.asap.apps.ASAPEnvironmentChangesListener;
4+
import net.sharksystem.asap.apps.ASAPMessageReceivedListener;
5+
import net.sharksystem.asap.apps.ASAPPeerServices;
6+
import net.sharksystem.asap.listenermanager.ASAPEnvironmentChangesListenerManager;
7+
import net.sharksystem.asap.listenermanager.ASAPMessageReceivedListenerManager;
8+
9+
public abstract class ASAPBasicAbstractPeer implements ASAPPeerServices {
10+
protected final CharSequence peerName;
11+
12+
protected ASAPBasicAbstractPeer(CharSequence peerName) {
13+
this.peerName = peerName;
14+
}
15+
16+
////////////////////////////////////////////////////////////////////////////////////////////////////////
17+
// ASAPMessageReceivedListener //
18+
////////////////////////////////////////////////////////////////////////////////////////////////////////
19+
protected ASAPMessageReceivedListenerManager asapMessageReceivedListenerManager =
20+
new ASAPMessageReceivedListenerManager();
21+
22+
public void addASAPMessageReceivedListener(CharSequence format, ASAPMessageReceivedListener listener) {
23+
this.asapMessageReceivedListenerManager.addASAPMessageReceivedListener(format, listener);
24+
}
25+
26+
@Override
27+
public void removeASAPMessageReceivedListener(CharSequence format, ASAPMessageReceivedListener listener) {
28+
this.asapMessageReceivedListenerManager.removeASAPMessageReceivedListener(format, listener);
29+
}
30+
31+
////////////////////////////////////////////////////////////////////////////////////////////////////////
32+
// ASAPEnvironmentChangesListener //
33+
////////////////////////////////////////////////////////////////////////////////////////////////////////
34+
35+
protected ASAPEnvironmentChangesListenerManager environmentChangesListenerManager =
36+
new ASAPEnvironmentChangesListenerManager();
37+
38+
@Override
39+
public void addASAPEnvironmentChangesListener(ASAPEnvironmentChangesListener changesListener) {
40+
this.environmentChangesListenerManager.addASAPEnvironmentChangesListener(changesListener);
41+
}
42+
43+
@Override
44+
public void removeASAPEnvironmentChangesListener(ASAPEnvironmentChangesListener changesListener) {
45+
this.environmentChangesListenerManager.removeASAPEnvironmentChangesListener(changesListener);
46+
}
47+
48+
////////////////////////////////////////////////////////////////////////////////////////////////////////
49+
// util //
50+
////////////////////////////////////////////////////////////////////////////////////////////////////////
51+
52+
protected void log(String msg) {
53+
StringBuilder sb = new StringBuilder();
54+
sb.append(this.peerName);
55+
sb.append(": ");
56+
sb.append(msg);
57+
58+
System.out.println(sb.toString());
59+
}
60+
}

src/net/sharksystem/asap/apps/mock/ASAPPeerMock.java

+33-77
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,9 @@
1414
* test your applications logic without any fear of ASAP bugs.
1515
*
1616
*/
17-
public class ASAPPeerMock implements ASAPPeerServices {
18-
private final CharSequence peerName;
19-
private boolean connected = false;
20-
17+
public class ASAPPeerMock extends ASAPBasicAbstractPeer implements ASAPPeerServices {
2118
public ASAPPeerMock(CharSequence peerName) {
22-
this.peerName = peerName;
19+
super(peerName);
2320
}
2421

2522
public ASAPPeerMock() {
@@ -86,6 +83,37 @@ private void takeMessages(ASAPPeerMock asapPeerMock, int tmpEra, Map<CharSequenc
8683
}
8784
}
8885

86+
private void notifyMessagesReceived(Map<CharSequence, Map<CharSequence, List<byte[]>>> appUriMessages) {
87+
// notify about new messages == simulate sending
88+
for(CharSequence appName : appUriMessages.keySet()) {
89+
Map<CharSequence, List<byte[]>> appMap = appUriMessages.get(appName);
90+
if(appMap != null) {
91+
Set<CharSequence> uris = appMap.keySet();
92+
for(CharSequence uri : uris) {
93+
List<byte[]> serializedAppPDUs = appMap.get(uri);
94+
ASAPMessages messagesMock = new ASAPMessagesMock(appName, uri, serializedAppPDUs);
95+
this.asapMessageReceivedListenerManager.notifyReceived(appName, messagesMock, true);
96+
}
97+
}
98+
}
99+
}
100+
101+
private void notifyMessageReceived() {
102+
Map<CharSequence, Map<CharSequence, List<byte[]>>> appUriMessages = null;
103+
synchronized(this.appMsgStorage) {
104+
if(this.appMsgStorage.isEmpty()) return; // nothing to do
105+
// else copy
106+
appUriMessages = this.appMsgStorage;
107+
// create empty
108+
this.appMsgStorage = new HashMap<>();
109+
110+
// now: new message can be written and do not disturb notification process
111+
}
112+
113+
// notify about new messages == simulate sending
114+
this.notifyMessagesReceived(appUriMessages);
115+
}
116+
89117
private CharSequence getPeerName() {
90118
return this.peerName;
91119
}
@@ -134,78 +162,6 @@ public void sendASAPMessage(CharSequence appName, CharSequence uri, byte[] messa
134162
List<byte[]> storage = this.getStorage(appName, uri);
135163
storage.add(message);
136164
}
137-
138-
if(this.connected) this.notifyMessageReceived();
139-
}
140-
141-
////////////////////////////////////////////////////////////////////////////////////////////////////////
142-
// ASAPMessageReceivedListener //
143-
////////////////////////////////////////////////////////////////////////////////////////////////////////
144-
private ASAPMessageReceivedListenerManager asapMessageReceivedListenerManager =
145-
new ASAPMessageReceivedListenerManager();
146-
147-
public void addASAPMessageReceivedListener(CharSequence format, ASAPMessageReceivedListener listener) {
148-
this.asapMessageReceivedListenerManager.addASAPMessageReceivedListener(format, listener);
149-
}
150-
151-
private void notifyMessagesReceived(Map<CharSequence, Map<CharSequence, List<byte[]>>> appUriMessages) {
152-
// notify about new messages == simulate sending
153-
for(CharSequence appName : appUriMessages.keySet()) {
154-
Map<CharSequence, List<byte[]>> appMap = appUriMessages.get(appName);
155-
if(appMap != null) {
156-
Set<CharSequence> uris = appMap.keySet();
157-
for(CharSequence uri : uris) {
158-
List<byte[]> serializedAppPDUs = appMap.get(uri);
159-
ASAPMessages messagesMock = new ASAPMessagesMock(appName, uri, serializedAppPDUs);
160-
this.asapMessageReceivedListenerManager.notifyReceived(appName, messagesMock, true);
161-
}
162-
}
163-
}
164-
}
165-
166-
private void notifyMessageReceived() {
167-
Map<CharSequence, Map<CharSequence, List<byte[]>>> appUriMessages = null;
168-
synchronized(this.appMsgStorage) {
169-
if(this.appMsgStorage.isEmpty()) return; // nothing to do
170-
// else copy
171-
appUriMessages = this.appMsgStorage;
172-
// create empty
173-
this.appMsgStorage = new HashMap<>();
174-
175-
// now: new message can be written and do not disturb notification process
176-
}
177-
178-
// notify about new messages == simulate sending
179-
this.notifyMessagesReceived(appUriMessages);
180165
}
181166

182-
////////////////////////////////////////////////////////////////////////////////////////////////////////
183-
// ASAPEnvironmentChangesListener //
184-
////////////////////////////////////////////////////////////////////////////////////////////////////////
185-
186-
private ASAPEnvironmentChangesListenerManager environmentChangesListenerManager =
187-
new ASAPEnvironmentChangesListenerManager();
188-
189-
@Override
190-
public void addASAPEnvironmentChangesListener(ASAPEnvironmentChangesListener changesListener) {
191-
this.environmentChangesListenerManager.addASAPEnvironmentChangesListener(changesListener);
192-
}
193-
194-
@Override
195-
public void removeASAPEnvironmentChangesListener(ASAPEnvironmentChangesListener changesListener) {
196-
this.environmentChangesListenerManager.removeASAPEnvironmentChangesListener(changesListener);
197-
}
198-
199-
////////////////////////////////////////////////////////////////////////////////////////////////////////
200-
// util //
201-
////////////////////////////////////////////////////////////////////////////////////////////////////////
202-
203-
private void log(String msg) {
204-
StringBuilder sb = new StringBuilder();
205-
sb.append(this.peerName);
206-
sb.append(": ");
207-
sb.append(msg);
208-
209-
System.out.println(sb.toString());
210-
}
211167
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package net.sharksystem.asap.apps.mock;
2+
3+
import net.sharksystem.asap.ASAPException;
4+
import net.sharksystem.asap.apps.ASAPPeerServices;
5+
6+
public class ASAPSimplePeer extends ASAPBasicAbstractPeer implements ASAPPeerServices {
7+
8+
protected ASAPSimplePeer(CharSequence peerName) {
9+
super(peerName);
10+
}
11+
12+
@Override
13+
public void sendASAPMessage(CharSequence appName, CharSequence uri, byte[] message) throws ASAPException {
14+
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package net.sharksystem.asap.mock;
2+
3+
import net.sharksystem.asap.ASAPMessages;
4+
import net.sharksystem.asap.apps.ASAPMessageReceivedListener;
5+
6+
import java.io.IOException;
7+
import java.util.Iterator;
8+
9+
class ASAPMessageReceivedListenerExample implements ASAPMessageReceivedListener {
10+
private final String peerName;
11+
12+
ASAPMessageReceivedListenerExample(String peerName) {
13+
this.peerName = peerName;
14+
}
15+
16+
ASAPMessageReceivedListenerExample() {
17+
this(null);
18+
}
19+
20+
@Override
21+
public void asapMessagesReceived(ASAPMessages messages) throws IOException {
22+
CharSequence format = messages.getFormat();
23+
CharSequence uri = messages.getURI();
24+
if (peerName != null) {
25+
System.out.print(peerName);
26+
}
27+
28+
System.out.println("asap message received (" + format + " | " + uri + "). size == " + messages.size());
29+
Iterator<byte[]> yourPDUIter = messages.getMessages();
30+
while (yourPDUIter.hasNext()) {
31+
TestUtils.deserializeExample(yourPDUIter.next());
32+
}
33+
}
34+
}

0 commit comments

Comments
 (0)