Skip to content

Commit c6eba04

Browse files
MSB-193: Modify CallDetailRecordsDaoTest, add cdr filter by type test
1 parent 1d88565 commit c6eba04

File tree

3 files changed

+60
-8
lines changed

3 files changed

+60
-8
lines changed

restcomm/restcomm.dao/src/test/java/org/restcomm/connect/dao/mybatis/CallDetailRecordsDaoTest.java

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.junit.Before;
3939
import org.junit.Test;
4040
import org.restcomm.connect.commons.dao.Sid;
41+
import org.restcomm.connect.commons.telephony.CreateCallType;
4142
import org.restcomm.connect.dao.CallDetailRecordsDao;
4243
import org.restcomm.connect.dao.entities.CallDetailRecord;
4344
import org.restcomm.connect.dao.entities.CallDetailRecordFilter;
@@ -105,6 +106,7 @@ public void createReadUpdateDelete() {
105106
builder.setApiVersion("2012-04-24");
106107
builder.setCallerName("Alice");
107108
builder.setUri(url);
109+
builder.setType(CreateCallType.PSTN);
108110
CallDetailRecord cdr = builder.build();
109111
final CallDetailRecordsDao cdrs = manager.getCallDetailRecordsDao();
110112
// Create a new CDR in the data store.
@@ -129,6 +131,7 @@ public void createReadUpdateDelete() {
129131
assertTrue(result.getApiVersion().equals(cdr.getApiVersion()));
130132
assertTrue(result.getCallerName().equals(cdr.getCallerName()));
131133
assertTrue(result.getUri().equals(cdr.getUri()));
134+
assertTrue(result.getType().equals(cdr.getType()));
132135
// Update the CDR.
133136
cdr = cdr.setDuration(2);
134137
cdr = cdr.setPrice(new BigDecimal("1.00"));
@@ -147,6 +150,31 @@ public void createReadUpdateDelete() {
147150
assertTrue(cdrs.getCallDetailRecord(sid) == null);
148151
}
149152

153+
@Test
154+
public void testReadByType() {
155+
Sid accountSid = new Sid("AC00000000000000000000000000000001");
156+
CallDetailRecordsDao dao = manager.getCallDetailRecordsDao();
157+
try {
158+
CallDetailRecordFilter filterPSTN = new CallDetailRecordFilter(accountSid.toString(), null, null, null, null, null, null, null, null, 0, 0, CreateCallType.PSTN);
159+
CallDetailRecordFilter filterUSSD = new CallDetailRecordFilter(accountSid.toString(), null, null, null, null, null, null, null, null, 0, 0, CreateCallType.USSD);
160+
CallDetailRecordFilter filterSIP = new CallDetailRecordFilter(accountSid.toString(), null, null, null, null, null, null, null, null, 0, 0, CreateCallType.SIP);
161+
CallDetailRecordFilter filterCLIENT = new CallDetailRecordFilter(accountSid.toString(), null, null, null, null, null, null, null, null, 0, 0, CreateCallType.CLIENT);
162+
List<CallDetailRecord> callsPstn = dao.getCallDetailRecords(filterPSTN);
163+
List<CallDetailRecord> callsUssd = dao.getCallDetailRecords(filterUSSD);
164+
List<CallDetailRecord> callsSip = dao.getCallDetailRecords(filterSIP);
165+
List<CallDetailRecord> callsClient = dao.getCallDetailRecords(filterCLIENT);
166+
Assert.assertEquals(4, callsPstn.size());
167+
Assert.assertEquals(3, callsUssd.size());
168+
Assert.assertEquals(2, callsSip.size());
169+
Assert.assertEquals(1, callsClient.size());
170+
Assert.assertEquals(4, dao.getTotalCallDetailRecords(filterPSTN).intValue());
171+
Assert.assertEquals(3, dao.getTotalCallDetailRecords(filterUSSD).intValue());
172+
Assert.assertEquals(2, dao.getTotalCallDetailRecords(filterSIP).intValue());
173+
Assert.assertEquals(1, dao.getTotalCallDetailRecords(filterCLIENT).intValue());
174+
} catch (ParseException e) {
175+
}
176+
}
177+
150178
@Test
151179
public void testReadDeleteByAccount() {
152180
final Sid sid = Sid.generate(Sid.Type.CALL);
@@ -435,7 +463,7 @@ public void retrieveAccountCdrsRecursively() throws ParseException {
435463
// read from a single account but using the 'accountSidSet' interface
436464
List<String> accountSidSet = new ArrayList<String>();
437465
accountSidSet.add("AC00000000000000000000000000000000");
438-
CallDetailRecordFilter filter = new CallDetailRecordFilter(null, accountSidSet, null, null, null, null, null, null, null, null, null);
466+
CallDetailRecordFilter filter = new CallDetailRecordFilter(null, accountSidSet, null, null, null, null, null, null, null, null, null, null);
439467
Assert.assertEquals(12, dao.getTotalCallDetailRecords(filter).intValue());
440468
// read cdrs of three accounts
441469
accountSidSet.add("AC00000000000000000000000000000000");
@@ -446,13 +474,13 @@ public void retrieveAccountCdrsRecursively() throws ParseException {
446474
accountSidSet.clear();
447475
Assert.assertEquals(0, dao.getTotalCallDetailRecords(filter).intValue());
448476
// if both an accountSid and a accountSid set are passed, only accountSidSet is taken into account
449-
filter = new CallDetailRecordFilter("ACae6e420f425248d6a26948c17a9e2acf", accountSidSet, null, null, null, null, null, null, null, null, null);
477+
filter = new CallDetailRecordFilter("ACae6e420f425248d6a26948c17a9e2acf", accountSidSet, null, null, null, null, null, null, null, null, null, null);
450478
accountSidSet.add("AC00000000000000000000000000000000");
451479
accountSidSet.add("AC11111111111111111111111111111111");
452480
accountSidSet.add("AC22222222222222222222222222222222");
453481
Assert.assertEquals(25, dao.getTotalCallDetailRecords(filter).intValue());
454482
// if no (null) accountSidSet is passed the method still works
455-
filter = new CallDetailRecordFilter("AC00000000000000000000000000000000", null, null, null, null, null, null, null, null, null, null);
483+
filter = new CallDetailRecordFilter("AC00000000000000000000000000000000", null, null, null, null, null, null, null, null, null, null, null);
456484
Assert.assertEquals(12, dao.getTotalCallDetailRecords(filter).intValue());
457485
}
458486
}

restcomm/restcomm.dao/src/test/resources/callDetailRecordsDao/call-detail-records.xml

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,24 @@
66
<mapper namespace="org.mobicents.servlet.sip.restcomm.dao.CallDetailRecordsDao">
77
<insert id="addCallDetailRecord" parameterType="map">
88
INSERT INTO "restcomm_call_detail_records" ("sid", "instanceid", "parent_call_sid", "date_created", "date_updated", "account_sid", "recipient", "sender", "phone_number_sid", "status",
9-
"start_time", "end_time", "duration", "price", "direction", "answered_by", "api_version", "forwarded_from", "caller_name", "uri", "call_path", "ring_duration", "conference_sid", "muted", "start_conference_on_enter", "end_conference_on_exit", "on_hold")
9+
"start_time", "end_time", "duration", "price", "direction", "answered_by", "api_version", "forwarded_from", "caller_name", "uri", "call_path", "ring_duration", "conference_sid", "muted", "start_conference_on_enter", "end_conference_on_exit", "on_hold", "ms_id", "call_type")
1010
VALUES (#{sid}, #{instanceid}, #{parent_call_sid}, #{date_created},
1111
#{date_updated}, #{account_sid}, #{to}, #{from}, #{phone_number_sid}, #{status}, #{start_time}, #{end_time}, #{duration}, #{price}, #{direction},
12-
#{answered_by}, #{api_version}, #{forwarded_from}, #{caller_name}, #{uri}, #{call_path}, #{ring_duration}, #{conference_sid}, #{muted}, #{start_conference_on_enter}, #{end_conference_on_exit}, #{on_hold});
12+
#{answered_by}, #{api_version}, #{forwarded_from}, #{caller_name}, #{uri}, #{call_path}, #{ring_duration}, #{conference_sid}, #{muted}, #{start_conference_on_enter}, #{end_conference_on_exit}, #{on_hold}, #{ms_id}, #{call_type});
1313
</insert>
14-
14+
1515
<select id="getCallDetailRecord" parameterType="string" resultType="hashmap">
1616
SELECT * FROM "restcomm_call_detail_records" WHERE "sid"=#{sid};
1717
</select>
1818

19+
<select id="getInProgressCallsByClientName" parameterType="string" resultType="int">
20+
SELECT COUNT(*) FROM "restcomm_call_detail_records" WHERE (UPPER("status") = ('IN_PROGRESS') OR UPPER("status") = ('IN-PROGRESS')) AND "parent_call_sid" IS NULL AND "sender"=#{sender};
21+
</select>
22+
23+
<select id="getInProgressCallsByAccountSid" parameterType="string" resultType="int">
24+
SELECT COUNT(*) FROM "restcomm_call_detail_records" WHERE (UPPER("status") = ('IN_PROGRESS') OR UPPER("status") = ('IN-PROGRESS')) AND "parent_call_sid" IS NULL AND "account_sid"=#{accountSid};
25+
</select>
26+
1927
<!-- Issue 153: https://bitbucket.org/telestax/telscale-restcomm/issue/153 -->
2028
<!-- Issue 153: https://bitbucket.org/telestax/telscale-restcomm/issue/110 -->
2129
<select id="getTotalCallDetailRecordByUsingFilters" parameterType="org.restcomm.connect.dao.entities.CallDetailRecordFilter" resultType="int">
@@ -62,7 +70,9 @@
6270
<if test="endTime != null">
6371
AND "end_time" &lt;= DATE_ADD(#{endTime},INTERVAL 1 DAY)
6472
</if>
65-
73+
<if test="callType != null">
74+
AND "call_type" = #{callType}
75+
</if>
6676
</select>
6777

6878
<!-- Issue 153: https://bitbucket.org/telestax/telscale-restcomm/issue/153 -->
@@ -111,8 +121,12 @@
111121
<if test="endTime != null">
112122
AND "end_time" &lt;= DATE_ADD(#{endTime},INTERVAL 1 DAY)
113123
</if>
124+
<if test="callType != null">
125+
AND "call_type" = #{callType}
126+
</if>
114127
order by "start_time"
115128
LIMIT #{limit} OFFSET #{offset}
129+
116130
</select>
117131

118132
<!-- Issue 1215: https://github.com/RestComm/Restcomm-Connect/issues/1215 -->

restcomm/restcomm.dao/src/test/resources/callDetailRecordsDao/restcomm.script

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ SET FILES LOG SIZE 200
3232
CREATE USER SA PASSWORD DIGEST 'd41d8cd98f00b204e9800998ecf8427e'
3333
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
3434
SET SCHEMA PUBLIC
35-
CREATE MEMORY TABLE "restcomm_call_detail_records"("sid" VARCHAR(1000) NOT NULL PRIMARY KEY,"parent_call_sid" VARCHAR(1000),"date_created" DATETIME NOT NULL,"date_updated" DATETIME NOT NULL,"account_sid" VARCHAR(34) NOT NULL,"sender" VARCHAR(30) NOT NULL,"recipient" VARCHAR(64) NOT NULL,"phone_number_sid" VARCHAR(34),"status" VARCHAR(20) NOT NULL,"start_time" DATETIME,"end_time" DATETIME,"duration" INTEGER,"price" VARCHAR(8),"direction" VARCHAR(20) NOT NULL,"answered_by" VARCHAR(64),"api_version" VARCHAR(10) NOT NULL,"forwarded_from" VARCHAR(30),"caller_name" VARCHAR(50),"uri" LONGVARCHAR NOT NULL, "call_path" VARCHAR(255),"ring_duration" INTEGER, "instanceid" VARCHAR(255) NOT NULL, "conference_sid" VARCHAR(34),"muted" BOOLEAN, "start_conference_on_enter" BOOLEAN, "end_conference_on_exit" BOOLEAN, "on_hold" BOOLEAN)
35+
CREATE MEMORY TABLE "restcomm_call_detail_records"("sid" VARCHAR(1000) NOT NULL PRIMARY KEY,"parent_call_sid" VARCHAR(1000),"date_created" DATETIME NOT NULL,"date_updated" DATETIME NOT NULL,"account_sid" VARCHAR(34) NOT NULL,"sender" VARCHAR(255) NOT NULL,"recipient" VARCHAR(64) NOT NULL,"phone_number_sid" VARCHAR(34),"status" VARCHAR(20) NOT NULL,"start_time" DATETIME,"end_time" DATETIME,"duration" INTEGER,"price" VARCHAR(8),"direction" VARCHAR(20) NOT NULL,"answered_by" VARCHAR(64),"api_version" VARCHAR(10) NOT NULL,"forwarded_from" VARCHAR(30),"caller_name" VARCHAR(50),"uri" LONGVARCHAR NOT NULL, "call_path" VARCHAR(255),"ring_duration" INTEGER, "instanceid" VARCHAR(255) NOT NULL, "conference_sid" VARCHAR(34),"muted" BOOLEAN, "start_conference_on_enter" BOOLEAN, "end_conference_on_exit" BOOLEAN, "on_hold" BOOLEAN, "ms_id" VARCHAR(34), "call_type" VARCHAR(34))
3636
ALTER SEQUENCE SYSTEM_LOBS.LOB_ID RESTART WITH 1
3737
SET DATABASE DEFAULT INITIAL SCHEMA PUBLIC
3838
GRANT USAGE ON DOMAIN INFORMATION_SCHEMA.SQL_IDENTIFIER TO PUBLIC
@@ -143,3 +143,13 @@ INSERT INTO "restcomm_call_detail_records" VALUES('CA3a28d89482ec4e46a9f1e2ff5c4
143143
INSERT INTO "restcomm_call_detail_records" VALUES('CA3b30eb7cc24f47489f53d9e033385a2a',NULL,'2013-08-22 14:13:30.336000000','2013-08-22 14:13:30.501000000','ACae6e420f425248d6a26948c17a9e2acf','Anonymous','+15126002188',NULL,'in-progress','2013-08-22 14:13:30.501000000',NULL,NULL,'0.00','inbound',NULL,'2012-04-24',NULL,NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA3b30eb7cc24f47489f53d9e033385a2a', NULL,NULL, NULL, NULL, NULL)
144144
INSERT INTO "restcomm_call_detail_records" VALUES('CA3c2386d4942f4028b714c24af404c239',NULL,'2013-08-13 14:14:31.402000000','2013-08-13 14:14:32.519000000','ACae6e420f425248d6a26948c17a9e2acf','19549376176','+15126002188',NULL,'in-progress','2013-08-13 14:14:32.519000000',NULL,NULL,'0.00','inbound',NULL,'2012-04-24',NULL,NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA3c2386d4942f4028b714c24af404c239', NULL,NULL, NULL, NULL, NULL)
145145
INSERT INTO "restcomm_call_detail_records" VALUES('CA3d386ded326f4aba9e495959b0ac5218',NULL,'2013-07-17 14:55:01.225000000','2013-07-17 14:55:01.361000000','ACae6e420f425248d6a26948c17a9e2acf','19549376176','+15126002188',NULL,'in-progress','2013-07-17 14:55:01.361000000',NULL,NULL,'0.00','inbound',NULL,'2012-04-24',NULL,NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA3d386ded326f4aba9e495959b0ac5218', NULL,NULL, NULL, NULL, NULL)
146+
INSERT INTO "restcomm_call_detail_records" VALUES('CA00000000000000000000000000000001',NULL,'2017-11-01 00:00:00.000000000','2017-11-01 00:00:00.000000000','AC00000000000000000000000000000001','19549376176','+15126002188',NULL,'completed','2017-11-01 00:00:00.000000000',NULL,NULL,'0.00','inbound',NULL,'2012-04-24',NULL,NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA00000000000000000000000000000001', NULL,NULL, NULL, NULL, NULL, NULL,NULL, NULL, NULL, 'PSTN')
147+
INSERT INTO "restcomm_call_detail_records" VALUES('CA00000000000000000000000000000002',NULL,'2017-11-01 00:00:00.000000000','2017-11-01 00:00:00.000000000','AC00000000000000000000000000000001','19549376176','+15126002188',NULL,'completed','2017-11-01 00:00:00.000000000',NULL,NULL,'0.00','inbound',NULL,'2012-04-24',NULL,NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA00000000000000000000000000000002', NULL,NULL, NULL, NULL, NULL, NULL,NULL, NULL, NULL, 'PSTN')
148+
INSERT INTO "restcomm_call_detail_records" VALUES('CA00000000000000000000000000000003',NULL,'2017-11-01 00:00:00.000000000','2017-11-01 00:00:00.000000000','AC00000000000000000000000000000001','19549376176','+15126002188',NULL,'completed','2017-11-01 00:00:00.000000000',NULL,NULL,'0.00','inbound',NULL,'2012-04-24',NULL,NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA00000000000000000000000000000003', NULL,NULL, NULL, NULL, NULL, NULL,NULL, NULL, NULL, 'PSTN')
149+
INSERT INTO "restcomm_call_detail_records" VALUES('CA00000000000000000000000000000004',NULL,'2017-11-01 00:00:00.000000000','2017-11-01 00:00:00.000000000','AC00000000000000000000000000000001','19549376176','+15126002188',NULL,'completed','2017-11-01 00:00:00.000000000',NULL,NULL,'0.00','inbound',NULL,'2012-04-24',NULL,NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA00000000000000000000000000000004', NULL,NULL, NULL, NULL, NULL, NULL,NULL, NULL, NULL, 'PSTN')
150+
INSERT INTO "restcomm_call_detail_records" VALUES('CA00000000000000000000000000000005',NULL,'2017-11-01 00:00:00.000000000','2017-11-01 00:00:00.000000000','AC00000000000000000000000000000001','19549376176','+15126002188',NULL,'completed','2017-11-01 00:00:00.000000000',NULL,NULL,'0.00','inbound',NULL,'2012-04-24',NULL,NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA00000000000000000000000000000005', NULL,NULL, NULL, NULL, NULL, NULL,NULL, NULL, NULL, 'USSD')
151+
INSERT INTO "restcomm_call_detail_records" VALUES('CA00000000000000000000000000000006',NULL,'2017-11-01 00:00:00.000000000','2017-11-01 00:00:00.000000000','AC00000000000000000000000000000001','19549376176','+15126002188',NULL,'completed','2017-11-01 00:00:00.000000000',NULL,NULL,'0.00','inbound',NULL,'2012-04-24',NULL,NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA00000000000000000000000000000006', NULL,NULL, NULL, NULL, NULL, NULL,NULL, NULL, NULL, 'USSD')
152+
INSERT INTO "restcomm_call_detail_records" VALUES('CA00000000000000000000000000000007',NULL,'2017-11-01 00:00:00.000000000','2017-11-01 00:00:00.000000000','AC00000000000000000000000000000001','19549376176','+15126002188',NULL,'completed','2017-11-01 00:00:00.000000000',NULL,NULL,'0.00','inbound',NULL,'2012-04-24',NULL,NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA00000000000000000000000000000007', NULL,NULL, NULL, NULL, NULL, NULL,NULL, NULL, NULL, 'USSD')
153+
INSERT INTO "restcomm_call_detail_records" VALUES('CA00000000000000000000000000000008',NULL,'2017-11-01 00:00:00.000000000','2017-11-01 00:00:00.000000000','AC00000000000000000000000000000001','19549376176','+15126002188',NULL,'completed','2017-11-01 00:00:00.000000000',NULL,NULL,'0.00','inbound',NULL,'2012-04-24',NULL,NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA00000000000000000000000000000008', NULL,NULL, NULL, NULL, NULL, NULL,NULL, NULL, NULL, 'SIP')
154+
INSERT INTO "restcomm_call_detail_records" VALUES('CA00000000000000000000000000000009',NULL,'2017-11-01 00:00:00.000000000','2017-11-01 00:00:00.000000000','AC00000000000000000000000000000001','19549376176','+15126002188',NULL,'completed','2017-11-01 00:00:00.000000000',NULL,NULL,'0.00','inbound',NULL,'2012-04-24',NULL,NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA00000000000000000000000000000009', NULL,NULL, NULL, NULL, NULL, NULL,NULL, NULL, NULL, 'SIP')
155+
INSERT INTO "restcomm_call_detail_records" VALUES('CA00000000000000000000000000000010',NULL,'2017-11-01 00:00:00.000000000','2017-11-01 00:00:00.000000000','AC00000000000000000000000000000001','19549376176','+15126002188',NULL,'completed','2017-11-01 00:00:00.000000000',NULL,NULL,'0.00','inbound',NULL,'2012-04-24',NULL,NULL,'/2012-04-24/Accounts/ACae6e420f425248d6a26948c17a9e2acf/Calls/CA00000000000000000000000000000010', NULL,NULL, NULL, NULL, NULL, NULL,NULL, NULL, NULL, 'CLIENT')

0 commit comments

Comments
 (0)