diff options
author | openshift-ci[bot] <75433959+openshift-ci[bot]@users.noreply.github.com> | 2021-08-05 17:45:31 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-05 17:45:31 +0000 |
commit | b243185e4fbf002c381b4d6cf9be1fe25450f4b9 (patch) | |
tree | bbc7863f5af9f83df6d7d484e580da22e98d6383 | |
parent | faf489b7b26d462b6487c085b1f0840df46660f7 (diff) | |
parent | 8cbbbe6efe5da34da1cdb2c750f4d26e3d306ed5 (diff) | |
download | podman-b243185e4fbf002c381b4d6cf9be1fe25450f4b9.tar.gz podman-b243185e4fbf002c381b4d6cf9be1fe25450f4b9.tar.bz2 podman-b243185e4fbf002c381b4d6cf9be1fe25450f4b9.zip |
Merge pull request #11135 from matejvasek/fix_ts
Fix TS parsing for fractional values
-rw-r--r-- | pkg/util/utils.go | 6 | ||||
-rw-r--r-- | pkg/util/utils_test.go | 15 |
2 files changed, 19 insertions, 2 deletions
diff --git a/pkg/util/utils.go b/pkg/util/utils.go index 60aa64ac1..774590f44 100644 --- a/pkg/util/utils.go +++ b/pkg/util/utils.go @@ -3,6 +3,7 @@ package util import ( "encoding/json" "fmt" + "math" "os" "os/user" "path/filepath" @@ -530,9 +531,10 @@ func ParseInputTime(inputTime string) (time.Time, error) { } } - unixTimestamp, err := strconv.ParseInt(inputTime, 10, 64) + unixTimestamp, err := strconv.ParseFloat(inputTime, 64) if err == nil { - return time.Unix(unixTimestamp, 0), nil + iPart, fPart := math.Modf(unixTimestamp) + return time.Unix(int64(iPart), int64(fPart*1_000_000_000)).UTC(), nil } // input might be a duration diff --git a/pkg/util/utils_test.go b/pkg/util/utils_test.go index cb737bd76..027acbdab 100644 --- a/pkg/util/utils_test.go +++ b/pkg/util/utils_test.go @@ -2,6 +2,7 @@ package util import ( "testing" + "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -277,3 +278,17 @@ func TestPeriodAndQuotaToCores(t *testing.T) { assert.Equal(t, PeriodAndQuotaToCores(period, quota), expectedCores) } + +func TestParseInputTime(t *testing.T) { + tm, err := ParseInputTime("1.5") + if err != nil { + t.Errorf("expected error to be nil but was: %v", err) + } + + expected, err := time.ParseInLocation(time.RFC3339Nano, "1970-01-01T00:00:01.500000000Z", time.UTC) + if err != nil { + t.Fatal(err) + } + + assert.Equal(t, expected, tm) +} |