File tree

2 files changed

+30
-20
lines changed

2 files changed

+30
-20
lines changed
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@
166166
import java.util.LinkedList;
167167
import java.util.List;
168168
import java.util.Map;
169+
import java.util.Map.Entry;
169170
import java.util.Set;
170171
import java.util.concurrent.Callable;
171172
import java.util.concurrent.CancellationException;
@@ -493,7 +494,14 @@ public <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createUnaryCalla
493494

494495
private static HeaderProvider headerProviderWithUserAgentFrom(HeaderProvider headerProvider) {
495496
final Map<String, String> headersWithUserAgent = new HashMap<>(headerProvider.getHeaders());
496-
final String userAgent = headersWithUserAgent.get(USER_AGENT_KEY);
497+
String userAgent = null;
498+
for (Entry<String, String> entry : headersWithUserAgent.entrySet()) {
499+
if (entry.getKey().equalsIgnoreCase(USER_AGENT_KEY)) {
500+
userAgent = entry.getValue();
501+
headersWithUserAgent.remove(entry.getKey());
502+
break;
503+
}
504+
}
497505
headersWithUserAgent.put(
498506
USER_AGENT_KEY,
499507
userAgent == null ? DEFAULT_USER_AGENT : userAgent + " " + DEFAULT_USER_AGENT);
Original file line numberDiff line numberDiff line change
@@ -509,27 +509,29 @@ public void testDefaultUserAgent() {
509509

510510
@Test
511511
public void testCustomUserAgent() {
512-
final HeaderProvider userAgentHeaderProvider =
513-
new HeaderProvider() {
514-
@Override
515-
public Map<String, String> getHeaders() {
516-
final Map<String, String> headers = new HashMap<>();
517-
headers.put("user-agent", "test-agent");
518-
return headers;
519-
}
520-
};
521-
final SpannerOptions options =
522-
createSpannerOptions().toBuilder().setHeaderProvider(userAgentHeaderProvider).build();
523-
try (Spanner spanner = options.getService()) {
524-
final DatabaseClient databaseClient =
525-
spanner.getDatabaseClient(DatabaseId.of("[PROJECT]", "[INSTANCE]", "[DATABASE]"));
512+
for (String headerId : new String[] {"user-agent", "User-Agent", "USER-AGENT"}) {
513+
final HeaderProvider userAgentHeaderProvider =
514+
new HeaderProvider() {
515+
@Override
516+
public Map<String, String> getHeaders() {
517+
final Map<String, String> headers = new HashMap<>();
518+
headers.put(headerId, "test-agent");
519+
return headers;
520+
}
521+
};
522+
final SpannerOptions options =
523+
createSpannerOptions().toBuilder().setHeaderProvider(userAgentHeaderProvider).build();
524+
try (Spanner spanner = options.getService()) {
525+
final DatabaseClient databaseClient =
526+
spanner.getDatabaseClient(DatabaseId.of("[PROJECT]", "[INSTANCE]", "[DATABASE]"));
527+
528+
try (final ResultSet rs = databaseClient.singleUse().executeQuery(SELECT1AND2)) {
529+
rs.next();
530+
}
526531

527-
try (final ResultSet rs = databaseClient.singleUse().executeQuery(SELECT1AND2)) {
528-
rs.next();
532+
assertThat(seenHeaders.get(Key.of("user-agent", Metadata.ASCII_STRING_MARSHALLER)))
533+
.contains("test-agent " + defaultUserAgent);
529534
}
530-
531-
assertThat(seenHeaders.get(Key.of("user-agent", Metadata.ASCII_STRING_MARSHALLER)))
532-
.contains("test-agent " + defaultUserAgent);
533535
}
534536
}
535537

0 commit comments

Comments
 (0)