mirror of
https://github.com/open-policy-agent/opa.git
synced 2026-08-12 19:32:48 -06:00
build(go): bump golang, build with 1.22, support 1.20+ (#6595)
https://go.dev/doc/go1.22 Signed-off-by: Stephan Renatus <stephan@styra.com>
This commit is contained in:
@@ -292,7 +292,7 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os: [ubuntu-22.04, macos-latest]
|
||||
version: ["1.19"]
|
||||
version: ["1.20"]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Download generated artifacts
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
1.21.5
|
||||
1.22
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module github.com/open-policy-agent/opa
|
||||
|
||||
go 1.19
|
||||
go 1.20
|
||||
|
||||
require (
|
||||
github.com/OneOfOne/xxhash v1.2.8
|
||||
|
||||
@@ -1,145 +0,0 @@
|
||||
// Copyright 2022 The OPA Authors. All rights reserved.
|
||||
// Use of this source code is governed by an Apache2
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// NOTE(sr): Different go runtime metrics on 1.19.
|
||||
// This can be removed when we drop support for go 1.19.
|
||||
//go:build go1.19 && !go1.20
|
||||
// +build go1.19,!go1.20
|
||||
|
||||
package prometheus
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
"github.com/open-policy-agent/opa/logging"
|
||||
"github.com/open-policy-agent/opa/metrics"
|
||||
)
|
||||
|
||||
func TestJSONSerialization(t *testing.T) {
|
||||
inner := metrics.New()
|
||||
logger := func(logger logging.Logger) loggerFunc {
|
||||
return func(attrs map[string]interface{}, f string, a ...interface{}) {
|
||||
logger.WithFields(attrs).Error(f, a...)
|
||||
}
|
||||
}(logging.NewNoOpLogger())
|
||||
|
||||
prom := New(inner, logger, []float64{1e-6, 5e-6, 1e-5, 5e-5, 1e-4, 5e-4, 1e-3, 0.01, 0.1, 1})
|
||||
|
||||
m := prom.All()
|
||||
bs, err := json.Marshal(m)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
act := make(map[string]map[string]interface{}, len(m))
|
||||
err = json.Unmarshal(bs, &act)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// NOTE(sr): "http_request_duration_seconds" only shows up after there has been a request
|
||||
exp := map[string][]string{
|
||||
"GAUGE": {
|
||||
"go_gc_heap_goal_bytes",
|
||||
"go_gc_heap_objects_objects",
|
||||
"go_gc_stack_starting_size_bytes",
|
||||
"go_gc_limiter_last_enabled_gc_cycle",
|
||||
"go_goroutines",
|
||||
"go_info",
|
||||
"go_memory_classes_heap_free_bytes",
|
||||
"go_memory_classes_heap_objects_bytes",
|
||||
"go_memory_classes_heap_released_bytes",
|
||||
"go_memory_classes_heap_stacks_bytes",
|
||||
"go_memory_classes_heap_unused_bytes",
|
||||
"go_memory_classes_metadata_mcache_free_bytes",
|
||||
"go_memory_classes_metadata_mcache_inuse_bytes",
|
||||
"go_memory_classes_metadata_mspan_free_bytes",
|
||||
"go_memory_classes_metadata_mspan_inuse_bytes",
|
||||
"go_memory_classes_metadata_other_bytes",
|
||||
"go_memory_classes_os_stacks_bytes",
|
||||
"go_memory_classes_other_bytes",
|
||||
"go_memory_classes_profiling_buckets_bytes",
|
||||
"go_memory_classes_total_bytes",
|
||||
"go_memstats_alloc_bytes",
|
||||
"go_memstats_buck_hash_sys_bytes",
|
||||
// "go_memstats_gc_cpu_fraction", // removed: https://github.com/prometheus/client_golang/issues/842#issuecomment-861812034
|
||||
"go_memstats_gc_sys_bytes",
|
||||
"go_memstats_heap_alloc_bytes",
|
||||
"go_memstats_heap_idle_bytes",
|
||||
"go_memstats_heap_inuse_bytes",
|
||||
"go_memstats_heap_objects",
|
||||
"go_memstats_heap_released_bytes",
|
||||
"go_memstats_heap_sys_bytes",
|
||||
"go_memstats_last_gc_time_seconds",
|
||||
"go_memstats_mcache_inuse_bytes",
|
||||
"go_memstats_mcache_sys_bytes",
|
||||
"go_memstats_mspan_inuse_bytes",
|
||||
"go_memstats_mspan_sys_bytes",
|
||||
"go_memstats_next_gc_bytes",
|
||||
"go_memstats_other_sys_bytes",
|
||||
"go_memstats_stack_inuse_bytes",
|
||||
"go_memstats_stack_sys_bytes",
|
||||
"go_memstats_sys_bytes",
|
||||
"go_sched_goroutines_goroutines",
|
||||
"go_sched_gomaxprocs_threads",
|
||||
"go_threads",
|
||||
},
|
||||
"COUNTER": {
|
||||
"go_gc_cycles_automatic_gc_cycles_total",
|
||||
"go_gc_cycles_forced_gc_cycles_total",
|
||||
"go_gc_cycles_total_gc_cycles_total",
|
||||
"go_gc_heap_allocs_bytes_total",
|
||||
"go_gc_heap_allocs_objects_total",
|
||||
"go_gc_heap_tiny_allocs_objects_total",
|
||||
"go_gc_heap_frees_bytes_total",
|
||||
"go_gc_heap_frees_objects_total",
|
||||
"go_cgo_go_to_c_calls_calls_total",
|
||||
"go_memstats_alloc_bytes_total",
|
||||
"go_memstats_lookups_total",
|
||||
"go_memstats_mallocs_total",
|
||||
"go_memstats_frees_total",
|
||||
},
|
||||
"SUMMARY": {
|
||||
"go_gc_duration_seconds",
|
||||
},
|
||||
"HISTOGRAM": {
|
||||
"go_gc_pauses_seconds", // was: "go_gc_pauses_seconds_total"
|
||||
"go_gc_heap_allocs_by_size_bytes", // was: "go_gc_heap_allocs_by_size_bytes_total"
|
||||
"go_gc_heap_frees_by_size_bytes", // was: "go_gc_heap_frees_by_size_bytes_total"
|
||||
"go_sched_latencies_seconds",
|
||||
},
|
||||
}
|
||||
found := 0
|
||||
for typ, es := range exp {
|
||||
for _, e := range es {
|
||||
a, ok := act[e]
|
||||
if !ok {
|
||||
t.Errorf("%v: metric missing", e)
|
||||
continue
|
||||
}
|
||||
if act, ok := a["type"].(string); !ok || act != typ {
|
||||
t.Errorf("%v: unexpected type: %v (expected %v)", e, act, typ)
|
||||
continue
|
||||
}
|
||||
found++
|
||||
}
|
||||
}
|
||||
if len(act) != found {
|
||||
t.Errorf("unexpected extra metrics, expected %d, got %d", found, len(act))
|
||||
for a, ty := range act {
|
||||
found := false
|
||||
for _, es := range exp {
|
||||
for _, e := range es {
|
||||
if a == e {
|
||||
found = true
|
||||
}
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
t.Errorf("unexpected metric: %v (type: %v)", a, ty)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,10 @@
|
||||
// Copyright 2022 The OPA Authors. All rights reserved.
|
||||
// Use of this source code is governed by an Apache2
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
// NOTE(an): Different go runtime metrics on 1.20.
|
||||
// This can be removed when we drop support for go 1.19.
|
||||
//go:build go1.20
|
||||
// +build go1.20
|
||||
//
|
||||
// NOTE(sr): Different go runtime metrics on 1.20 vs 1.22.
|
||||
// Let's only test these on 1.22.
|
||||
//go:build go1.22
|
||||
|
||||
package prometheus
|
||||
|
||||
@@ -137,6 +136,13 @@ func TestJSONSerialization(t *testing.T) {
|
||||
"go_godebug_non_default_behavior_x509usefallbackroots_events_total",
|
||||
"go_godebug_non_default_behavior_zipinsecurepath_events_total",
|
||||
"go_godebug_non_default_behavior_tlsmaxrsasize_events_total",
|
||||
"go_godebug_non_default_behavior_gotypesalias_events_total", // BEGIN added in 1.22
|
||||
"go_godebug_non_default_behavior_tlsunsafeekm_events_total",
|
||||
"go_godebug_non_default_behavior_httplaxcontentlength_events_total",
|
||||
"go_godebug_non_default_behavior_x509usepolicies_events_total",
|
||||
"go_godebug_non_default_behavior_tls10server_events_total",
|
||||
"go_godebug_non_default_behavior_httpmuxgo121_events_total",
|
||||
"go_godebug_non_default_behavior_tlsrsakex_events_total",
|
||||
},
|
||||
"SUMMARY": {
|
||||
"go_gc_duration_seconds",
|
||||
@@ -146,6 +152,10 @@ func TestJSONSerialization(t *testing.T) {
|
||||
"go_gc_heap_allocs_by_size_bytes", // was: "go_gc_heap_allocs_by_size_bytes_total"
|
||||
"go_gc_heap_frees_by_size_bytes", // was: "go_gc_heap_frees_by_size_bytes_total"
|
||||
"go_sched_latencies_seconds",
|
||||
"go_sched_pauses_stopping_other_seconds", // BEGIN added in 1.22
|
||||
"go_sched_pauses_stopping_gc_seconds",
|
||||
"go_sched_pauses_total_gc_seconds",
|
||||
"go_sched_pauses_total_other_seconds",
|
||||
},
|
||||
}
|
||||
found := 0
|
||||
|
||||
@@ -10,7 +10,6 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"runtime"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
@@ -472,12 +471,7 @@ func TestTopdownJWTEncodeSignECWithSeedReturnsSameSignature(t *testing.T) {
|
||||
"d":"jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI"
|
||||
}, x)`
|
||||
|
||||
// go1.20 and beyond
|
||||
encodedSigned := "eyJhbGciOiAiRVMyNTYifQ.eyJwYXkiOiAibG9hZCJ9.GRp6wIqDZuYnvQH50hnIy559LdrjUux76v1ynxX6lH0XtlgwreyR16x2JMnuElo79X3zUbqlWrZITICv86arew"
|
||||
if strings.HasPrefix(runtime.Version(), "go1.19") { // we don't use go1.18 anymore
|
||||
encodedSigned = "eyJhbGciOiAiRVMyNTYifQ.eyJwYXkiOiAibG9hZCJ9.05wmHY3NomU1jr7yvusBvKwhthRklPuJhUPOkoeIn5e5n_GXvE25EfRs9AJK2wOy6NoY2ljhj07M9BMtV0dfyA"
|
||||
}
|
||||
|
||||
for i := 0; i < 10; i++ {
|
||||
q := NewQuery(ast.MustParseBody(query)).
|
||||
WithSeed(&cng{}).
|
||||
|
||||
Reference in New Issue
Block a user