Skip to content

Commit 0610220

Browse files
committed
Added DEBUG log statement, added more unit tests and annotated integraration test as Feature
Patch for Regex when source org is null. This refer to #RESTCOMM-1579
1 parent b327d3c commit 0610220

4 files changed

Lines changed: 111 additions & 1 deletion

File tree

restcomm/restcomm.interpreter/src/main/java/org/restcomm/connect/interpreter/NumberSelectorService.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,26 @@ public NumberSelectionResult searchNumberWithResult(String phone,
296296
}
297297
}
298298
}
299+
}
300+
if (numberfound.number == null) {
301+
if (logger.isDebugEnabled()) {
302+
StringBuffer stringBuffer = new StringBuffer();
303+
304+
stringBuffer.append("NumberSelectionService didn't match a number because: ");
299305

306+
if (destinationOrganizationSid == null) {
307+
stringBuffer.append(" - Destination Org is null - ");
308+
} else if (sourceOrganizationSid != null && !destinationOrganizationSid.equals(sourceOrganizationSid)) {
309+
stringBuffer.append(" - Source Org is NOT null and DOESN'T match the Destination Org - ");
310+
} else if (!phone.matches("[\\d,*,#,+]+")) {
311+
String msg = String.format(" - Phone %s doesn't match regex \"[\\\\d,*,#,+]+\" - ", phone);
312+
stringBuffer.append(msg);
313+
} else {
314+
String msg = String.format(" - Phone %s didn't match any of the Regex - ",phone);
315+
stringBuffer.append(msg);
316+
}
317+
logger.debug(stringBuffer.toString());
318+
}
300319
}
301320
return numberfound;
302321
}

restcomm/restcomm.interpreter/src/test/java/org/restcomm/connect/interpreter/NumberSelectorServiceTest.java

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,66 @@ public void testRegexMatchFromNullSrcOrg() {
284284
Assert.assertEquals(longestRegex, found.getPhoneNumber());
285285
inOrder.verify(numDao, times(2)).getIncomingPhoneNumbersByFilter((IncomingPhoneNumberFilter) any());
286286
inOrder.verify(numDao, times(1)).getIncomingPhoneNumbersRegex((IncomingPhoneNumberFilter) any());
287+
}
288+
289+
@Test
290+
public void testRegexFailToMatchBecauseOfPhone() {
291+
Sid srcSid = null;
292+
Sid destSid = Sid.generate(Sid.Type.ORGANIZATION);
293+
String regex = "12.*";
294+
String longestRegex = "123.*";
295+
List<IncomingPhoneNumber> emptyNumbers = new ArrayList();
296+
List<IncomingPhoneNumber> numbers = new ArrayList();
297+
final IncomingPhoneNumber.Builder builder = IncomingPhoneNumber.builder();
298+
builder.setPhoneNumber(regex);
299+
numbers.add(builder.build());
300+
builder.setPhoneNumber(longestRegex);
301+
numbers.add(builder.build());
302+
IncomingPhoneNumbersDao numDao = Mockito.mock(IncomingPhoneNumbersDao.class);
303+
when(numDao.getTotalIncomingPhoneNumbers((IncomingPhoneNumberFilter) any())).
304+
thenReturn(1,1);
305+
when(numDao.getIncomingPhoneNumbersByFilter((IncomingPhoneNumberFilter) any())).
306+
thenReturn(emptyNumbers, emptyNumbers);
307+
when(numDao.getIncomingPhoneNumbersRegex((IncomingPhoneNumberFilter) any())).
308+
thenReturn(numbers);
309+
InOrder inOrder = inOrder(numDao);
310+
NumberSelectorService service = new NumberSelectorService(numDao);
287311

312+
IncomingPhoneNumber found = service.searchNumber("7788", srcSid, destSid);
313+
314+
Assert.assertNull(found);
315+
inOrder.verify(numDao, times(4)).getIncomingPhoneNumbersByFilter((IncomingPhoneNumberFilter) any());
316+
inOrder.verify(numDao, never()).getIncomingPhoneNumbersRegex((IncomingPhoneNumberFilter) any());
288317
}
289318

319+
320+
@Test
321+
public void testRegexFailToMatchBecauseDestOrgNull() {
322+
Sid srcSid = Sid.generate(Sid.Type.ORGANIZATION);
323+
Sid destSid = null;
324+
String regex = "12.*";
325+
String longestRegex = "123.*";
326+
List<IncomingPhoneNumber> emptyNumbers = new ArrayList();
327+
List<IncomingPhoneNumber> numbers = new ArrayList();
328+
final IncomingPhoneNumber.Builder builder = IncomingPhoneNumber.builder();
329+
builder.setPhoneNumber(regex);
330+
numbers.add(builder.build());
331+
builder.setPhoneNumber(longestRegex);
332+
numbers.add(builder.build());
333+
IncomingPhoneNumbersDao numDao = Mockito.mock(IncomingPhoneNumbersDao.class);
334+
when(numDao.getTotalIncomingPhoneNumbers((IncomingPhoneNumberFilter) any())).
335+
thenReturn(1,1);
336+
when(numDao.getIncomingPhoneNumbersByFilter((IncomingPhoneNumberFilter) any())).
337+
thenReturn(emptyNumbers, emptyNumbers);
338+
when(numDao.getIncomingPhoneNumbersRegex((IncomingPhoneNumberFilter) any())).
339+
thenReturn(numbers);
340+
InOrder inOrder = inOrder(numDao);
341+
NumberSelectorService service = new NumberSelectorService(numDao);
342+
343+
IncomingPhoneNumber found = service.searchNumber("1234", srcSid, destSid);
344+
345+
Assert.assertNull(found);
346+
inOrder.verify(numDao, times(2)).getIncomingPhoneNumbersByFilter((IncomingPhoneNumberFilter) any());
347+
inOrder.verify(numDao, never()).getIncomingPhoneNumbersRegex((IncomingPhoneNumberFilter) any());
348+
}
290349
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
3+
4+
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
5+
<appender name="rolling-file" class="org.apache.log4j.RollingFileAppender">
6+
<!--keep logs under maven target dir for git ginore and cleaning -->
7+
<!--use arquillian system property to make file names unique across forks -->
8+
<param name="file" value="target/logs/sip-server${arquillian_sip_port}.log" />
9+
<param name="MaxFileSize" value="20000KB" />
10+
<!-- Keep one backup file -->
11+
<param name="MaxBackupIndex" value="20" />
12+
<param name="append" value="false"/>
13+
<layout class="org.apache.log4j.PatternLayout">
14+
<param name="ConversionPattern" value="%p %t %l - %m%n" />
15+
</layout>
16+
</appender>
17+
<appender name="console" class="org.apache.log4j.ConsoleAppender">
18+
<param name="Target" value="System.out" />
19+
<layout class="org.apache.log4j.PatternLayout">
20+
<param name="ConversionPattern" value="%d{HH:mm:ss,SSS} %p %t %l - %m%n" />
21+
</layout>
22+
</appender>
23+
<logger name="org.mobicents.servlet.sip.annotations">
24+
<level value="INFO" />
25+
</logger>
26+
<root>
27+
<priority value="DEBUG" />
28+
<appender-ref ref="console" />
29+
<appender-ref ref="rolling-file" />
30+
</root>
31+
</log4j:configuration>

restcomm/restcomm.testsuite/src/test/java/org/restcomm/connect/testsuite/telephony/CallRegexNullSrcOrgTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.junit.experimental.categories.Category;
4242
import org.junit.runner.RunWith;
4343
import org.restcomm.connect.commons.Version;
44+
import org.restcomm.connect.commons.annotations.FeatureExpTests;
4445
import org.restcomm.connect.commons.annotations.ParallelClassTests;
4546
import org.restcomm.connect.testsuite.NetworkPortAssigner;
4647
import org.restcomm.connect.testsuite.WebArchiveUtil;
@@ -78,7 +79,7 @@
7879
*
7980
*/
8081
@RunWith(Arquillian.class)
81-
@Category(value={ParallelClassTests.class})
82+
@Category(value={ParallelClassTests.class, FeatureExpTests.class})
8283
public class CallRegexNullSrcOrgTest {
8384

8485
private final static Logger logger = Logger.getLogger(CallRegexNullSrcOrgTest.class.getName());

0 commit comments

Comments
 (0)