mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-24 08:38:45 +05:00
Testing file replication in case of *amqp_json_map transport
This commit is contained in:
@@ -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