From c4351933a4785c101c189e4a2b56deee73b267ae Mon Sep 17 00:00:00 2001 From: Edwardro22 Date: Tue, 14 Mar 2017 14:10:26 +0200 Subject: [PATCH] Small finishing touch-ups --- migrator/action_trigger.go | 5 +- migrator/action_trigger_test.go | 40 ++++++++------- migrator/migrator_it_test.go | 88 ++++++++++++++++++++++++--------- 3 files changed, 90 insertions(+), 43 deletions(-) diff --git a/migrator/action_trigger.go b/migrator/action_trigger.go index 8385231ee..c299f70a8 100644 --- a/migrator/action_trigger.go +++ b/migrator/action_trigger.go @@ -129,7 +129,6 @@ func (m *Migrator) getV1ActionTriggerFromDB(key string) (v1Atr *v1ActionTrigger, } func (v1Act v1ActionTrigger) AsActionTrigger() (at *engine.ActionTrigger) { - tim := time.Date(0001, time.January, 1, 0, 0, 0, 0, time.UTC) at = &engine.ActionTrigger{ ID: v1Act.Id, // UniqueID: utils.GenUUID(), @@ -141,7 +140,6 @@ func (v1Act v1ActionTrigger) AsActionTrigger() (at *engine.ActionTrigger) { ActionsID: v1Act.ActionsId, MinQueuedItems: v1Act.MinQueuedItems, Executed: v1Act.Executed, - ActivationDate: tim, } bf := &engine.BalanceFilter{} if v1Act.BalanceId != "" { @@ -176,6 +174,9 @@ func (v1Act v1ActionTrigger) AsActionTrigger() (at *engine.ActionTrigger) { } if !v1Act.BalanceExpirationDate.IsZero() { bf.ExpirationDate = utils.TimePointer(v1Act.BalanceExpirationDate) + at.ExpirationDate = v1Act.BalanceExpirationDate + at.LastExecutionTime = v1Act.BalanceExpirationDate + at.ActivationDate = v1Act.BalanceExpirationDate } at.Balance = bf if at.ThresholdType == "*min_counter" || diff --git a/migrator/action_trigger_test.go b/migrator/action_trigger_test.go index b01ae0e07..341c4f9f9 100644 --- a/migrator/action_trigger_test.go +++ b/migrator/action_trigger_test.go @@ -18,7 +18,6 @@ along with this program. If not, see package migrator import ( - "encoding/json" "reflect" "testing" "time" @@ -27,28 +26,35 @@ import ( "github.com/cgrates/cgrates/utils" ) -var v1ActionTriggers1 = `{"Id" : "Test","BalanceType": "*monetary","BalanceDirection": "*out","ThresholdType":"*max_balance", "ThresholdValue" :2, "ActionsId": "TEST_ACTIONS", "Executed": true}` - func TestV1ActionTriggersAsActionTriggers(t *testing.T) { - tim := time.Date(0001, time.January, 1, 0, 0, 0, 0, time.UTC) - + tim := time.Date(0001, time.January, 1, 2, 0, 0, 0, time.UTC).Local() + v1atrs := &v1ActionTrigger{ + Id: "Test", + BalanceType: "*monetary", + BalanceDirection: "*out", + ThresholdType: "*max_balance", + ThresholdValue: 2, + ActionsId: "TEST_ACTIONS", + Executed: true, + BalanceExpirationDate: tim, + } atrs := &engine.ActionTrigger{ ID: "Test", Balance: &engine.BalanceFilter{ - Type: utils.StringPointer(utils.MONETARY), - Directions: utils.StringMapPointer(utils.NewStringMap(utils.OUT)), + ExpirationDate: utils.TimePointer(tim), + Type: utils.StringPointer(utils.MONETARY), + Directions: utils.StringMapPointer(utils.NewStringMap(utils.OUT)), }, - ThresholdType: utils.TRIGGER_MAX_BALANCE, - ThresholdValue: 2, - ActionsID: "TEST_ACTIONS", - Executed: true, - ActivationDate: tim, + ExpirationDate: tim, + LastExecutionTime: tim, + ActivationDate: tim, + ThresholdType: utils.TRIGGER_MAX_BALANCE, + ThresholdValue: 2, + ActionsID: "TEST_ACTIONS", + Executed: true, } - var v1actstrgrs v1ActionTrigger - if err := json.Unmarshal([]byte(v1ActionTriggers1), &v1actstrgrs); err != nil { - t.Error(err) - } - newatrs := v1actstrgrs.AsActionTrigger() + + newatrs := v1atrs.AsActionTrigger() if !reflect.DeepEqual(atrs, newatrs) { t.Errorf("Expecting: %+v, received: %+v", atrs, newatrs) } diff --git a/migrator/migrator_it_test.go b/migrator/migrator_it_test.go index cb8e40a2a..f3c485a3e 100644 --- a/migrator/migrator_it_test.go +++ b/migrator/migrator_it_test.go @@ -209,7 +209,8 @@ func testMigratorActionPlans(t *testing.T) { } func testMigratorActionTriggers(t *testing.T) { - tim := time.Date(0001, time.January, 1, 0, 0, 0, 0, time.UTC) + tim := time.Date(2012, time.February, 27, 23, 59, 59, 0, time.UTC).Local() + var v1Atr v1ActionTrigger v1atrs := &v1ActionTrigger{ Id: "Test", BalanceType: "*monetary", @@ -224,8 +225,10 @@ func testMigratorActionTriggers(t *testing.T) { &engine.ActionTrigger{ ID: "Test", Balance: &engine.BalanceFilter{ - Type: utils.StringPointer(utils.MONETARY), - Directions: utils.StringMapPointer(utils.NewStringMap(utils.OUT)), + Timings: []*engine.RITiming{}, + ExpirationDate: utils.TimePointer(tim), + Type: utils.StringPointer(utils.MONETARY), + Directions: utils.StringMapPointer(utils.NewStringMap(utils.OUT)), }, ExpirationDate: tim, LastExecutionTime: tim, @@ -242,6 +245,9 @@ func testMigratorActionTriggers(t *testing.T) { if err != nil { t.Error("Error when marshaling ", err.Error()) } + if err := mig.mrshlr.Unmarshal(bit, &v1Atr); err != nil { + t.Error("Error when setting v1 ActionTriggers ", err.Error()) + } setv1id := utils.ACTION_TRIGGER_PREFIX + v1atrs.Id err = mig.SetV1onRedis(setv1id, bit) if err != nil { @@ -255,23 +261,6 @@ func testMigratorActionTriggers(t *testing.T) { if err != nil { t.Error("Error when getting ActionTriggers ", err.Error()) } - if !reflect.DeepEqual(atrs, result) { - t.Errorf("Expecting: %+v, received: %+v", atrs, result) - } - case dbtype == utils.MONGO: - err := mig.SetV1onMongoActionTrigger(utils.ACTION_TRIGGER_PREFIX, v1atrs) - if err != nil { - t.Error("Error when setting v1 ActionTriggers ", err.Error()) - } - err = mig.Migrate("migrateActionTriggers") - if err != nil { - t.Error("Error when migrating ActionTriggers ", err.Error()) - } - result, err := mig.tpDB.GetActionTriggers(v1atrs.Id, true, utils.NonTransactional) - if err != nil { - t.Error("Error when getting ActionTriggers ", err.Error()) - } - //FixMe The flush doesn't seem to clear this collection if !reflect.DeepEqual(atrs[0].ID, result[0].ID) { t.Errorf("Expecting: %+v, received: %+v", atrs[0].ID, result[0].ID) } else if !reflect.DeepEqual(atrs[0].UniqueID, result[0].UniqueID) { @@ -285,13 +274,13 @@ func testMigratorActionTriggers(t *testing.T) { } else if !reflect.DeepEqual(atrs[0].MinSleep, result[0].MinSleep) { t.Errorf("Expecting: %+v, received: %+v", atrs[0].MinSleep, result[0].MinSleep) } else if !reflect.DeepEqual(atrs[0].ExpirationDate, result[0].ExpirationDate) { - // t.Errorf("Expecting: %+v, received: %+v", atrs[0].ExpirationDate, result[0].ExpirationDate) - } else if !reflect.DeepEqual(atrs[0].MinSleep, result[0].MinSleep) { - t.Errorf("Expecting: %+v, received: %+v", atrs[0].MinSleep, result[0].MinSleep) + t.Errorf("Expecting: %+v, received: %+v", atrs[0].ExpirationDate, result[0].ExpirationDate) } else if !reflect.DeepEqual(atrs[0].ActivationDate, result[0].ActivationDate) { t.Errorf("Expecting: %+v, received: %+v", atrs[0].ActivationDate, result[0].ActivationDate) } else if !reflect.DeepEqual(atrs[0].Balance, result[0].Balance) { - t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance, result[0].Balance) + // t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance, result[0].Balance) + } else if !reflect.DeepEqual(atrs[0].Weight, result[0].Weight) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Weight, result[0].Weight) } else if !reflect.DeepEqual(atrs[0].ActionsID, result[0].ActionsID) { t.Errorf("Expecting: %+v, received: %+v", atrs[0].ActionsID, result[0].ActionsID) } else if !reflect.DeepEqual(atrs[0].MinQueuedItems, result[0].MinQueuedItems) { @@ -301,6 +290,57 @@ func testMigratorActionTriggers(t *testing.T) { } else if !reflect.DeepEqual(atrs[0].LastExecutionTime, result[0].LastExecutionTime) { t.Errorf("Expecting: %+v, received: %+v", atrs[0].LastExecutionTime, result[0].LastExecutionTime) } + //Testing each field of balance + if !reflect.DeepEqual(atrs[0].Balance.Uuid, result[0].Balance.Uuid) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Uuid, result[0].Balance.Uuid) + } else if !reflect.DeepEqual(atrs[0].Balance.ID, result[0].Balance.ID) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.ID, result[0].Balance.ID) + } else if !reflect.DeepEqual(atrs[0].Balance.Type, result[0].Balance.Type) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Type, result[0].Balance.Type) + } else if !reflect.DeepEqual(atrs[0].Balance.Value, result[0].Balance.Value) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Value, result[0].Balance.Value) + } else if !reflect.DeepEqual(atrs[0].Balance.Directions, result[0].Balance.Directions) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Directions, result[0].Balance.Directions) + } else if !reflect.DeepEqual(atrs[0].Balance.ExpirationDate, result[0].Balance.ExpirationDate) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.ExpirationDate, result[0].Balance.ExpirationDate) + } else if !reflect.DeepEqual(atrs[0].Balance.Weight, result[0].Balance.Weight) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Weight, result[0].Balance.Weight) + } else if !reflect.DeepEqual(atrs[0].Balance.DestinationIDs, result[0].Balance.DestinationIDs) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.DestinationIDs, result[0].Balance.DestinationIDs) + } else if !reflect.DeepEqual(atrs[0].Balance.RatingSubject, result[0].Balance.RatingSubject) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.RatingSubject, result[0].Balance.RatingSubject) + } else if !reflect.DeepEqual(atrs[0].Balance.Categories, result[0].Balance.Categories) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Categories, result[0].Balance.Categories) + } else if !reflect.DeepEqual(atrs[0].Balance.SharedGroups, result[0].Balance.SharedGroups) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.SharedGroups, result[0].Balance.SharedGroups) + } else if !reflect.DeepEqual(atrs[0].Balance.TimingIDs, result[0].Balance.TimingIDs) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.TimingIDs, result[0].Balance.TimingIDs) + } else if !reflect.DeepEqual(atrs[0].Balance.TimingIDs, result[0].Balance.TimingIDs) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Timings, result[0].Balance.Timings) + } else if !reflect.DeepEqual(atrs[0].Balance.Disabled, result[0].Balance.Disabled) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Disabled, result[0].Balance.Disabled) + } else if !reflect.DeepEqual(atrs[0].Balance.Factor, result[0].Balance.Factor) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Factor, result[0].Balance.Factor) + } else if !reflect.DeepEqual(atrs[0].Balance.Blocker, result[0].Balance.Blocker) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0].Balance.Blocker, result[0].Balance.Blocker) + } + + case dbtype == utils.MONGO: + err := mig.SetV1onMongoActionTrigger(utils.ACTION_TRIGGER_PREFIX, v1atrs) + if err != nil { + t.Error("Error when setting v1 ActionTriggers ", err.Error()) + } + err = mig.Migrate("migrateActionTriggers") + if err != nil { + t.Error("Error when migrating ActionTriggers ", err.Error()) + } + result, err := mig.tpDB.GetActionTriggers(v1atrs.Id, true, utils.NonTransactional) + if err != nil { + t.Error("Error when getting ActionTriggers ", err.Error()) + } + if !reflect.DeepEqual(atrs[0], result[0]) { + t.Errorf("Expecting: %+v, received: %+v", atrs[0], result[0]) + } err = mig.DropV1Colection(utils.ACTION_TRIGGER_PREFIX) if err != nil { t.Error("Error when flushing v1 ActionTriggers ", err.Error())