mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-16 21:59:53 +05:00
used different kyoto lib
This commit is contained in:
@@ -18,7 +18,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
package timespans
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
"time"
|
||||
//"log"
|
||||
)
|
||||
|
||||
@@ -43,3 +45,23 @@ func TestApRestoreRedis(t *testing.T) {
|
||||
t.Error("Error restoring activation periods: ", cd.ActivationPeriods)
|
||||
}
|
||||
}
|
||||
|
||||
func TestApStoreRestore(t *testing.T) {
|
||||
getter, _ := NewRedisStorage("tcp:127.0.0.1:6379", 10)
|
||||
defer getter.Close()
|
||||
d := time.Date(2012, time.February, 1, 14, 30, 1, 0, time.UTC)
|
||||
i := &Interval{Month: time.February,
|
||||
MonthDay: 1,
|
||||
WeekDays: []time.Weekday{time.Wednesday, time.Thursday},
|
||||
StartTime: "14:30:00",
|
||||
EndTime: "15:00:00"}
|
||||
ap := &ActivationPeriod{ActivationTime: d}
|
||||
ap.AddInterval(i)
|
||||
|
||||
getter.SetActivationPeriods("storerestore", []*ActivationPeriod{ap})
|
||||
aps, err := getter.GetActivationPeriods("storerestore")
|
||||
if err != nil || len(aps) != 1 || !reflect.DeepEqual(ap, aps[0]) {
|
||||
t.Log(aps)
|
||||
t.Errorf("Expected %v was %v ", ap, aps)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,29 +23,6 @@ import (
|
||||
//"log"
|
||||
)
|
||||
|
||||
func TestKyotoStoreRestore(t *testing.T) {
|
||||
getter, _ := NewRedisStorage("tcp:127.0.0.1:6379", 10)
|
||||
defer getter.Close()
|
||||
d := time.Date(2012, time.February, 1, 14, 30, 1, 0, time.UTC)
|
||||
i := &Interval{Month: time.February,
|
||||
MonthDay: 1,
|
||||
WeekDays: []time.Weekday{time.Wednesday, time.Thursday},
|
||||
StartTime: "14:30:00",
|
||||
EndTime: "15:00:00"}
|
||||
ap := &ActivationPeriod{ActivationTime: d}
|
||||
ap.AddInterval(i)
|
||||
|
||||
cd := &CallDescriptor{CstmId: "vdf", Subject: "storerestore", DestinationPrefix: "0256"}
|
||||
cd.AddActivationPeriod(ap)
|
||||
|
||||
getter.SetActivationPeriods(cd.GetKey(), cd.ActivationPeriods)
|
||||
aps, err := getter.GetActivationPeriods(cd.GetKey())
|
||||
if err != nil || len(aps) != 1 {
|
||||
t.Log(aps)
|
||||
t.Errorf("Expected %v was %v ", ap, aps)
|
||||
}
|
||||
}
|
||||
|
||||
func TestKyotoSplitSpans(t *testing.T) {
|
||||
getter, _ := NewKyotoStorage("test.kch")
|
||||
defer getter.Close()
|
||||
@@ -258,7 +235,7 @@ func TestMaxSessionTimeNoCredit(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestGetCostWithVolumeDiscount(t *testing.T) {
|
||||
getter, _ := NewKyotoStorage("test.kch")
|
||||
getter, _ := NewRedisStorage("tcp:127.0.0.1:6379", 10)
|
||||
defer getter.Close()
|
||||
vd1 := &VolumeDiscount{100, 10}
|
||||
vd2 := &VolumeDiscount{500, 20}
|
||||
|
||||
@@ -18,22 +18,26 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
package timespans
|
||||
|
||||
import (
|
||||
"bitbucket.org/ww/cabinet"
|
||||
"bytes"
|
||||
"encoding/gob"
|
||||
"github.com/fsouza/gokabinet/kc"
|
||||
//"github.com/fsouza/gokabinet/kc"
|
||||
// "log"
|
||||
"sync"
|
||||
)
|
||||
|
||||
type KyotoStorage struct {
|
||||
db *kc.DB
|
||||
//db *kc.DB
|
||||
db *cabinet.KCDB
|
||||
buf bytes.Buffer
|
||||
dec *gob.Decoder
|
||||
mux sync.Mutex // we need norma lock because we reset the buf variable
|
||||
}
|
||||
|
||||
func NewKyotoStorage(filaName string) (*KyotoStorage, error) {
|
||||
ndb, err := kc.Open(filaName, kc.WRITE)
|
||||
//ndb, err := kc.Open(filaName, kc.WRITE)
|
||||
ndb := cabinet.New()
|
||||
err := ndb.Open(filaName, cabinet.KCOWRITER|cabinet.KCOCREATE)
|
||||
ks := &KyotoStorage{db: ndb}
|
||||
ks.dec = gob.NewDecoder(&ks.buf)
|
||||
return ks, err
|
||||
@@ -50,53 +54,53 @@ func (ks *KyotoStorage) SetActivationPeriods(key string, aps []*ActivationPeriod
|
||||
var writeBuf bytes.Buffer
|
||||
encoder := gob.NewEncoder(&writeBuf)
|
||||
encoder.Encode(aps)
|
||||
return ks.db.Set(key, writeBuf.String())
|
||||
return ks.db.Set([]byte(key), writeBuf.Bytes())
|
||||
}
|
||||
|
||||
func (ks *KyotoStorage) GetActivationPeriods(key string) (aps []*ActivationPeriod, err error) {
|
||||
ks.mux.Lock()
|
||||
defer ks.mux.Unlock()
|
||||
|
||||
values, err := ks.db.Get(key)
|
||||
values, err := ks.db.Get([]byte(key))
|
||||
|
||||
ks.buf.Reset()
|
||||
ks.buf.WriteString(values)
|
||||
ks.buf.Write(values)
|
||||
ks.dec.Decode(&aps)
|
||||
return
|
||||
}
|
||||
|
||||
func (ks *KyotoStorage) GetDestination(key string) (dest *Destination, err error) {
|
||||
if values, err := ks.db.Get(key); err == nil {
|
||||
if values, err := ks.db.Get([]byte(key)); err == nil {
|
||||
dest = &Destination{Id: key}
|
||||
dest.restore(values)
|
||||
dest.restore(string(values))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (ks *KyotoStorage) SetDestination(dest *Destination) error {
|
||||
return ks.db.Set(dest.Id, dest.store())
|
||||
return ks.db.Set([]byte(dest.Id), []byte(dest.store()))
|
||||
}
|
||||
|
||||
func (ks *KyotoStorage) GetTariffPlan(key string) (tp *TariffPlan, err error) {
|
||||
if values, err := ks.db.Get(key); err == nil {
|
||||
if values, err := ks.db.Get([]byte(key)); err == nil {
|
||||
tp = &TariffPlan{Id: key}
|
||||
tp.restore(values)
|
||||
tp.restore(string(values))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (ks *KyotoStorage) SetTariffPlan(tp *TariffPlan) error {
|
||||
return ks.db.Set(tp.Id, tp.store())
|
||||
return ks.db.Set([]byte(tp.Id), []byte(tp.store()))
|
||||
}
|
||||
|
||||
func (ks *KyotoStorage) GetUserBudget(key string) (ub *UserBudget, err error) {
|
||||
if values, err := ks.db.Get(key); err == nil {
|
||||
if values, err := ks.db.Get([]byte(key)); err == nil {
|
||||
ub = &UserBudget{Id: key}
|
||||
ub.restore(values)
|
||||
ub.restore(string(values))
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (ks *KyotoStorage) SetUserBudget(ub *UserBudget) error {
|
||||
return ks.db.Set(ub.Id, ub.store())
|
||||
return ks.db.Set([]byte(ub.Id), []byte(ub.store()))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user