Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion conformance/conformance.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ limitations under the License.
package conformance

import (
"encoding/json"
"io/fs"
"os"
"testing"
Expand Down Expand Up @@ -81,6 +82,13 @@ func DefaultOptions(t *testing.T) suite.ConformanceOptions {
*flags.ImplementationContact,
)

timeoutConfig := conformanceconfig.DefaultTimeoutConfig()

if *flags.TimeoutConfig != "" {
err := json.Unmarshal([]byte(*flags.TimeoutConfig), &timeoutConfig)
require.NoError(t, err, "error initializing timeout config from the input")
}

return suite.ConformanceOptions{
AllowCRDsMismatch: *flags.AllowCRDsMismatch,
CleanupBaseResources: *flags.CleanupBaseResources,
Expand All @@ -103,7 +111,7 @@ func DefaultOptions(t *testing.T) suite.ConformanceOptions {
RunTest: *flags.RunTest,
SkipTests: skipTests,
SupportedFeatures: supportedFeatures,
TimeoutConfig: conformanceconfig.DefaultTimeoutConfig(),
TimeoutConfig: timeoutConfig,
SkipProvisionalTests: *flags.SkipProvisionalTests,
}
}
Expand Down
10 changes: 10 additions & 0 deletions conformance/mesh/manifests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ spec:
- name: echo
image: gcr.io/k8s-staging-gateway-api/echo-advanced:v20240412-v1.0.0-394-g40c666fd
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
- containerPort: 8443
- containerPort: 9090
- containerPort: 7070
args:
- --tcp=9090
- --port=8080
Expand Down Expand Up @@ -85,6 +90,11 @@ spec:
- name: echo
image: gcr.io/k8s-staging-gateway-api/echo-advanced:v20240412-v1.0.0-394-g40c666fd
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
- containerPort: 8443
- containerPort: 9090
- containerPort: 7070
args:
- --tcp=9090
- --port=8080
Expand Down
5 changes: 5 additions & 0 deletions conformance/utils/echo/pod.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client"

"sigs.k8s.io/gateway-api/conformance/utils/config"
"sigs.k8s.io/gateway-api/conformance/utils/flags"
"sigs.k8s.io/gateway-api/conformance/utils/http"
"sigs.k8s.io/gateway-api/conformance/utils/suite"
"sigs.k8s.io/gateway-api/conformance/utils/tlog"
Expand Down Expand Up @@ -104,6 +105,10 @@ func makeRequest(t *testing.T, exp *http.ExpectedResponse) []string {
exp.Response.StatusCodes = []int{200}
}

if *flags.UseFQDNHost {
r.Host = fmt.Sprintf("%v.%v", strings.Split(r.Host, ".")[0], "gateway-conformance-mesh.svc.cluster.local")
}

host := http.CalculateHost(t, r.Host, protocol)
args := []string{"client", fmt.Sprintf("%s://%s%s", protocol, host, r.Path)}
if protocol != "grpc" && r.Method != "" {
Expand Down
3 changes: 3 additions & 0 deletions conformance/utils/flags/flags.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,4 +50,7 @@ var (
ConformanceProfiles = flag.String("conformance-profiles", "", "Comma-separated list of the conformance profiles to run")
ReportOutput = flag.String("report-output", "", "The file where to write the conformance report")
SkipProvisionalTests = flag.Bool("skip-provisional-tests", false, "Whether to skip provisional tests")
UseFQDNHost = flag.Bool("use-fqdn-host", false, "Use FQDN for hosts for all requests")
AppendPortToHost = flag.Bool("append-port-to-host", false, "add port to the host for all ports including 80 and 443")
TimeoutConfig = flag.String("timeout-config", "", "TimeoutConfig object in json format")
)
16 changes: 14 additions & 2 deletions conformance/utils/http/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (
"time"

"sigs.k8s.io/gateway-api/conformance/utils/config"
"sigs.k8s.io/gateway-api/conformance/utils/flags"
"sigs.k8s.io/gateway-api/conformance/utils/roundtripper"
"sigs.k8s.io/gateway-api/conformance/utils/tlog"
"sigs.k8s.io/gateway-api/conformance/utils/weight"
Expand Down Expand Up @@ -202,12 +203,23 @@ func CalculateHost(t *testing.T, gwAddr, scheme string) string {
if !strings.Contains(err.Error(), "missing port in address") {
tlog.Logf(t, "Failed to parse host %q: %v", gwAddr, err)
}
if *flags.AppendPortToHost {
if port != "" {
return gwAddr
}
if strings.ToLower(scheme) == "http" {
return fmt.Sprintf("%v:%v", gwAddr, "80")
}
if strings.ToLower(scheme) == "https" {
return fmt.Sprintf("%v:%v", gwAddr, "443")
}
}
return gwAddr
}
if strings.ToLower(scheme) == "http" && port == "80" {
if strings.ToLower(scheme) == "http" && port == "80" && !*flags.AppendPortToHost {
return Ipv6SafeHost(host)
}
if strings.ToLower(scheme) == "https" && port == "443" {
if strings.ToLower(scheme) == "https" && port == "443" && !*flags.AppendPortToHost {
return Ipv6SafeHost(host)
}
return gwAddr
Expand Down