Resolve buildGrpcManagedChannel orphaned channel & ensure connections mocked (#1003)

* okhttpclient is mocked

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* mock workflowRuntime to rm log: 'The sidecar at address localhost:4001 is unavailable. Will continue retrying.'

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* fix several NetworkUtilsTest orphaned channels

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* reset workflow changes since I still see the log output

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* Close daprClient on DaprClientGrpcTelemetryTest

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* try latest runtime rc

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* Update runtime to 1.12.4

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* Mvn test is now verbose, temporatily.

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* try fixing RetryPolicyTest

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* comment out RetryPolicyTest

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* add RetryPolicyTest back

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* trying to figure out which test func is the issue

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* try ubuntu-20.04

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* try rm-ing GrpcChannelFacadeTest

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* try rm-ing DaprClientHttpTest

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* try t.join just in case

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* is this the bad test?

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* are these other healthcheck tests the problem?

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* is it the ok test?

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* is it due to an invoke test?

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* is it the config/subscribeConfig tests

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* is it noHotMono?

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* is it a publish test?

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* is it the other noHotMono tests?

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* is it a state test?

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* is it a save state test?

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* is it a secret test?

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* is it a delete state test?

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* is it the rest -1 and - ending tests?

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* no client calls, only end of file remaining

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* add teardown - did it work?

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* is it just needing daprClientHttpXML to be closed?

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* Reuse mock and builder.

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* Try dedicated executor.

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* Comment out the remaining tests.

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* Remove before and after.

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* Remove sdk/src/test/java/io/dapr/client/DaprClientHttpTest.java

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* Remove sdk/src/test/java/io/dapr/client/DaprHttpTest.java.

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* Delete a batch of tests.

Signed-off-by: Artur Souza <asouza.pro@gmail.com>

* restore deleted test files

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

* add back in RetryPolicyTest

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>

---------

Signed-off-by: Cassandra Coyle <cassie@diagrid.io>
Signed-off-by: Artur Souza <asouza.pro@gmail.com>
Co-authored-by: Artur Souza <asouza.pro@gmail.com>
Co-authored-by: Artur Souza <artursouza.ms@outlook.com>
This commit is contained in:
Cassie Coyle 2024-02-08 16:47:32 -06:00 committed by GitHub
parent 22427c9659
commit b2968af896
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 35 additions and 14 deletions

View File

@ -41,9 +41,9 @@ jobs:
GOARCH: amd64
GOPROXY: https://proxy.golang.org
JDK_VER: ${{ matrix.java }}
DAPR_CLI_VER: 1.12.0-rc.1
DAPR_RUNTIME_VER: 1.12.0-rc.5
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.12.0-rc.1/install/install.sh
DAPR_CLI_VER: 1.12.0
DAPR_RUNTIME_VER: 1.12.4
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.12.0/install/install.sh
DAPR_CLI_REF:
DAPR_REF:
TOXIPROXY_URL: https://github.com/Shopify/toxiproxy/releases/download/v2.5.0/toxiproxy-server-linux-amd64
@ -115,7 +115,7 @@ jobs:
- name: Build sdk
run: ./mvnw compile -B -q
- name: Unit tests
run: ./mvnw -B test -q
run: ./mvnw test # making it temporarily verbose.
- name: Codecov
uses: codecov/codecov-action@v3.1.4
- name: Install jars

View File

@ -37,9 +37,9 @@ jobs:
GOARCH: amd64
GOPROXY: https://proxy.golang.org
JDK_VER: ${{ matrix.java }}
DAPR_CLI_VER: 1.12.0-rc.1
DAPR_RUNTIME_VER: 1.12.0-rc.5
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.12.0-rc.1/install/install.sh
DAPR_CLI_VER: 1.12.0
DAPR_RUNTIME_VER: 1.12.4
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.12.0/install/install.sh
DAPR_CLI_REF:
DAPR_REF:
steps:

View File

@ -30,8 +30,8 @@ import io.grpc.inprocess.InProcessChannelBuilder;
import io.grpc.inprocess.InProcessServerBuilder;
import io.grpc.testing.GrpcCleanupRule;
import org.junit.Rule;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
@ -47,7 +47,6 @@ import reactor.util.context.ContextView;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
@EnableRuleMigrationSupport
public class DaprClientGrpcTelemetryTest {
@ -70,6 +69,13 @@ public class DaprClientGrpcTelemetryTest {
private DaprClient client;
@AfterEach
public void teardown() throws Exception {
if (client != null) {
client.close();
}
}
public static Stream<Arguments> data() {
return Stream.of(
Arguments.of(

View File

@ -2,13 +2,21 @@ package io.dapr.utils;
import io.dapr.config.Properties;
import io.grpc.ManagedChannel;
import io.grpc.testing.GrpcCleanupRule;
import org.junit.Rule;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.mockito.Mockito.mock;
public class NetworkUtilsTest {
private final int defaultGrpcPort = 4000;
private final String defaultSidecarIP = "127.0.0.1";
private ManagedChannel channel;
@BeforeEach
public void setUp() {
System.setProperty(Properties.GRPC_PORT.getName(), Integer.toString(defaultGrpcPort));
@ -16,9 +24,16 @@ public class NetworkUtilsTest {
System.setProperty(Properties.GRPC_ENDPOINT.getName(), "");
}
@AfterEach
public void tearDown() {
if (channel != null && !channel.isShutdown()) {
channel.shutdown();
}
}
@Test
public void testBuildGrpcManagedChannel() {
ManagedChannel channel = NetworkUtils.buildGrpcManagedChannel();
channel = NetworkUtils.buildGrpcManagedChannel();
String expectedAuthority = String.format("%s:%s", defaultSidecarIP, defaultGrpcPort);
Assertions.assertEquals(expectedAuthority, channel.authority());
@ -27,7 +42,7 @@ public class NetworkUtilsTest {
@Test
public void testBuildGrpcManagedChannel_httpEndpointNoPort() {
System.setProperty(Properties.GRPC_ENDPOINT.getName(), "http://example.com");
ManagedChannel channel = NetworkUtils.buildGrpcManagedChannel();
channel = NetworkUtils.buildGrpcManagedChannel();
String expectedAuthority = "example.com:80";
Assertions.assertEquals(expectedAuthority, channel.authority());
@ -36,7 +51,7 @@ public class NetworkUtilsTest {
@Test
public void testBuildGrpcManagedChannel_httpEndpointWithPort() {
System.setProperty(Properties.GRPC_ENDPOINT.getName(), "http://example.com:3000");
ManagedChannel channel = NetworkUtils.buildGrpcManagedChannel();
channel = NetworkUtils.buildGrpcManagedChannel();
String expectedAuthority = "example.com:3000";
Assertions.assertEquals(expectedAuthority, channel.authority());
@ -45,7 +60,7 @@ public class NetworkUtilsTest {
@Test
public void testBuildGrpcManagedChannel_httpsEndpointNoPort() {
System.setProperty(Properties.GRPC_ENDPOINT.getName(), "https://example.com");
ManagedChannel channel = NetworkUtils.buildGrpcManagedChannel();
channel = NetworkUtils.buildGrpcManagedChannel();
String expectedAuthority = "example.com:443";
Assertions.assertEquals(expectedAuthority, channel.authority());
@ -54,7 +69,7 @@ public class NetworkUtilsTest {
@Test
public void testBuildGrpcManagedChannel_httpsEndpointWithPort() {
System.setProperty(Properties.GRPC_ENDPOINT.getName(), "https://example.com:3000");
ManagedChannel channel = NetworkUtils.buildGrpcManagedChannel();
channel = NetworkUtils.buildGrpcManagedChannel();
String expectedAuthority = "example.com:3000";
Assertions.assertEquals(expectedAuthority, channel.authority());