Adding files containing the storCdr

This commit is contained in:
DanB
2013-11-08 18:45:20 +01:00
parent 092853d571
commit 4a5d228d81
2 changed files with 173 additions and 0 deletions

92
utils/storcdr.go Normal file
View 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
View 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)
}
}