Skip to content

Commit 8e71087

Browse files
authored
e2e: generate network policy api manifest url from go.mod (#6050)
Signed-off-by: zhangzujian <zhangzujian.7@gmail.com>
1 parent 1c37f00 commit 8e71087

File tree

5 files changed

+216
-114
lines changed

5 files changed

+216
-114
lines changed

test/anp/anp_test.go

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,63 @@
11
package anp
22

33
import (
4-
"fmt"
54
"os"
5+
"path"
6+
"slices"
67
"testing"
78
"time"
89

10+
"golang.org/x/mod/modfile"
11+
"golang.org/x/mod/module"
912
"gopkg.in/yaml.v3"
1013
"k8s.io/apimachinery/pkg/util/sets"
1114
"k8s.io/client-go/kubernetes"
1215
"k8s.io/client-go/tools/clientcmd"
1316
"sigs.k8s.io/controller-runtime/pkg/client"
1417
"sigs.k8s.io/controller-runtime/pkg/client/config"
18+
1519
netpolv1alpha1 "sigs.k8s.io/network-policy-api/apis/v1alpha1"
1620
"sigs.k8s.io/network-policy-api/conformance/tests"
1721
netpolv1config "sigs.k8s.io/network-policy-api/conformance/utils/config"
1822
"sigs.k8s.io/network-policy-api/conformance/utils/suite"
1923
)
2024

2125
const (
22-
NetworkPolicyANPAPIRepoURL = "https://raw.githubusercontent.com/kubernetes-sigs/network-policy-api/v0.1.5"
23-
anpReportFileName = "anp-test-report.yaml"
26+
NetworkPolicyAPIRepoRaw = "https://raw.githubusercontent.com/kubernetes-sigs/network-policy-api"
27+
NetworkPolicyAPIRepoPath = "conformance/base/manifests.yaml"
28+
anpReportFileName = "anp-test-report.yaml"
2429
)
2530

26-
var baseAnpManifests = fmt.Sprintf("%s/conformance/base/manifests.yaml", NetworkPolicyANPAPIRepoURL)
27-
2831
func TestAdminNetworkPolicyConformance(t *testing.T) {
32+
content, err := os.ReadFile("go.mod")
33+
if err != nil {
34+
t.Fatalf("Failed to read go.mod: %v", err)
35+
}
36+
37+
mf, err := modfile.Parse("go.mod", content, nil)
38+
if err != nil {
39+
t.Fatalf("Failed to parse go.mod: %v", err)
40+
}
41+
42+
var version string
43+
for r := range slices.Values(mf.Require) {
44+
if r.Mod.Path != "sigs.k8s.io/network-policy-api" {
45+
continue
46+
}
47+
t.Logf("network-policy-api module version: %s", r.Mod.Version)
48+
version = r.Mod.Version
49+
}
50+
51+
gitRef := version
52+
if module.IsPseudoVersion(version) {
53+
t.Logf("Pseudo version detected: %s", version)
54+
if gitRef, err = module.PseudoVersionRev(version); err != nil {
55+
t.Fatalf("Failed to get git revision from pseudo version: %v", err)
56+
}
57+
}
58+
manifestsURL := path.Join(NetworkPolicyAPIRepoRaw, gitRef, NetworkPolicyAPIRepoPath)
59+
t.Logf("Using manifests URL: %s", manifestsURL)
60+
2961
t.Log("Configuring environment for adminnetworkpolicies conformance tests")
3062
cfg, err := config.GetConfig()
3163
if err != nil {
@@ -43,7 +75,7 @@ func TestAdminNetworkPolicyConformance(t *testing.T) {
4375
if err != nil {
4476
t.Fatalf("error when creating Kubernetes ClientSet: %v", err)
4577
}
46-
err = netpolv1alpha1.AddToScheme(client.Scheme())
78+
err = netpolv1alpha1.Install(client.Scheme())
4779
if err != nil {
4880
t.Fatalf("Error initializing API scheme: %v", err)
4981
}
@@ -61,7 +93,7 @@ func TestAdminNetworkPolicyConformance(t *testing.T) {
6193
Debug: true,
6294
CleanupBaseResources: true,
6395
SupportedFeatures: suite.StandardFeatures,
64-
BaseManifests: baseAnpManifests,
96+
BaseManifests: manifestsURL,
6597
TimeoutConfig: netpolv1config.TimeoutConfig{GetTimeout: 300 * time.Second},
6698
},
6799
ConformanceProfiles: profiles,

test/anp/go.mod

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
module github.com/kubeovn/kube-ovn/test/anp
22

3-
go 1.25.4
3+
go 1.25.5
44

55
require (
6+
golang.org/x/mod v0.31.0
67
gopkg.in/yaml.v3 v3.0.1
78
k8s.io/apimachinery v0.34.3
89
k8s.io/client-go v0.34.3

test/cnp/cnp_test.go

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,63 @@
11
package cnp
22

33
import (
4-
"fmt"
54
"os"
6-
netpolv1alpha2 "sigs.k8s.io/network-policy-api/apis/v1alpha2"
5+
"path"
6+
"slices"
77
"testing"
88
"time"
99

10+
"golang.org/x/mod/modfile"
11+
"golang.org/x/mod/module"
1012
"gopkg.in/yaml.v3"
1113
"k8s.io/apimachinery/pkg/util/sets"
1214
"k8s.io/client-go/kubernetes"
1315
"k8s.io/client-go/tools/clientcmd"
1416
"sigs.k8s.io/controller-runtime/pkg/client"
1517
"sigs.k8s.io/controller-runtime/pkg/client/config"
18+
19+
netpolv1alpha2 "sigs.k8s.io/network-policy-api/apis/v1alpha2"
1620
"sigs.k8s.io/network-policy-api/conformance/tests"
1721
netpolv1config "sigs.k8s.io/network-policy-api/conformance/utils/config"
1822
"sigs.k8s.io/network-policy-api/conformance/utils/suite"
1923
)
2024

2125
const (
22-
NetworkPolicyCNPAPIRepoURL = "https://raw.githubusercontent.com/kubernetes-sigs/network-policy-api/main"
23-
cnpReportFileName = "cnp-test-report.yaml"
26+
NetworkPolicyAPIRepoRaw = "https://raw.githubusercontent.com/kubernetes-sigs/network-policy-api"
27+
NetworkPolicyAPIRepoPath = "conformance/base/manifests.yaml"
28+
cnpReportFileName = "cnp-test-report.yaml"
2429
)
2530

26-
var baseCnpManifests = fmt.Sprintf("%s/conformance/base/manifests.yaml", NetworkPolicyCNPAPIRepoURL)
27-
2831
func TestClusterNetworkPolicyConformance(t *testing.T) {
32+
content, err := os.ReadFile("go.mod")
33+
if err != nil {
34+
t.Fatalf("Failed to read go.mod: %v", err)
35+
}
36+
37+
mf, err := modfile.Parse("go.mod", content, nil)
38+
if err != nil {
39+
t.Fatalf("Failed to parse go.mod: %v", err)
40+
}
41+
42+
var version string
43+
for r := range slices.Values(mf.Require) {
44+
if r.Mod.Path != "sigs.k8s.io/network-policy-api" {
45+
continue
46+
}
47+
t.Logf("network-policy-api module version: %s", r.Mod.Version)
48+
version = r.Mod.Version
49+
}
50+
51+
gitRef := version
52+
if module.IsPseudoVersion(version) {
53+
t.Logf("Pseudo version detected: %s", version)
54+
if gitRef, err = module.PseudoVersionRev(version); err != nil {
55+
t.Fatalf("Failed to get git revision from pseudo version: %v", err)
56+
}
57+
}
58+
manifestsURL := path.Join(NetworkPolicyAPIRepoRaw, gitRef, NetworkPolicyAPIRepoPath)
59+
t.Logf("Using manifests URL: %s", manifestsURL)
60+
2961
t.Log("Configuring environment for clusternetworkpolicies conformance tests")
3062
cfg, err := config.GetConfig()
3163
if err != nil {
@@ -43,7 +75,7 @@ func TestClusterNetworkPolicyConformance(t *testing.T) {
4375
if err != nil {
4476
t.Fatalf("error when creating Kubernetes ClientSet: %v", err)
4577
}
46-
err = netpolv1alpha2.AddToScheme(client.Scheme())
78+
err = netpolv1alpha2.Install(client.Scheme())
4779
if err != nil {
4880
t.Fatalf("Error initializing API scheme: %v", err)
4981
}
@@ -60,7 +92,7 @@ func TestClusterNetworkPolicyConformance(t *testing.T) {
6092
Debug: true,
6193
CleanupBaseResources: true,
6294
SupportedFeatures: suite.StandardFeatures,
63-
BaseManifests: baseCnpManifests,
95+
BaseManifests: manifestsURL,
6496
TimeoutConfig: netpolv1config.TimeoutConfig{GetTimeout: 300 * time.Second},
6597
},
6698
ConformanceProfiles: profiles,

test/cnp/go.mod

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
module github.com/kubeovn/kube-ovn/test/cnp
22

3-
go 1.24.5
3+
go 1.25.5
44

55
require (
6+
golang.org/x/mod v0.31.0
67
gopkg.in/yaml.v3 v3.0.1
7-
k8s.io/apimachinery v0.34.1
8-
k8s.io/client-go v0.34.1
9-
sigs.k8s.io/controller-runtime v0.22.2
8+
k8s.io/apimachinery v0.34.3
9+
k8s.io/client-go v0.34.3
10+
sigs.k8s.io/controller-runtime v0.22.4
11+
sigs.k8s.io/network-policy-api v0.1.8-0.20251209142732-3910463a5686
1012
)
1113

1214
require (
@@ -15,47 +17,55 @@ require (
1517
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
1618
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
1719
github.com/go-logr/logr v1.4.3 // indirect
18-
github.com/go-openapi/jsonpointer v0.21.2 // indirect
19-
github.com/go-openapi/jsonreference v0.21.0 // indirect
20-
github.com/go-openapi/swag v0.23.1 // indirect
20+
github.com/go-openapi/jsonpointer v0.22.4 // indirect
21+
github.com/go-openapi/jsonreference v0.21.4 // indirect
22+
github.com/go-openapi/swag v0.25.4 // indirect
23+
github.com/go-openapi/swag/cmdutils v0.25.4 // indirect
24+
github.com/go-openapi/swag/conv v0.25.4 // indirect
25+
github.com/go-openapi/swag/fileutils v0.25.4 // indirect
26+
github.com/go-openapi/swag/jsonname v0.25.4 // indirect
27+
github.com/go-openapi/swag/jsonutils v0.25.4 // indirect
28+
github.com/go-openapi/swag/loading v0.25.4 // indirect
29+
github.com/go-openapi/swag/mangling v0.25.4 // indirect
30+
github.com/go-openapi/swag/netutils v0.25.4 // indirect
31+
github.com/go-openapi/swag/stringutils v0.25.4 // indirect
32+
github.com/go-openapi/swag/typeutils v0.25.4 // indirect
33+
github.com/go-openapi/swag/yamlutils v0.25.4 // indirect
2134
github.com/gogo/protobuf v1.3.2 // indirect
22-
github.com/google/gnostic-models v0.7.0 // indirect
23-
github.com/google/pprof v0.0.0-20250630185457-6e76a2b096b5 // indirect
35+
github.com/google/gnostic-models v0.7.1 // indirect
36+
github.com/google/pprof v0.0.0-20251213031049-b05bdaca462f // indirect
2437
github.com/google/uuid v1.6.0 // indirect
2538
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
26-
github.com/josharian/intern v1.0.0 // indirect
2739
github.com/json-iterator/go v1.1.12 // indirect
28-
github.com/mailru/easyjson v0.9.0 // indirect
2940
github.com/moby/spdystream v0.5.0 // indirect
3041
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
3142
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
3243
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
3344
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
34-
github.com/onsi/ginkgo/v2 v2.23.4 // indirect
35-
github.com/onsi/gomega v1.38.0 // indirect
45+
github.com/onsi/ginkgo/v2 v2.27.3 // indirect
46+
github.com/onsi/gomega v1.38.3 // indirect
3647
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
37-
github.com/spf13/pflag v1.0.7 // indirect
38-
github.com/stretchr/testify v1.10.0 // indirect
48+
github.com/spf13/pflag v1.0.10 // indirect
49+
github.com/stretchr/testify v1.11.1 // indirect
3950
github.com/x448/float16 v0.8.4 // indirect
40-
go.yaml.in/yaml/v2 v2.4.2 // indirect
51+
go.yaml.in/yaml/v2 v2.4.3 // indirect
4152
go.yaml.in/yaml/v3 v3.0.4 // indirect
42-
golang.org/x/net v0.43.0 // indirect
43-
golang.org/x/oauth2 v0.30.0 // indirect
44-
golang.org/x/sys v0.35.0 // indirect
45-
golang.org/x/term v0.34.0 // indirect
46-
golang.org/x/text v0.28.0 // indirect
47-
golang.org/x/time v0.12.0 // indirect
48-
golang.org/x/tools v0.36.0 // indirect
49-
google.golang.org/protobuf v1.36.7 // indirect
53+
golang.org/x/net v0.48.0 // indirect
54+
golang.org/x/oauth2 v0.34.0 // indirect
55+
golang.org/x/sys v0.39.0 // indirect
56+
golang.org/x/term v0.38.0 // indirect
57+
golang.org/x/text v0.32.0 // indirect
58+
golang.org/x/time v0.14.0 // indirect
59+
golang.org/x/tools v0.40.0 // indirect
60+
google.golang.org/protobuf v1.36.11 // indirect
5061
gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
5162
gopkg.in/inf.v0 v0.9.1 // indirect
52-
k8s.io/api v0.34.1 // indirect
63+
k8s.io/api v0.34.3 // indirect
5364
k8s.io/klog/v2 v2.130.1 // indirect
5465
k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
55-
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect
66+
k8s.io/utils v0.0.0-20251002143259-bc988d571ff4 // indirect
5667
sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
57-
sigs.k8s.io/network-policy-api v0.1.8-0.20251107065253-deabb1de1acb // indirect
5868
sigs.k8s.io/randfill v1.0.0 // indirect
59-
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
69+
sigs.k8s.io/structured-merge-diff/v6 v6.3.1 // indirect
6070
sigs.k8s.io/yaml v1.6.0 // indirect
6171
)

0 commit comments

Comments
 (0)