10BC0 go ingress tests · j1m-ryan/kubernetes-ingress@66a7bb5 · GitHub
[go: up one dir, main page]

Skip to content

Commit 66a7bb5

Browse files
author
Jim Ryan
committed
go ingress tests
1 parent 787e6d6 commit 66a7bb5

File tree

1 file changed

+247
-0
lines changed

1 file changed

+247
-0
lines changed

internal/configs/ingress_test.go

Lines changed: 247 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -663,6 +663,253 @@ func TestGenerateNginxCfgForMergeableIngressesForBasicAuth(t *testing.T) {
663663
}
664664
}
665665

666+
func TestGenerateNginxCfgForMergeableIngressesWithUseClusterIP(t *testing.T) {
667+
t.Parallel()
668+
mergeableIngresses := createMergeableCafeIngress()
669+
mergeableIngresses.Minions[0].Ingress.Annotations["nginx.org/use-cluster-ip"] = "true"
670+
671+
isPlus := false
672+
673+
expected := createExpectedConfigForMergeableCafeIngressWithUseClusterIP()
674+
configParams := NewDefaultConfigParams(isPlus)
675+
676+
result, warnings := generateNginxCfgForMergeableIngresses(NginxCfgParams{
677+
mergeableIngs: mergeableIngresses,
678+
apResources: nil,
679+
dosResource: nil,
680+
baseCfgParams: configParams,
681+
isPlus: isPlus,
682+
isResolverConfigured: false,
683+
staticParams: &StaticConfigParams{},
684+
isWildcardEnabled: false,
685+
})
686+
687+
if diff := cmp.Diff(expected, result); diff != "" {
688+
t.Errorf("generateNginxCfgForMergeableIngresses() returned unexpected result (-want +got):\n%s", diff)
689+
}
690+
if len(warnings) != 0 {
691+
t.Errorf("generateNginxCfgForMergeableIngresses() returned warnings: %v", warnings)
692+
}
693+
}
694+
695+
func createExpectedConfigForMergeableCafeIngressWithUseClusterIP() version1.IngressNginxConfig {
696+
upstreamZoneSize := "256k"
697+
coffeeUpstream := version1.Upstream{
698+
Name: "default-cafe-ingress-coffee-minion-cafe.example.com-coffee-svc-80",
699+
LBMethod: "random two least_conn",
700+
UpstreamZoneSize: upstreamZoneSize,
701+
UpstreamServers: []version1.UpstreamServer{
702+
{
703+
Address: "coffee-svc:80",
704+
MaxFails: 1,
705+
MaxConns: 0,
706+
FailTimeout: "10s",
707+
},
708+
},
709+
}
710+
teaUpstream := version1.Upstream{
711+
Name: "default-cafe-ingress-tea-minion-cafe.example.com-tea-svc-80",
712+
LBMethod: "random two least_conn",
713+
UpstreamZoneSize: upstreamZoneSize,
714+
UpstreamServers: []version1.UpstreamServer{
715+
{
716+
Address: "10.0.0.2:80",
717+
MaxFails: 1,
718+
MaxConns: 0,
719+
FailTimeout: "10s",
720+
},
721+
},
722+
}
723+
expected := version1.IngressNginxConfig{
724+
Upstreams: []version1.Upstream{
725+
coffeeUpstream,
726+
teaUpstream,
727+
},
728+
Servers: []version1.S EF2F erver{
729+
{
730+
Name: "cafe.example.com",
731+
ServerTokens: "on",
732+
Locations: []version1.Location{
733+
{
734+
Path: "/coffee",
735+
ServiceName: "coffee-svc",
736+
Upstream: coffeeUpstream,
737+
ProxyConnectTimeout: "60s",
738+
ProxyReadTimeout: "60s",
739+
ProxySendTimeout: "60s",
740+
ClientMaxBodySize: "1m",
741+
ProxyBuffering: true,
742+
MinionIngress: &version1.Ingress{
743+
Name: "cafe-ingress-coffee-minion",
744+
Namespace: "default",
745+
Annotations: map[string]string{
746+
"kubernetes.io/ingress.class": "nginx",
747+
"nginx.org/mergeable-ingress-type": "minion",
748+
"nginx.org/use-cluster-ip": "true",
749+
},
750+
},
751+
ProxySSLName: "coffee-svc.default.svc",
752+
},
753+
{
754+
Path: "/tea",
755+
ServiceName: "tea-svc",
756+
Upstream: teaUpstream,
757+
ProxyConnectTimeout: "60s",
758+
ProxyReadTimeout: "60s",
759+
ProxySendTimeout: "60s",
760+
ClientMaxBodySize: "1m",
761+
ProxyBuffering: true,
762+
MinionIngress: &version1.Ingress{
763+
Name: "cafe-ingress-tea-minion",
764+
Namespace: "default",
765+
Annotations: map[string]string{
766+
"kubernetes.io/ingress.class": "nginx",
767+
"nginx.org/mergeable-ingress-type": "minion",
768+
},
769+
},
770+
ProxySSLName: "tea-svc.default.svc",
771+
},
772+
},
773+
SSL: true,
774+
SSLCertificate: "/etc/nginx/secrets/default-cafe-secret",
775+
SSLCertificateKey: "/etc/nginx/secrets/default-cafe-secret",
776+
StatusZone: "cafe.example.com",
777+
HSTSMaxAge: 2592000,
778+
Ports: []int{80},
779+
SSLPorts: []int{443},
780+
SSLRedirect: true,
781+
HealthChecks: make(map[string]version1.HealthCheck),
782+
},
783+
},
784+
Ingress: version1.Ingress{
785+
Name: "cafe-ingress-master",
786+
Namespace: "default",
787+
Annotations: map[string]string{
788+
"kubernetes.io/ingress.class": "nginx",
789+
"nginx.org/mergeable-ingress-type": "master",
790+
},
791+
},
792+
}
793+
794+
return expected
795+
}
796+
797+
func createExpectedConfigForCafeIngressWithUseClusterIP() version1.IngressNginxConfig {
798+
upstreamZoneSize := "256k"
799+
800+
coffeeUpstream := version1.Upstream{
801+
Name: "default-cafe-ingress-cafe.example.com-coffee-svc-80",
802+
LBMethod: "random two least_conn",
803+
UpstreamZoneSize: upstreamZoneSize,
804+
UpstreamServers: []version1.UpstreamServer{
805+
{
806+
Address: "coffee-svc:80",
807+
MaxFails: 1,
808+
MaxConns: 0,
809+
FailTimeout: "10s",
810+
},
811+
},
812+
}
813+
814+
teaUpstream := version1.Upstream{
815+
Name: "default-cafe-ingress-cafe.example.com-tea-svc-80",
816+
LBMethod: "random two least_conn",
817+
UpstreamZoneSize: upstreamZoneSize,
818+
UpstreamServers: []version1.UpstreamServer{
819+
{
820+
Address: "tea-svc:80",
821+
MaxFails: 1,
822+
MaxConns: 0,
823+
FailTimeout: "10s",
824+
},
825+
},
826+
}
827+
828+
expected := version1.IngressNginxConfig{
829+
Upstreams: []version1.Upstream{
830+
coffeeUpstream,
831+
teaUpstream,
832+
},
833+
Servers: []version1.Server{
834+
{
835+
Name: "cafe.example.com",
836+
ServerTokens: "on",
837+
Locations: []version1.Location{
838+
{
839+
Path: "/coffee",
840+
ServiceName: "coffee-svc",
841+
Upstream: coffeeUpstream,
842+
ProxyConnectTimeout: "60s",
843+
ProxyReadTimeout: "60s",
844+
ProxySendTimeout: "60s",
845+
ClientMaxBodySize: "1m",
846+
ProxyBuffering: true,
847+
ProxySSLName: "coffee-svc.default.svc",
848+
},
849+
{
850+
Path: "/tea",
851+
ServiceName: "tea-svc",
852+
Upstream: teaUpstream,
853+
ProxyConnectTimeout: "60s",
854+
ProxyReadTimeout: "60s",
855+
ProxySendTimeout: "60s",
856+
ClientMaxBodySize: "1m",
857+
ProxyBuffering: true,
858+
ProxySSLName: "tea-svc.default.svc",
859+
},
860+
},
861+
SSL: true,
862+
SSLCertificate: "/etc/nginx/secrets/default-cafe-secret",
863+
SSLCertificateKey: "/etc/nginx/secrets/default-cafe-secret",
864+
StatusZone: "cafe.example.com",
865+
HSTSMaxAge: 2592000,
866+
Ports: []int{80},
867+
SSLPorts: []int{443},
868+
SSLRedirect: true,
869+
HealthChecks: make(map[string]version1.HealthCheck),
870+
},
871+
},
872+
Ingress: version1.Ingress{
873+
Name: "cafe-ingress",
874+
Namespace: "default",
875+
Annotations: map[string]string{
876+
"kubernetes.io/ingress.class": "nginx",
877+
"nginx.org/use-cluster-ip": "true",
878+
},
879+
},
880+
}
881+
return expected
882+
}
883+
884+
func TestGenerateNginxCfgWithUseClusterIP(t *testing.T) {
885+
t.Parallel()
886+
cafeIngressEx := createCafeIngressEx()
887+
cafeIngressEx.Ingress.Annotations["nginx.org/use-cluster-ip"] = "true"
888+
isPlus := false
889+
configParams := NewDefaultConfigParams(isPlus)
890+
891+
expected := createExpectedConfigForCafeIngressWithUseClusterIP()
892+
893+
result, warnings := generateNginxCfg(NginxCfgParams{
894+
staticParams: &StaticConfigParams{},
895+
ingEx: &cafeIngressEx,
896+
apResources: nil,
897+
dosResource: nil,
898+
isMinion: false,
899+
isPlus: false,
900+
baseCfgParams: configParams,
901+
isResolverConfigured: false,
902+
isWildcardEnabled: false,
903+
})
904+
905+
if diff := cmp.Diff(expected, result); diff != "" {
906+
t.Errorf("generateNginxCfg() returned unexpected result (-want +got):\n%s", diff)
907+
}
908+
if len(warnings) != 0 {
909+
t.Errorf("generateNginxCfg() returned warnings: %v", warnings)
910+
}
911+
}
912+
666913
func createMergeableCafeIngress() *MergeableIngresses {
667914
master := networking.Ingress{
668915
ObjectMeta: meta_v1.ObjectMeta{

0 commit comments

Comments
 (0)
0