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

This commit is contained in:
Levi Harrison 2022-01-24 18:15:38 -05:00 committed by GitHub
parent 9bdd2d0ffd
commit 71a0f42331
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 59 additions and 15 deletions

View file

@ -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",
},
})
}

View file

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