mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
Fixes #1195
This commit is contained in:
committed by
Dan Christian Bogos
parent
c5d748db80
commit
fb631f74b5
@@ -407,10 +407,10 @@ var xmlContent = `<?xml version="1.0" encoding="UTF-8"?>
|
||||
</SignalingInfo>
|
||||
<IcSeizeTime>1510225513055</IcSeizeTime>
|
||||
<OgSeizeTime>1510225513304</OgSeizeTime>
|
||||
<RingingTime>20160419210005.247</RingingTime>
|
||||
<ConnectTime>20160419210006.813</ConnectTime>
|
||||
<RingingTime>1510225514836</RingingTime>
|
||||
<ConnectTime/>
|
||||
<DisconnectTime>1510225516981</DisconnectTime>
|
||||
<ReleaseTime>20160419210020.296</ReleaseTime>
|
||||
<ReleaseTime>1510225516981</ReleaseTime>
|
||||
<CompleteTime>1510225516981</CompleteTime>
|
||||
</Call>
|
||||
<Call seqnum="0000000002" error="no" longcall="false" testcall="false" class="0" operator="false" correlator="402123969565" connected="true">
|
||||
@@ -455,10 +455,10 @@ var xmlContent = `<?xml version="1.0" encoding="UTF-8"?>
|
||||
</SignalingInfo>
|
||||
<IcSeizeTime>1510225531933</IcSeizeTime>
|
||||
<OgSeizeTime>1510225532183</OgSeizeTime>
|
||||
<RingingTime>20160419210005.247</RingingTime>
|
||||
<ConnectTime>20160419210006.813</ConnectTime>
|
||||
<RingingTime>1510225534973</RingingTime>
|
||||
<ConnectTime>1510225539364</ConnectTime>
|
||||
<DisconnectTime>1510225593101</DisconnectTime>
|
||||
<ReleaseTime>20160419210020.296</ReleaseTime>
|
||||
<ReleaseTime>1510225593101</ReleaseTime>
|
||||
<CompleteTime>1510225593101</CompleteTime>
|
||||
</Call>
|
||||
<Call seqnum="0000000003" error="no" longcall="false" testcall="false" class="0" operator="false" correlator="406419270822" connected="true">
|
||||
@@ -503,10 +503,10 @@ var xmlContent = `<?xml version="1.0" encoding="UTF-8"?>
|
||||
</SignalingInfo>
|
||||
<IcSeizeTime>1510225865894</IcSeizeTime>
|
||||
<OgSeizeTime>1510225866144</OgSeizeTime>
|
||||
<RingingTime>20160419210005.247</RingingTime>
|
||||
<ConnectTime>20160419210006.813</ConnectTime>
|
||||
<RingingTime>1510225866756</RingingTime>
|
||||
<ConnectTime>1510225876243</ConnectTime>
|
||||
<DisconnectTime>1510225916144</DisconnectTime>
|
||||
<ReleaseTime>20160419210020.296</ReleaseTime>
|
||||
<ReleaseTime>1510225916144</ReleaseTime>
|
||||
<CompleteTime>1510225916144</CompleteTime>
|
||||
</Call>
|
||||
</CDRs>
|
||||
@@ -605,13 +605,13 @@ func TestXMLRPProcessWithNewFilters2(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
expectedCDRs := []*engine.CDR{
|
||||
&engine.CDR{CGRID: "7c6170203bd3d5b34e9fce366b5ee7d621217824",
|
||||
&engine.CDR{CGRID: "0ad7f9554ff8fc5b3a7cebbe7431bbf809bc5144",
|
||||
OriginHost: "0.0.0.0", Source: "zw_cfs1", OriginID: "46d7974398c2671016afccc3f2c428c7",
|
||||
ToR: "*voice", RequestType: "*rated", Tenant: "XX.liquid.tel",
|
||||
Category: "call", Account: "+27110493421", Destination: "+270843073451",
|
||||
SetupTime: time.Date(2016, 4, 19, 21, 0, 5, 247000000, time.UTC),
|
||||
AnswerTime: time.Date(2016, 4, 19, 21, 0, 6, 813000000, time.UTC),
|
||||
Usage: time.Duration(13483000000),
|
||||
SetupTime: time.Date(2017, 11, 9, 11, 5, 34, 973000000, time.UTC),
|
||||
AnswerTime: time.Date(2017, 11, 9, 11, 5, 39, 364000000, time.UTC),
|
||||
Usage: time.Duration(53737000000),
|
||||
ExtraFields: map[string]string{}, Cost: -1},
|
||||
}
|
||||
if !reflect.DeepEqual(expectedCDRs, cdrs) {
|
||||
|
||||
@@ -170,6 +170,7 @@ func ParseTimeDetectLayout(tmStr string, timezone string) (time.Time, error) {
|
||||
fsTimestamp := regexp.MustCompile(`^\d{16}$`)
|
||||
astTimestamp := regexp.MustCompile(`^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d*[+,-]\d+$`)
|
||||
unixTimestampRule := regexp.MustCompile(`^\d{10}$`)
|
||||
unixTimestampMilisecondsRule := regexp.MustCompile(`^\d{13}$`)
|
||||
oneLineTimestampRule := regexp.MustCompile(`^\d{14}$`)
|
||||
oneSpaceTimestampRule := regexp.MustCompile(`^\d{2}\.\d{2}.\d{4}\s{1}\d{2}:\d{2}:\d{2}$`)
|
||||
eamonTimestampRule := regexp.MustCompile(`^\d{2}/\d{2}/\d{4}\s{1}\d{2}:\d{2}:\d{2}$`)
|
||||
@@ -197,6 +198,12 @@ func ParseTimeDetectLayout(tmStr string, timezone string) (time.Time, error) {
|
||||
} else {
|
||||
return time.Unix(tmstmp, 0).In(loc), nil
|
||||
}
|
||||
case unixTimestampMilisecondsRule.MatchString(tmStr):
|
||||
if tmstmp, err := strconv.ParseInt(tmStr, 10, 64); err != nil {
|
||||
return nilTime, err
|
||||
} else {
|
||||
return time.Unix(0, tmstmp*int64(time.Millisecond)).In(loc), nil
|
||||
}
|
||||
case tmStr == "0" || len(tmStr) == 0: // Time probably missing from request
|
||||
return nilTime, nil
|
||||
case oneLineTimestampRule.MatchString(tmStr):
|
||||
|
||||
@@ -239,6 +239,15 @@ func TestParseTimeDetectLayout(t *testing.T) {
|
||||
} else if parseNowTimeStr.After(start) && parseNowTimeStr.Before(end) {
|
||||
t.Errorf("Unexpected time parsed: %v", parseNowTimeStr)
|
||||
}
|
||||
|
||||
unixTmMilisecStr := "1534176053410"
|
||||
expectedTime = time.Date(2018, 8, 13, 16, 00, 53, 410000000, time.UTC)
|
||||
unixTm, err = ParseTimeDetectLayout(unixTmMilisecStr, "")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
} else if !unixTm.Equal(expectedTime) {
|
||||
t.Errorf("Unexpected time parsed: %v, expecting: %v", unixTm, expectedTime)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseDateUnix(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user