mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-12 02:26:26 +05:00
Testing file replication in case of *amqp_json_map transport
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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"},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user