mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
created a new encoder for every write
This commit is contained in:
@@ -18,8 +18,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
//"encoding/gob"
|
||||
"encoding/json"
|
||||
"flag"
|
||||
"github.com/rif/cgrates/timespans"
|
||||
@@ -41,27 +39,6 @@ var (
|
||||
ubfile = flag.String("ubfile", "ub.json", "User budgets file")
|
||||
)
|
||||
|
||||
func testGob(key string, aps []*timespans.ActivationPeriod) {
|
||||
var buf bytes.Buffer
|
||||
enc := json.NewEncoder(&buf)
|
||||
dec := json.NewDecoder(&buf)
|
||||
|
||||
enc.Encode(aps)
|
||||
result := buf.String()
|
||||
|
||||
aps1 := make([]*timespans.ActivationPeriod, 0)
|
||||
buf.Reset()
|
||||
buf.WriteString(result)
|
||||
err := dec.Decode(&aps1)
|
||||
log.Print("Err: ", err)
|
||||
|
||||
buf.Reset()
|
||||
enc.Encode(aps1)
|
||||
result1 := buf.String()
|
||||
|
||||
log.Print("Equal? ", result == result1, len(result), len(result1))
|
||||
}
|
||||
|
||||
func writeToStorage(storage timespans.StorageGetter,
|
||||
callDescriptors []*timespans.CallDescriptor,
|
||||
destinations []*timespans.Destination,
|
||||
@@ -70,7 +47,6 @@ func writeToStorage(storage timespans.StorageGetter,
|
||||
for _, cd := range callDescriptors {
|
||||
storage.SetActivationPeriods(cd.GetKey(), cd.ActivationPeriods)
|
||||
log.Printf("Storing activation periods for %q", cd.GetKey())
|
||||
testGob(cd.GetKey(), cd.ActivationPeriods)
|
||||
}
|
||||
for _, d := range destinations {
|
||||
storage.SetDestination(d)
|
||||
|
||||
@@ -22,6 +22,24 @@ import (
|
||||
//"log"
|
||||
)
|
||||
|
||||
func TestApStoreRestore(t *testing.T) {
|
||||
func TestApRestoreKyoto(t *testing.T) {
|
||||
getter, _ := NewKyotoStorage("test.kch")
|
||||
defer getter.Close()
|
||||
|
||||
cd := &CallDescriptor{CstmId: "vdf", Subject: "rif", DestinationPrefix: "0257", storageGetter: getter}
|
||||
cd.SearchStorageForPrefix()
|
||||
if len(cd.ActivationPeriods) != 2 {
|
||||
t.Error("Error restoring activation periods: ", cd.ActivationPeriods)
|
||||
}
|
||||
}
|
||||
|
||||
func TestApRestoreRedis(t *testing.T) {
|
||||
getter, _ := NewRedisStorage("tcp:127.0.0.1:6379", 10)
|
||||
defer getter.Close()
|
||||
|
||||
cd := &CallDescriptor{CstmId: "vdf", Subject: "rif", DestinationPrefix: "0257", storageGetter: getter}
|
||||
cd.SearchStorageForPrefix()
|
||||
if len(cd.ActivationPeriods) != 2 {
|
||||
t.Error("Error restoring activation periods: ", cd.ActivationPeriods)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,6 @@ import (
|
||||
type KyotoStorage struct {
|
||||
db *kc.DB
|
||||
buf bytes.Buffer
|
||||
enc *gob.Encoder
|
||||
dec *gob.Decoder
|
||||
mux sync.Mutex // we need norma lock because we reset the buf variable
|
||||
}
|
||||
@@ -36,7 +35,6 @@ type KyotoStorage struct {
|
||||
func NewKyotoStorage(filaName string) (*KyotoStorage, error) {
|
||||
ndb, err := kc.Open(filaName, kc.WRITE)
|
||||
ks := &KyotoStorage{db: ndb}
|
||||
ks.enc = gob.NewEncoder(&ks.buf)
|
||||
ks.dec = gob.NewDecoder(&ks.buf)
|
||||
return ks, err
|
||||
}
|
||||
@@ -49,9 +47,10 @@ func (ks *KyotoStorage) SetActivationPeriods(key string, aps []*ActivationPeriod
|
||||
ks.mux.Lock()
|
||||
defer ks.mux.Unlock()
|
||||
|
||||
ks.buf.Reset()
|
||||
ks.enc.Encode(aps)
|
||||
return ks.db.Set(key, ks.buf.String())
|
||||
var writeBuf bytes.Buffer
|
||||
encoder := gob.NewEncoder(&writeBuf)
|
||||
encoder.Encode(aps)
|
||||
return ks.db.Set(key, writeBuf.String())
|
||||
}
|
||||
|
||||
func (ks *KyotoStorage) GetActivationPeriods(key string) (aps []*ActivationPeriod, err error) {
|
||||
|
||||
@@ -21,7 +21,7 @@ import (
|
||||
"bytes"
|
||||
"encoding/gob"
|
||||
"github.com/simonz05/godis"
|
||||
"log"
|
||||
// "log"
|
||||
"sync"
|
||||
)
|
||||
|
||||
@@ -29,7 +29,6 @@ type RedisStorage struct {
|
||||
dbNb int
|
||||
db *godis.Client
|
||||
buf bytes.Buffer
|
||||
enc *gob.Encoder
|
||||
dec *gob.Decoder
|
||||
mux sync.Mutex
|
||||
}
|
||||
@@ -38,7 +37,6 @@ func NewRedisStorage(address string, db int) (*RedisStorage, error) {
|
||||
ndb := godis.New(address, db, "")
|
||||
rs := &RedisStorage{db: ndb, dbNb: db}
|
||||
|
||||
rs.enc = gob.NewEncoder(&rs.buf)
|
||||
rs.dec = gob.NewDecoder(&rs.buf)
|
||||
return rs, nil
|
||||
}
|
||||
@@ -51,10 +49,10 @@ func (rs *RedisStorage) SetActivationPeriods(key string, aps []*ActivationPeriod
|
||||
//.db.Select(rs.dbNb)
|
||||
rs.mux.Lock()
|
||||
defer rs.mux.Unlock()
|
||||
|
||||
rs.buf.Reset()
|
||||
rs.enc.Encode(aps)
|
||||
return rs.db.Set(key, rs.buf.Bytes())
|
||||
var writeBuf bytes.Buffer
|
||||
encoder := gob.NewEncoder(&writeBuf)
|
||||
encoder.Encode(aps)
|
||||
return rs.db.Set(key, writeBuf.Bytes())
|
||||
}
|
||||
|
||||
func (rs *RedisStorage) GetActivationPeriods(key string) (aps []*ActivationPeriod, err error) {
|
||||
@@ -66,8 +64,7 @@ func (rs *RedisStorage) GetActivationPeriods(key string) (aps []*ActivationPerio
|
||||
rs.buf.Reset()
|
||||
rs.buf.Write(elem.Bytes())
|
||||
|
||||
e := rs.dec.Decode(&aps)
|
||||
log.Print(e)
|
||||
rs.dec.Decode(&aps)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user