googleapis / googleapis/google-cloud-java

[java-firestore] Ability to set emulator host/port from .setHost rather than env var

Offen
#13,143 8 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
api: firestore type: feature request
Vorherrschende Sprache
Java
Sterne
2.1k
Forks
1.2k
Ø Merge
1 T. 23 Std.
Gemergte PRs (30 T.)
154

Beschreibung

#### Environment details

1. OSX, Java

#### Steps to reproduce

1. To use Testcontainer + Firestore emulator is extremely difficult.

#### Code example
Firestore client library can only connect to a firestore emulator by using an env var. This is not idiomatic for Java unit tests.

it's impossible to set the emulator host/port simply from `.setHost(..)`
```java
FirestoreOptions firestoreOptions =
FirestoreOptions.newBuilder().setHost(...).
```

The real code is this:
```java
// duplicate the FakeCredentials class because it's package protected and not publicly accessible.
static class FakeCredentials extends Credentials {
private final Map> HEADERS =
ImmutableMap.of("Authorization", Arrays.asList("Bearer owner"));
...
}

// then, duplicate the code that otherwise executes from an env var:
FirestoreOptions firestoreOptions =
FirestoreOptions.newBuilder()
.setProjectId(FIRESTORE_PROJECT_ID)
.setChannelProvider(
InstantiatingGrpcChannelProvider.newBuilder()
.setEndpoint(
String.format(
"%s:%d",
FIRESTORE_CONTAINER.getContainerIpAddress(),
FIRESTORE_CONTAINER.getMappedPort(8080)))
.setChannelConfigurator(
(managedChannelBuilder -> managedChannelBuilder.usePlaintext()))
.build())
.setCredentialsProvider(FixedCredentialsProvider.create(new FakeCredentials()))
.build();

```

#### Any additional information below
It'd be MUCH easier if emulator host/port can simply be set via .setHost(...), OR, a convenience method, such as .useEmulator(host, port)

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.