mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-12 02:26:26 +05:00
Adding files containing the storCdr
This commit is contained in:
92
utils/storcdr.go
Normal file
92
utils/storcdr.go
Normal file
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
Rating system designed to be used in VoIP Carriers World
|
||||
Copyright (C) 2013 ITsysCOM
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
package utils
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// CDR as extracted from StorDb. Kinda standard of internal CDR
|
||||
type StorCDR struct {
|
||||
CgrId string
|
||||
AccId string
|
||||
CdrHost string
|
||||
ReqType string
|
||||
Direction string
|
||||
Tenant string
|
||||
TOR string
|
||||
Account string
|
||||
Subject string
|
||||
Destination string
|
||||
AnswerTime time.Time
|
||||
Duration int64
|
||||
ExtraFields map[string]string
|
||||
}
|
||||
|
||||
func(storCdr *StorCDR) GetCgrId() string {
|
||||
return storCdr.CgrId
|
||||
}
|
||||
|
||||
func(storCdr *StorCDR) GetAccId() string {
|
||||
return storCdr.AccId
|
||||
}
|
||||
|
||||
func(storCdr *StorCDR) GetCdrHost() string {
|
||||
return storCdr.CdrHost
|
||||
}
|
||||
|
||||
func(storCdr *StorCDR) GetDirection() string {
|
||||
return storCdr.Direction
|
||||
}
|
||||
|
||||
func(storCdr *StorCDR) GetSubject() string {
|
||||
return storCdr.Subject
|
||||
}
|
||||
|
||||
func(storCdr *StorCDR) GetAccount() string {
|
||||
return storCdr.Account
|
||||
}
|
||||
|
||||
func(storCdr *StorCDR) GetDestination() string {
|
||||
return storCdr.Destination
|
||||
}
|
||||
|
||||
func(storCdr *StorCDR) GetTOR() string {
|
||||
return storCdr.TOR
|
||||
}
|
||||
|
||||
func(storCdr *StorCDR) GetTenant() string {
|
||||
return storCdr.Tenant
|
||||
}
|
||||
|
||||
func(storCdr *StorCDR) GetReqType() string {
|
||||
return storCdr.ReqType
|
||||
}
|
||||
|
||||
func(storCdr *StorCDR) GetAnswerTime() (time.Time, error) {
|
||||
return storCdr.AnswerTime, nil
|
||||
}
|
||||
|
||||
func(storCdr *StorCDR) GetDuration() int64 {
|
||||
return storCdr.Duration
|
||||
}
|
||||
|
||||
func(storCdr *StorCDR) GetExtraFields() map[string]string {
|
||||
return storCdr.ExtraFields
|
||||
}
|
||||
81
utils/storcdr_test.go
Normal file
81
utils/storcdr_test.go
Normal file
@@ -0,0 +1,81 @@
|
||||
/*
|
||||
Rating system designed to be used in VoIP Carriers World
|
||||
Copyright (C) 2013 ITsysCOM
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
package utils
|
||||
|
||||
import (
|
||||
"time"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestStorCDRInterfaces(t *testing.T) {
|
||||
storCdr := new(StorCDR)
|
||||
var _ CDR = storCdr
|
||||
}
|
||||
|
||||
func TestStorCdrFields(t *testing.T) {
|
||||
storCdr := StorCDR{ CgrId: FSCgrId("dsafdsaf"), AccId:"dsafdsaf", CdrHost:"192.168.1.1", ReqType:"rated", Direction:"*out", Tenant:"cgrates.org",
|
||||
TOR:"call", Account:"1001", Subject:"1001", Destination:"1002", AnswerTime:time.Unix(1383813746,0), Duration:10,
|
||||
ExtraFields:map[string]string{"field_extr1":"val_extr1", "fieldextr2":"valextr2"},
|
||||
}
|
||||
if storCdr.GetCgrId() != "b18944ef4dc618569f24c27b9872827a242bad0c" {
|
||||
t.Error("Error parsing cdr: ", storCdr)
|
||||
}
|
||||
if storCdr.GetAccId() != "dsafdsaf" {
|
||||
t.Error("Error parsing cdr: ", storCdr)
|
||||
}
|
||||
if storCdr.GetCdrHost() != "192.168.1.1" {
|
||||
t.Error("Error parsing cdr: ", storCdr)
|
||||
}
|
||||
if storCdr.GetDirection() != "*out" {
|
||||
t.Error("Error parsing cdr: ", storCdr)
|
||||
}
|
||||
if storCdr.GetSubject() != "1001" {
|
||||
t.Error("Error parsing cdr: ", storCdr)
|
||||
}
|
||||
if storCdr.GetAccount() != "1001" {
|
||||
t.Error("Error parsing cdr: ", storCdr)
|
||||
}
|
||||
if storCdr.GetDestination() != "1002" {
|
||||
t.Error("Error parsing cdr: ", storCdr)
|
||||
}
|
||||
if storCdr.GetTOR() != "call" {
|
||||
t.Error("Error parsing cdr: ", storCdr)
|
||||
}
|
||||
if storCdr.GetTenant() != "cgrates.org" {
|
||||
t.Error("Error parsing cdr: ", storCdr)
|
||||
}
|
||||
if storCdr.GetReqType() != RATED {
|
||||
t.Error("Error parsing cdr: ", storCdr)
|
||||
}
|
||||
answerTime, _ := storCdr.GetAnswerTime()
|
||||
expectedATime, _ := time.Parse(time.RFC3339, "2013-11-07T08:42:26Z")
|
||||
if answerTime.UTC() != expectedATime {
|
||||
t.Error("Error parsing cdr: ", storCdr)
|
||||
}
|
||||
if storCdr.GetDuration() != 10 {
|
||||
t.Error("Error parsing cdr: ", storCdr)
|
||||
}
|
||||
extraFields := storCdr.GetExtraFields()
|
||||
if len(extraFields) != 2 {
|
||||
t.Error("Error parsing extra fields: ", extraFields)
|
||||
}
|
||||
if extraFields["field_extr1"] != "val_extr1" {
|
||||
t.Error("Error parsing extra fields: ", extraFields)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user