@@ -88,6 +88,54 @@ public void findVirtualHostForHostName_asteriskMatchAnyDomain() {
8888 .isEqualTo (vHost1 );
8989 }
9090
91+ @ Test
92+ public void findVirtualHostForHostName_trailingDot () {
93+ // FQDN (trailing dot) is semantically equivalent to the relative form
94+ // per RFC 1034 Section 3.1.
95+ List <Route > routes = Collections .emptyList ();
96+ VirtualHost vHost1 = VirtualHost .create ("virtualhost01.googleapis.com" ,
97+ Collections .singletonList ("a.googleapis.com" ), routes ,
98+ ImmutableMap .of ());
99+ VirtualHost vHost2 = VirtualHost .create ("virtualhost02.googleapis.com" ,
100+ Collections .singletonList ("*.googleapis.com" ), routes ,
101+ ImmutableMap .of ());
102+ VirtualHost vHost3 = VirtualHost .create ("virtualhost03.googleapis.com" ,
103+ Collections .singletonList ("*" ), routes ,
104+ ImmutableMap .of ());
105+ List <VirtualHost > virtualHosts = Arrays .asList (vHost1 , vHost2 , vHost3 );
106+
107+ // Trailing dot in hostName, exact match.
108+ assertThat (RoutingUtils .findVirtualHostForHostName (
109+ virtualHosts , "a.googleapis.com." )).isEqualTo (vHost1 );
110+ // Trailing dot in hostName, wildcard match.
111+ assertThat (RoutingUtils .findVirtualHostForHostName (
112+ virtualHosts , "b.googleapis.com." )).isEqualTo (vHost2 );
113+
114+ // Trailing dot in domain pattern, exact match.
115+ VirtualHost vHost4 = VirtualHost .create ("virtualhost04.googleapis.com" ,
116+ Collections .singletonList ("a.googleapis.com." ), routes ,
117+ ImmutableMap .of ());
118+ List <VirtualHost > virtualHosts2 =
119+ Arrays .asList (vHost4 , vHost2 , vHost3 );
120+ assertThat (RoutingUtils .findVirtualHostForHostName (
121+ virtualHosts2 , "a.googleapis.com" )).isEqualTo (vHost4 );
122+
123+ // Trailing dot in both hostName and domain pattern.
124+ assertThat (RoutingUtils .findVirtualHostForHostName (
125+ virtualHosts2 , "a.googleapis.com." )).isEqualTo (vHost4 );
126+
127+ // Trailing dot in domain pattern, wildcard match.
128+ VirtualHost vHost5 = VirtualHost .create ("virtualhost05.googleapis.com" ,
129+ Collections .singletonList ("*.googleapis.com." ), routes ,
130+ ImmutableMap .of ());
131+ List <VirtualHost > virtualHosts3 =
132+ Arrays .asList (vHost5 , vHost3 );
133+ assertThat (RoutingUtils .findVirtualHostForHostName (
134+ virtualHosts3 , "b.googleapis.com" )).isEqualTo (vHost5 );
135+ assertThat (RoutingUtils .findVirtualHostForHostName (
136+ virtualHosts3 , "b.googleapis.com." )).isEqualTo (vHost5 );
137+ }
138+
91139 @ Test
92140 public void routeMatching_pathOnly () {
93141 Metadata headers = new Metadata ();
0 commit comments