diff --git a/console/command_executer.go b/console/command_executer.go index f0535e107..c85712df2 100644 --- a/console/command_executer.go +++ b/console/command_executer.go @@ -30,8 +30,8 @@ import ( ) var ( - lineR = regexp.MustCompile(`(\w+)\s*=\s*(.+?)(?:\s+|$)`) - jsonR = regexp.MustCompile(`"(\w+)":(.+?)[,|}]`) + lineR = regexp.MustCompile(`(\w+)\s*=\s*(\[.+?\]|.+?)(?:\s+|$)`) + jsonR = regexp.MustCompile(`"(\w+)":(\[.+?\]|.+?)[,|}]`) ) // Commander implementation diff --git a/console/command_executer_test.go b/console/command_executer_test.go index 0aeb14cc1..f848df92a 100644 --- a/console/command_executer_test.go +++ b/console/command_executer_test.go @@ -53,8 +53,22 @@ func TestToJSONString(t *testing.T) { } } +func TestToJSONArrayNoSpace(t *testing.T) { + jsn := ToJSON(`Param=["id1","id2","id3"] Another="Patram"`) + if string(jsn) != `{"Param":["id1","id2","id3"],"Another":"Patram"}` { + t.Error("Error string: ", string(jsn)) + } +} + +func TestToJSONArraySpace(t *testing.T) { + jsn := ToJSON(`Param=["id1", "id2", "id3"] Another="Patram"`) + if string(jsn) != `{"Param":["id1", "id2", "id3"],"Another":"Patram"}` { + t.Error("Error string: ", string(jsn)) + } +} + func TestFromJSON(t *testing.T) { - line := FromJSON([]byte(`{"TimeStart":"Test","Crazy":1,"Mama":true,"Test":1}`), []string{"TimeStart", "Test", "Crazy", "Mama", "Test"}) + line := FromJSON([]byte(`{"TimeStart":"Test","Crazy":1,"Mama":true,"Test":1}`), []string{"TimeStart", "Crazy", "Mama", "Test"}) expected := `TimeStart="Test" Crazy=1 Mama=true Test=1` if line != expected { t.Errorf("Expected: %s got: '%s'", expected, line) @@ -76,3 +90,19 @@ func TestFromJSONString(t *testing.T) { t.Errorf("Expected: %s got: '%s'", expected, line) } } + +func TestFromJSONArrayNoSpace(t *testing.T) { + line := FromJSON([]byte(`{"Param":["id1","id2","id3"], "TimeStart":"Test", "Test":1}`), []string{"Param", "TimeStart", "Test"}) + expected := `Param=["id1","id2","id3"] TimeStart="Test" Test=1` + if line != expected { + t.Errorf("Expected: %s got: '%s'", expected, line) + } +} + +func TestFromJSONArraySpace(t *testing.T) { + line := FromJSON([]byte(`{"Param":["id1", "id2", "id3"], "TimeStart":"Test", "Test":1}`), []string{"Param", "TimeStart", "Test"}) + expected := `Param=["id1", "id2", "id3"] TimeStart="Test" Test=1` + if line != expected { + t.Errorf("Expected: %s got: '%s'", expected, line) + } +} diff --git a/engine/stats.go b/engine/stats.go index 2076ab49a..3678f29d8 100644 --- a/engine/stats.go +++ b/engine/stats.go @@ -99,7 +99,7 @@ func (s *Stats) ReloadQueues(ids []string, out *int) error { if cs, err := s.ratingDb.GetCdrStats(id); err == nil { s.AddQueue(cs, nil) } else { - return fmt.Errorf("Cannot load cdr stats for id %v: %v", id, err) + return err } } return nil diff --git a/engine/storage_redis.go b/engine/storage_redis.go index 0d6c92c94..33f70944c 100644 --- a/engine/storage_redis.go +++ b/engine/storage_redis.go @@ -672,7 +672,7 @@ func (rs *RedisStorage) SetCdrStats(cs *CdrStats) error { func (rs *RedisStorage) GetCdrStats(key string) (cs *CdrStats, err error) { var values []byte - if values, err = rs.db.Get(key); err == nil { + if values, err = rs.db.Get(CDR_STATS_PREFIX + key); err == nil { err = rs.ms.Unmarshal(values, &cs) } return