Testing file replication in case of *amqp_json_map transport

This commit is contained in:
DanB
2017-02-03 18:05:58 +01:00
parent 97e4c30ab1
commit 32df69469c
3 changed files with 55 additions and 11 deletions

View File

@@ -33,7 +33,7 @@ type CDRReplicationCfg struct {
func (rplCfg CDRReplicationCfg) FallbackFileName() string {
fileSuffix := ".txt"
switch rplCfg.Transport {
case utils.MetaHTTPjsonCDR, utils.MetaHTTPjsonMap:
case utils.MetaHTTPjsonCDR, utils.MetaHTTPjsonMap, utils.MetaAMQPjsonCDR, utils.MetaAMQPjsonMap:
fileSuffix = ".json"
case utils.META_HTTP_POST:
fileSuffix = ".form"

View File

@@ -70,7 +70,7 @@
"address": "http://127.0.0.1:12080/invalid",
"attempts": 1,
"content_fields": [
{"tag": "CGRID", "type": "*composed", "value": "CGRID", "field_id": "CGRID"},
{"tag": "OriginID", "type": "*composed", "value": "OriginID", "field_id": "OriginID"},
],
},
{

View File

@@ -61,11 +61,13 @@ func TestCdrsInitCdrDb(t *testing.T) {
if err := engine.InitStorDb(cdrsSlaveCfg); err != nil {
t.Fatal(err)
}
/*
if err := os.Mkdir(cdrsMasterCfg.FailedPostsDir, 0700); err != nil {
t.Error(err)
}
*/
if err := os.RemoveAll(cdrsMasterCfg.FailedPostsDir); err != nil {
t.Fatal("Error removing folder: ", cdrsMasterCfg.FailedPostsDir, err)
}
if err := os.Mkdir(cdrsMasterCfg.FailedPostsDir, 0700); err != nil {
t.Error(err)
}
}
@@ -173,16 +175,20 @@ func TestCdrsAMQPReplication(t *testing.T) {
}
}
// Connect rpc client to rater
func TestCdrsFileFailover(t *testing.T) {
func TestCdrsHTTPPosterFileFailover(t *testing.T) {
time.Sleep(time.Duration(2 * time.Second))
failoverContent := []byte(`CGRID=57548d485d61ebcba55afbe5d939c82a8e9ff670`)
failoverContent := []byte(`OriginID=httpjsonrpc1`)
var rplCfg *config.CDRReplicationCfg
var foundFile bool
for _, rplCfg = range cdrsMasterCfg.CDRSCdrReplication {
if strings.HasSuffix(rplCfg.Address, "invalid") { // Find the config which shold generate the failoback
foundFile = true
break
}
}
if !foundFile {
t.Fatal("Could not find the file in folder")
}
filesInDir, _ := ioutil.ReadDir(cdrsMasterCfg.FailedPostsDir)
if len(filesInDir) == 0 {
t.Fatalf("No files in directory: %s", cdrsMasterCfg.FailedPostsDir)
@@ -190,7 +196,45 @@ func TestCdrsFileFailover(t *testing.T) {
var fileName string
for _, file := range filesInDir { // First file in directory is the one we need, harder to find it's name out of config
fileName = file.Name()
break
if strings.Index(fileName, ".txt") != -1 {
break
}
}
filePath := path.Join(cdrsMasterCfg.FailedPostsDir, fileName)
if readBytes, err := ioutil.ReadFile(filePath); err != nil {
t.Error(err)
} else if !reflect.DeepEqual(failoverContent, readBytes) { // Checking just the prefix should do since some content is dynamic
t.Errorf("Expecting: %q, received: %q", string(failoverContent), string(readBytes))
}
if err := os.Remove(filePath); err != nil {
t.Error("Failed removing file: ", filePath)
}
}
func TestCdrsAMQPPosterFileFailover(t *testing.T) {
time.Sleep(time.Duration(6 * time.Second))
failoverContent := []byte(`{"CGRID":"57548d485d61ebcba55afbe5d939c82a8e9ff670"}`)
var rplCfg *config.CDRReplicationCfg
var foundFile bool
for _, rplCfg = range cdrsMasterCfg.CDRSCdrReplication {
if rplCfg.Address == "amqp://guest:guest@localhost:25672/?queue_id=cgrates_cdrs" { // Find the config which shold generate the failoback
foundFile = true
break
}
}
if !foundFile {
t.Fatal("Could not find the file in folder")
}
filesInDir, _ := ioutil.ReadDir(cdrsMasterCfg.FailedPostsDir)
if len(filesInDir) == 0 {
t.Fatalf("No files in directory: %s", cdrsMasterCfg.FailedPostsDir)
}
var fileName string
for _, file := range filesInDir { // First file in directory is the one we need, harder to find it's name out of config
fileName = file.Name()
if strings.HasPrefix(fileName, "cdr|*amqp_json_map") {
break
}
}
filePath := path.Join(cdrsMasterCfg.FailedPostsDir, fileName)
if readBytes, err := ioutil.ReadFile(filePath); err != nil {