diff --git a/data/storage/postgres/create_tariffplan_tables.sql b/data/storage/postgres/create_tariffplan_tables.sql index 217dc0954..3fd24f317 100644 --- a/data/storage/postgres/create_tariffplan_tables.sql +++ b/data/storage/postgres/create_tariffplan_tables.sql @@ -207,14 +207,14 @@ CREATE INDEX tp_routes_unique ON tp_routes ("tpid", "tenant", "id", "id" varchar(64) NOT NULL, "address" varchar(64) NOT NULL, "transport" varchar(64) NOT NULL, - `connect_attempts` INTEGER NOT NULL, - `reconnects` INTEGER NOT NULL, - `connect_timeout` varchar(64) NOT NULL, - `reply_timeout` varchar(64) NOT NULL, - `tls` BOOLEAN NOT NULL, - `client_key` varchar(64) NOT NULL, - `client_certificate` varchar(64) NOT NULL, - `ca_certificate` varchar(64) NOT NULL, + "connect_attempts" INTEGER NOT NULL, + "reconnects" INTEGER NOT NULL, + "connect_timeout" varchar(64) NOT NULL, + "reply_timeout" varchar(64) NOT NULL, + "tls" BOOLEAN NOT NULL, + "client_key" varchar(64) NOT NULL, + "client_certificate" varchar(64) NOT NULL, + "ca_certificate" varchar(64) NOT NULL, "created_at" TIMESTAMP WITH TIME ZONE ); CREATE INDEX tp_dispatchers_hosts_ids ON tp_dispatcher_hosts (tpid); diff --git a/engine/z_versions_it_test.go b/engine/z_versions_it_test.go index e478d9277..9ee492773 100644 --- a/engine/z_versions_it_test.go +++ b/engine/z_versions_it_test.go @@ -20,7 +20,10 @@ along with this program. If not, see package engine import ( + "bytes" + "fmt" "log" + "os/exec" "path" "testing" @@ -51,7 +54,7 @@ func TestVersionsIT(t *testing.T) { case utils.MetaMongo: versionsConfigDIR = "tutmongo" case utils.MetaPostgres: - versionsConfigDIR = "storage/postgres" + versionsConfigDIR = "tutpostgres" default: t.Fatal("Unknown Database type") } @@ -197,3 +200,323 @@ func testVersion(t *testing.T) { } } + +func testUpdateVersionsAccounts(t *testing.T) { + newVersions := CurrentDataDBVersions() + newVersions[utils.Accounts] = 2 + if err := dm3.DataDB().SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := "Migration needed: please backup cgr data and run : \n" + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +} + +func testUpdateVersionsActions(t *testing.T) { + newVersions := CurrentDataDBVersions() + newVersions[utils.Actions] = 1 + if err := dm3.DataDB().SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := "Migration needed: please backup cgr data and run : \n" + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +} + +func testUpdateVersionsChargers(t *testing.T) { + newVersions := CurrentDataDBVersions() + newVersions[utils.Chargers] = 1 + if err := dm3.DataDB().SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := "Migration needed: please backup cgr data and run : \n" + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +} + +func testUpdateVersionsDestinations(t *testing.T) { + newVersions := CurrentDataDBVersions() + newVersions[utils.Destination] = 0 + if err := dm3.DataDB().SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := utils.EmptyString + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +} +func testUpdateVersionsAttributes(t *testing.T) { + newVersions := CurrentDataDBVersions() + newVersions[utils.Attributes] = 3 + if err := dm3.DataDB().SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := "Migration needed: please backup cgr data and run : \n" + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +} + +func testUpdateVersionsDispatchers(t *testing.T) { + newVersions := CurrentDataDBVersions() + newVersions[utils.Dispatchers] = 1 + if err := dm3.DataDB().SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := "Migration needed: please backup cgr data and run : \n" + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +} + +func testUpdateVersionsLoadIDs(t *testing.T) { + newVersions := CurrentDataDBVersions() + delete(newVersions, utils.LoadIDsVrs) + if err := dm3.DataDB().SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := utils.EmptyString + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +} + +func testUpdateVersionsRQF(t *testing.T) { + newVersions := CurrentDataDBVersions() + newVersions[utils.RQF] = 2 + if err := dm3.DataDB().SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := "Migration needed: please backup cgr data and run : \n" + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +} + +func testUpdateVersionsResource(t *testing.T) { + newVersions := CurrentDataDBVersions() + newVersions[utils.Resource] = 0 + if err := dm3.DataDB().SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := utils.EmptyString + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +} + +func testUpdateVersionsRoutes(t *testing.T) { + newVersions := CurrentDataDBVersions() + newVersions[utils.Routes] = 1 + if err := dm3.DataDB().SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := "Migration needed: please backup cgr data and run : \n" + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +} + +func testUpdateVersionsStats(t *testing.T) { + newVersions := CurrentDataDBVersions() + newVersions[utils.StatS] = 3 + if err := dm3.DataDB().SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := "Migration needed: please backup cgr data and run : \n" + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +} + +func testUpdateVersionsSubscribers(t *testing.T) { + newVersions := CurrentDataDBVersions() + newVersions[utils.Subscribers] = 0 + if err := dm3.DataDB().SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := utils.EmptyString + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +} + +func testUpdateVersionsThresholds(t *testing.T) { + newVersions := CurrentDataDBVersions() + newVersions[utils.Thresholds] = 2 + if err := dm3.DataDB().SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := "Migration needed: please backup cgr data and run : \n" + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +} + +//Tests for StorDB +func testUpdateVersionsCostDetails(t *testing.T) { + newVersions := CurrentStorDBVersions() + newVersions[utils.CostDetails] = 1 + if err := storageDb.SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := "Migration needed: please backup cgr data and run : \n" + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +} + +func testUpdateVersionsSessionSCosts(t *testing.T) { + newVersions := CurrentStorDBVersions() + newVersions[utils.SessionSCosts] = 2 + if err := storageDb.SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := "Migration needed: please backup cgr data and run : \n" + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +} + +func testUpdateVersionsCDRs(t *testing.T) { + newVersions := CurrentStorDBVersions() + newVersions[utils.CDRs] = 1 + if err := storageDb.SetVersions(newVersions, true); err != nil { + t.Fatal(err) + } + cmd := exec.Command("cgr-engine", fmt.Sprintf(`-config_path=/usr/share/cgrates/conf/samples/%s`, versionsConfigDIR), `-scheduled_shutdown=4ms`) + output := bytes.NewBuffer(nil) + cmd.Stdout = output + if err := cmd.Run(); err != nil { + t.Log(cmd.Args) + t.Log(output.String()) + t.Fatal(err) + } + errExpect := "Migration needed: please backup cgr data and run : \n" + if output.String() != errExpect { + t.Fatalf("Expected %q \n but received: \n %q", errExpect, output.String()) + } +}