Browse Source

template: Fix failing tests on non-amd64 architectures (#10196)

pull/10209/head
Levi Harrison 3 years ago committed by GitHub
parent
commit
71a0f42331
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 40
      template/template_amd64_test.go
  2. 32
      template/template_test.go

40
template/template_amd64_test.go

@ -0,0 +1,40 @@
// Copyright 2021 The Prometheus Authors
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package template
import (
"math"
"testing"
)
// Some test cases rely upon architecture-specific behaviors with respect
// to numerical conversions. The logic remains the same across architectures,
// but outputs can vary, so the cases are only run on amd64.
// See https://github.com/prometheus/prometheus/issues/10185 for more details.
func TestTemplateExpansionAMD64(t *testing.T) {
testTemplateExpansion(t, []scenario{
{
// HumanizeDuration - MaxInt64.
text: "{{ humanizeDuration . }}",
input: math.MaxInt64,
output: "-106751991167300d -15h -30m -8s",
},
{
// HumanizeDuration - MaxUint64.
text: "{{ humanizeDuration . }}",
input: uint(math.MaxUint64),
output: "-106751991167300d -15h -30m -8s",
},
})
}

32
template/template_test.go

@ -27,16 +27,7 @@ import (
) )
func TestTemplateExpansion(t *testing.T) { func TestTemplateExpansion(t *testing.T) {
scenarios := []struct { testTemplateExpansion(t, []scenario{
text string
output string
input interface{}
options []string
queryResult promql.Vector
shouldFail bool
html bool
errorMsg string
}{
{ {
// No template. // No template.
text: "plain text", text: "plain text",
@ -353,14 +344,14 @@ func TestTemplateExpansion(t *testing.T) {
{ {
// HumanizeDuration - int. // HumanizeDuration - int.
text: "{{ range . }}{{ humanizeDuration . }}:{{ end }}", text: "{{ range . }}{{ humanizeDuration . }}:{{ end }}",
input: []int{0, -1, 1, 1234567, math.MaxInt64}, input: []int{0, -1, 1, 1234567},
output: "0s:-1s:1s:14d 6h 56m 7s:-106751991167300d -15h -30m -8s:", output: "0s:-1s:1s:14d 6h 56m 7s:",
}, },
{ {
// HumanizeDuration - uint. // HumanizeDuration - uint.
text: "{{ range . }}{{ humanizeDuration . }}:{{ end }}", text: "{{ range . }}{{ humanizeDuration . }}:{{ end }}",
input: []uint{0, 1, 1234567, math.MaxUint64}, input: []uint{0, 1, 1234567},
output: "0s:1s:14d 6h 56m 7s:-106751991167300d -15h -30m -8s:", output: "0s:1s:14d 6h 56m 7s:",
}, },
{ {
// Humanize* Inf and NaN - float64. // Humanize* Inf and NaN - float64.
@ -489,8 +480,21 @@ func TestTemplateExpansion(t *testing.T) {
text: "{{ printf \"%0.2f\" (parseDuration \"1h2m10ms\") }}", text: "{{ printf \"%0.2f\" (parseDuration \"1h2m10ms\") }}",
output: "3720.01", output: "3720.01",
}, },
})
}
type scenario struct {
text string
output string
input interface{}
options []string
queryResult promql.Vector
shouldFail bool
html bool
errorMsg string
} }
func testTemplateExpansion(t *testing.T, scenarios []scenario) {
extURL, err := url.Parse("http://testhost:9090/path/prefix") extURL, err := url.Parse("http://testhost:9090/path/prefix")
if err != nil { if err != nil {
panic(err) panic(err)

Loading…
Cancel
Save