diff --git a/engine/loader_csv.go b/engine/loader_csv.go index fdbf94ee2..e0b8a4019 100644 --- a/engine/loader_csv.go +++ b/engine/loader_csv.go @@ -438,7 +438,7 @@ func (csvr *CSVReader) LoadDestinationRates() (err error) { log.Printf("Error parsing rounding decimals: %s", record[4]) return err } - maxCost, err := strconv.ParseFloat(record[5], 64) + maxCost, err := strconv.ParseFloat(ValueOrDefault(record[5], "0"), 64) if err != nil { log.Printf("Error parsing max cost from: %v", record[5]) return err diff --git a/engine/loader_csv_test.go b/engine/loader_csv_test.go index c9de2d5d9..73681676b 100644 --- a/engine/loader_csv_test.go +++ b/engine/loader_csv_test.go @@ -83,8 +83,8 @@ T1,NAT,LANDLINE_OFFPEAK,*middle,4,0, T2,GERMANY,GBP_72,*middle,4,0, T2,GERMANY_O2,GBP_70,*middle,4,0, T2,GERMANY_PREMIUM,GBP_71,*middle,4,0, -DR_UK_Mobile_BIG5_PKG,DST_UK_Mobile_BIG5,RT_UK_Mobile_BIG5_PKG,*middle,4,0, -DR_UK_Mobile_BIG5,DST_UK_Mobile_BIG5,RT_UK_Mobile_BIG5,*middle,4,0, +DR_UK_Mobile_BIG5_PKG,DST_UK_Mobile_BIG5,RT_UK_Mobile_BIG5_PKG,*middle,4,, +DR_UK_Mobile_BIG5,DST_UK_Mobile_BIG5,RT_UK_Mobile_BIG5,*middle,4,, DATA_RATE,*any,LANDLINE_OFFPEAK,*middle,4,0, RT_URG,URG,R_URG,*middle,4,0, MX_FREE,RET,MX,*middle,4,10,*free diff --git a/engine/loader_helpers.go b/engine/loader_helpers.go index fbb9e4f51..dcafa1f21 100644 --- a/engine/loader_helpers.go +++ b/engine/loader_helpers.go @@ -371,7 +371,7 @@ var FileValidators = map[string]*FileLineRegexValidator{ regexp.MustCompile(`(?:\w+\s*),(?:\d+\.*\d*s*),(?:\d+\.*\d*s*),(?:\d+\.*\d*(ns|us|µs|ms|s|m|h)*\s*),(?:\d+\.*\d*(ns|us|µs|ms|s|m|h)*\s*),(?:\d+\.*\d*(ns|us|µs|ms|s|m|h)*\s*)$`), "Tag([0-9A-Za-z_]),ConnectFee([0-9.]),Rate([0-9.]),RateUnit([0-9.]ns|us|µs|ms|s|m|h),RateIncrementStart([0-9.]ns|us|µs|ms|s|m|h),GroupIntervalStart([0-9.]ns|us|µs|ms|s|m|h)"}, utils.DESTINATION_RATES_CSV: &FileLineRegexValidator{utils.DESTINATION_RATES_NRCOLS, - regexp.MustCompile(`^(?:\w+\s*),(?:\w+\s*|\*any),(?:\w+\s*),(?:\*up|\*down|\*middle),(?:\d+),(?:\d+\.*\d*s*),(?:\*free|\*diconnect)?$`), + regexp.MustCompile(`^(?:\w+\s*),(?:\w+\s*|\*any),(?:\w+\s*),(?:\*up|\*down|\*middle),(?:\d+),(?:\d+\.*\d*s*)?,(?:\*free|\*diconnect)?$`), "Tag([0-9A-Za-z_]),DestinationsTag([0-9A-Za-z_]|*any),RatesTag([0-9A-Za-z_]),RoundingMethod(*up|*middle|*down),RoundingDecimals([0-9.])"}, utils.RATING_PLANS_CSV: &FileLineRegexValidator{utils.DESTRATE_TIMINGS_NRCOLS, regexp.MustCompile(`(?:\w+\s*,\s*){3}(?:\d+.?\d*){1}$`), diff --git a/engine/loader_helpers_test.go b/engine/loader_helpers_test.go index bcdaf7d2b..7cf658c0a 100644 --- a/engine/loader_helpers_test.go +++ b/engine/loader_helpers_test.go @@ -49,6 +49,7 @@ var destRatesSample = `#Tag,DestinationsTag,RatesTag,MaxCost,MaxCostStrategy DR_RETAIL,GERMANY,RT_1CENT,*up,0,0, DUMMY,INVALID;DATA DR_DATA_1,*any,RT_DATA_2c,*up,2,0, +_TNT_1211_01_V_ANY,CST_1246534_BRB02,C_TNT_1211_01_V_1246534_BRB02_ANY,*up,2,, ` var ratingPlansSample = `#Tag,DestinationRatesTag,TimingTag,Weight RP_RETAIL,DR_RETAIL,ALWAYS,10 @@ -197,7 +198,7 @@ func TestDestRatesValidator(t *testing.T) { if valid { t.Error("Validation passed for invalid line", string(ln)) } - case 2, 4: + case 2, 4, 5: if !valid { t.Error("Validation did not pass for valid line", string(ln)) }