diff --git a/engine/storage_mysql_local_test.go b/engine/storage_mysql_local_test.go index 28102ab4d..20aef2b71 100644 --- a/engine/storage_mysql_local_test.go +++ b/engine/storage_mysql_local_test.go @@ -565,6 +565,14 @@ func TestMySQLGetStoredCdrs(t *testing.T) { } else if len(storedCdrs) != 8 { t.Error("Unexpected number of StoredCdrs returned: ", storedCdrs) } + // Count ALL + if storedCdrs, count, err := mysqlDb.GetStoredCdrs(&utils.CdrsFilter{Count: true}); err != nil { + t.Error(err.Error()) + } else if len(storedCdrs) != 0 { + t.Error("Unexpected number of StoredCdrs returned: ", storedCdrs) + } else if count != 8 { + t.Error("Unexpected count of StoredCdrs returned: ", count) + } // Filter on cgrids if storedCdrs, _, err := mysqlDb.GetStoredCdrs(&utils.CdrsFilter{CgrIds: []string{utils.Sha1("bbb1", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()), utils.Sha1("bbb2", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String())}}); err != nil { @@ -572,6 +580,13 @@ func TestMySQLGetStoredCdrs(t *testing.T) { } else if len(storedCdrs) != 2 { t.Error("Unexpected number of StoredCdrs returned: ", storedCdrs) } + // Count on CGRIDS + if _, count, err := mysqlDb.GetStoredCdrs(&utils.CdrsFilter{CgrIds: []string{utils.Sha1("bbb1", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()), + utils.Sha1("bbb2", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String())}, Count: true}); err != nil { + t.Error(err.Error()) + } else if count != 2 { + t.Error("Unexpected count of StoredCdrs returned: ", count) + } // Filter on cgrids plus reqType if storedCdrs, _, err := mysqlDb.GetStoredCdrs(&utils.CdrsFilter{CgrIds: []string{utils.Sha1("bbb1", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()), utils.Sha1("bbb2", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String())}, ReqTypes: []string{"prepaid"}}); err != nil { @@ -579,6 +594,13 @@ func TestMySQLGetStoredCdrs(t *testing.T) { } else if len(storedCdrs) != 1 { t.Error("Unexpected number of StoredCdrs returned: ", storedCdrs) } + // Count on multiple filter + if _, count, err := mysqlDb.GetStoredCdrs(&utils.CdrsFilter{CgrIds: []string{utils.Sha1("bbb1", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()), + utils.Sha1("bbb2", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String())}, ReqTypes: []string{"prepaid"}, Count: true}); err != nil { + t.Error(err.Error()) + } else if count != 1 { + t.Error("Unexpected count of StoredCdrs returned: ", count) + } // Filter on runId if storedCdrs, _, err := mysqlDb.GetStoredCdrs(&utils.CdrsFilter{RunIds: []string{utils.DEFAULT_RUNID}}); err != nil { t.Error(err.Error()) diff --git a/engine/storage_psql_local_test.go b/engine/storage_psql_local_test.go index d200cae1e..c241c64a7 100644 --- a/engine/storage_psql_local_test.go +++ b/engine/storage_psql_local_test.go @@ -567,6 +567,14 @@ func TestPSQLGetStoredCdrs(t *testing.T) { } else if len(storedCdrs) != 8 { t.Error("Unexpected number of StoredCdrs returned: ", storedCdrs) } + // Count ALL + if storedCdrs, count, err := psqlDb.GetStoredCdrs(&utils.CdrsFilter{Count: true}); err != nil { + t.Error(err.Error()) + } else if len(storedCdrs) != 0 { + t.Error("Unexpected number of StoredCdrs returned: ", storedCdrs) + } else if count != 8 { + t.Error("Unexpected count of StoredCdrs returned: ", count) + } // Filter on cgrids if storedCdrs, _, err := psqlDb.GetStoredCdrs(&utils.CdrsFilter{CgrIds: []string{utils.Sha1("bbb1", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()), utils.Sha1("bbb2", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String())}}); err != nil { @@ -574,6 +582,13 @@ func TestPSQLGetStoredCdrs(t *testing.T) { } else if len(storedCdrs) != 2 { t.Error("Unexpected number of StoredCdrs returned: ", storedCdrs) } + // Count on CGRIDS + if _, count, err := psqlDb.GetStoredCdrs(&utils.CdrsFilter{CgrIds: []string{utils.Sha1("bbb1", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()), + utils.Sha1("bbb2", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String())}, Count: true}); err != nil { + t.Error(err.Error()) + } else if count != 2 { + t.Error("Unexpected count of StoredCdrs returned: ", count) + } // Filter on cgrids plus reqType if storedCdrs, _, err := psqlDb.GetStoredCdrs(&utils.CdrsFilter{CgrIds: []string{utils.Sha1("bbb1", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()), utils.Sha1("bbb2", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String())}, ReqTypes: []string{"prepaid"}}); err != nil { @@ -581,6 +596,13 @@ func TestPSQLGetStoredCdrs(t *testing.T) { } else if len(storedCdrs) != 1 { t.Error("Unexpected number of StoredCdrs returned: ", storedCdrs) } + // Count on multiple filter + if _, count, err := psqlDb.GetStoredCdrs(&utils.CdrsFilter{CgrIds: []string{utils.Sha1("bbb1", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String()), + utils.Sha1("bbb2", time.Date(2013, 12, 7, 8, 42, 24, 0, time.UTC).String())}, ReqTypes: []string{"prepaid"}, Count: true}); err != nil { + t.Error(err.Error()) + } else if count != 1 { + t.Error("Unexpected count of StoredCdrs returned: ", count) + } // Filter on runId if storedCdrs, _, err := psqlDb.GetStoredCdrs(&utils.CdrsFilter{RunIds: []string{utils.DEFAULT_RUNID}}); err != nil { t.Error(err.Error()) diff --git a/engine/storage_sql.go b/engine/storage_sql.go index 4b181788a..9fe7df71d 100644 --- a/engine/storage_sql.go +++ b/engine/storage_sql.go @@ -955,7 +955,7 @@ func (self *SQLStorage) GetStoredCdrs(qryFltr *utils.CdrsFilter) ([]*utils.Store if err := q.Count(&cnt).Error; err != nil { return nil, 0, err } - return nil, 0, nil + return nil, cnt, nil } // Execute query rows, err := q.Rows()