summaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authoropenshift-ci[bot] <75433959+openshift-ci[bot]@users.noreply.github.com>2021-08-05 17:45:31 +0000
committerGitHub <noreply@github.com>2021-08-05 17:45:31 +0000
commitb243185e4fbf002c381b4d6cf9be1fe25450f4b9 (patch)
treebbc7863f5af9f83df6d7d484e580da22e98d6383 /pkg
parentfaf489b7b26d462b6487c085b1f0840df46660f7 (diff)
parent8cbbbe6efe5da34da1cdb2c750f4d26e3d306ed5 (diff)
downloadpodman-b243185e4fbf002c381b4d6cf9be1fe25450f4b9.tar.gz
podman-b243185e4fbf002c381b4d6cf9be1fe25450f4b9.tar.bz2
podman-b243185e4fbf002c381b4d6cf9be1fe25450f4b9.zip
Merge pull request #11135 from matejvasek/fix_ts
Fix TS parsing for fractional values
Diffstat (limited to 'pkg')
-rw-r--r--pkg/util/utils.go6
-rw-r--r--pkg/util/utils_test.go15
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)
+}