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

@@ -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 {