@@ -676,6 +676,7 @@ func TestHTTPConnectionManager(t *testing.T) {
676676 stripTrailingHostDot bool
677677 maxRequestsPerConnection * uint32
678678 http2MaxConcurrentStreams * uint32
679+ enableWebsockets bool
679680 want * envoy_config_listener_v3.Filter
680681 }{
681682 "default" : {
@@ -1518,6 +1519,114 @@ func TestHTTPConnectionManager(t *testing.T) {
15181519 },
15191520 },
15201521 },
1522+ "websockets enabled without http2MaxConcurrentStreams" : {
1523+ routename : "default/kuard" ,
1524+ accesslogger : FileAccessLogEnvoy ("/dev/stdout" , "" , nil , contour_v1alpha1 .LogLevelInfo ),
1525+ enableWebsockets : true ,
1526+ want : & envoy_config_listener_v3.Filter {
1527+ Name : wellknown .HTTPConnectionManager ,
1528+ ConfigType : & envoy_config_listener_v3.Filter_TypedConfig {
1529+ TypedConfig : protobuf .MustMarshalAny (& envoy_filter_network_http_connection_manager_v3.HttpConnectionManager {
1530+ StatPrefix : "default/kuard" ,
1531+ RouteSpecifier : & envoy_filter_network_http_connection_manager_v3.HttpConnectionManager_Rds {
1532+ Rds : & envoy_filter_network_http_connection_manager_v3.Rds {
1533+ RouteConfigName : "default/kuard" ,
1534+ ConfigSource : & envoy_config_core_v3.ConfigSource {
1535+ ResourceApiVersion : envoy_config_core_v3 .ApiVersion_V3 ,
1536+ ConfigSourceSpecifier : & envoy_config_core_v3.ConfigSource_ApiConfigSource {
1537+ ApiConfigSource : & envoy_config_core_v3.ApiConfigSource {
1538+ ApiType : envoy_config_core_v3 .ApiConfigSource_GRPC ,
1539+ TransportApiVersion : envoy_config_core_v3 .ApiVersion_V3 ,
1540+ GrpcServices : []* envoy_config_core_v3.GrpcService {{
1541+ TargetSpecifier : & envoy_config_core_v3.GrpcService_EnvoyGrpc_ {
1542+ EnvoyGrpc : & envoy_config_core_v3.GrpcService_EnvoyGrpc {
1543+ ClusterName : "contour" ,
1544+ Authority : "contour" ,
1545+ },
1546+ },
1547+ }},
1548+ },
1549+ },
1550+ },
1551+ },
1552+ },
1553+ HttpFilters : defaultHTTPFilters ,
1554+ HttpProtocolOptions : & envoy_config_core_v3.Http1ProtocolOptions {
1555+ AcceptHttp_10 : true ,
1556+ },
1557+ CommonHttpProtocolOptions : & envoy_config_core_v3.HttpProtocolOptions {},
1558+ Http2ProtocolOptions : & envoy_config_core_v3.Http2ProtocolOptions {
1559+ AllowConnect : true ,
1560+ },
1561+ UpgradeConfigs : []* envoy_filter_network_http_connection_manager_v3.HttpConnectionManager_UpgradeConfig {
1562+ {
1563+ UpgradeType : "websocket" ,
1564+ },
1565+ },
1566+ AccessLog : FileAccessLogEnvoy ("/dev/stdout" , "" , nil , contour_v1alpha1 .LogLevelInfo ),
1567+ UseRemoteAddress : wrapperspb .Bool (true ),
1568+ NormalizePath : wrapperspb .Bool (true ),
1569+ PreserveExternalRequestId : true ,
1570+ MergeSlashes : false ,
1571+ }),
1572+ },
1573+ },
1574+ },
1575+ "websockets enabled with http2MaxConcurrentStreams" : {
1576+ routename : "default/kuard" ,
1577+ accesslogger : FileAccessLogEnvoy ("/dev/stdout" , "" , nil , contour_v1alpha1 .LogLevelInfo ),
1578+ http2MaxConcurrentStreams : ptr .To (uint32 (50 )),
1579+ enableWebsockets : true ,
1580+ want : & envoy_config_listener_v3.Filter {
1581+ Name : wellknown .HTTPConnectionManager ,
1582+ ConfigType : & envoy_config_listener_v3.Filter_TypedConfig {
1583+ TypedConfig : protobuf .MustMarshalAny (& envoy_filter_network_http_connection_manager_v3.HttpConnectionManager {
1584+ StatPrefix : "default/kuard" ,
1585+ RouteSpecifier : & envoy_filter_network_http_connection_manager_v3.HttpConnectionManager_Rds {
1586+ Rds : & envoy_filter_network_http_connection_manager_v3.Rds {
1587+ RouteConfigName : "default/kuard" ,
1588+ ConfigSource : & envoy_config_core_v3.ConfigSource {
1589+ ResourceApiVersion : envoy_config_core_v3 .ApiVersion_V3 ,
1590+ ConfigSourceSpecifier : & envoy_config_core_v3.ConfigSource_ApiConfigSource {
1591+ ApiConfigSource : & envoy_config_core_v3.ApiConfigSource {
1592+ ApiType : envoy_config_core_v3 .ApiConfigSource_GRPC ,
1593+ TransportApiVersion : envoy_config_core_v3 .ApiVersion_V3 ,
1594+ GrpcServices : []* envoy_config_core_v3.GrpcService {{
1595+ TargetSpecifier : & envoy_config_core_v3.GrpcService_EnvoyGrpc_ {
1596+ EnvoyGrpc : & envoy_config_core_v3.GrpcService_EnvoyGrpc {
1597+ ClusterName : "contour" ,
1598+ Authority : "contour" ,
1599+ },
1600+ },
1601+ }},
1602+ },
1603+ },
1604+ },
1605+ },
1606+ },
1607+ HttpFilters : defaultHTTPFilters ,
1608+ HttpProtocolOptions : & envoy_config_core_v3.Http1ProtocolOptions {
1609+ AcceptHttp_10 : true ,
1610+ },
1611+ CommonHttpProtocolOptions : & envoy_config_core_v3.HttpProtocolOptions {},
1612+ Http2ProtocolOptions : & envoy_config_core_v3.Http2ProtocolOptions {
1613+ MaxConcurrentStreams : wrapperspb .UInt32 (50 ),
1614+ AllowConnect : true ,
1615+ },
1616+ UpgradeConfigs : []* envoy_filter_network_http_connection_manager_v3.HttpConnectionManager_UpgradeConfig {
1617+ {
1618+ UpgradeType : "websocket" ,
1619+ },
1620+ },
1621+ AccessLog : FileAccessLogEnvoy ("/dev/stdout" , "" , nil , contour_v1alpha1 .LogLevelInfo ),
1622+ UseRemoteAddress : wrapperspb .Bool (true ),
1623+ NormalizePath : wrapperspb .Bool (true ),
1624+ PreserveExternalRequestId : true ,
1625+ MergeSlashes : false ,
1626+ }),
1627+ },
1628+ },
1629+ },
15211630 }
15221631 for name , tc := range tests {
15231632 t .Run (name , func (t * testing.T ) {
@@ -1539,6 +1648,7 @@ func TestHTTPConnectionManager(t *testing.T) {
15391648 ForwardClientCertificate (tc .forwardClientCertificate ).
15401649 MaxRequestsPerConnection (tc .maxRequestsPerConnection ).
15411650 HTTP2MaxConcurrentStreams (tc .http2MaxConcurrentStreams ).
1651+ EnableWebsockets (tc .enableWebsockets ).
15421652 DefaultFilters ().
15431653 Get ()
15441654
0 commit comments