Skip to content

Commit

Permalink
#2868: improve tests coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
Mattia Brescia committed May 13, 2024
1 parent e502985 commit 0d484fc
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package org.factcast.client.grpc;

import io.grpc.Channel;
import org.factcast.grpc.api.gen.RemoteFactStoreGrpc;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.MockedStatic;
import org.mockito.junit.jupiter.MockitoExtension;

import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;

@ExtendWith(MockitoExtension.class)
class FactCastGrpcStubsFactoryImplTest {

@Mock
Channel channel;

final FactCastGrpcStubsFactory uut = new FactCastGrpcStubsFactoryImpl();

@Test
public void createsBlockingStub() {
try (MockedStatic<RemoteFactStoreGrpc> mock = mockStatic(RemoteFactStoreGrpc.class)) {
RemoteFactStoreGrpc.RemoteFactStoreBlockingStub stub = mock(RemoteFactStoreGrpc.RemoteFactStoreBlockingStub.class);
mock.when(() -> RemoteFactStoreGrpc.newBlockingStub(channel)).thenReturn(stub);
assertEquals(stub, uut.createBlockingStub(channel));
}
}

@Test
public void createsStub() {
try (MockedStatic<RemoteFactStoreGrpc> mock = mockStatic(RemoteFactStoreGrpc.class)) {
RemoteFactStoreGrpc.RemoteFactStoreStub stub = mock(RemoteFactStoreGrpc.RemoteFactStoreStub.class);
mock.when(() -> RemoteFactStoreGrpc.newStub(channel)).thenReturn(stub);
assertEquals(stub, uut.createStub(channel));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -603,13 +603,58 @@ void setSnapshotException() {
void setSnapshot() {
SnapshotId id = SnapshotId.of("foo", UUID.randomUUID());
Snapshot snap = new Snapshot(id, UUID.randomUUID(), "".getBytes(), false);
when(blockingStub.setSnapshot(eq(conv.toProto(snap)))).thenReturn(conv.empty());

uut.setSnapshot(snap);

verify(blockingStub).setSnapshot(conv.toProto(snap));
}

@Test
void setSnapshotWithCompressionInTransit() {
// set compression and mock
RemoteFactStoreBlockingStub compBlockingStub = mock(RemoteFactStoreBlockingStub.class);
RemoteFactStoreStub compStub = mock(RemoteFactStoreStub.class);
Map<String, String> serverProps = new HashMap<>();
serverProps.put(Capabilities.CODECS.toString(), "gzip");
when(blockingStub.handshake(any()))
.thenReturn(conv.toProto(ServerConfig.of(GrpcFactStore.PROTOCOL_VERSION, serverProps)));
when(blockingStub.withCompression(any())).thenReturn(compBlockingStub);
when(compBlockingStub.withInterceptors(any())).thenReturn(compBlockingStub);
when(stub.withCompression(any())).thenReturn(compStub);
when(compStub.withInterceptors(any())).thenReturn(compStub);

SnapshotId id = SnapshotId.of("foo", UUID.randomUUID());
Snapshot snap = new Snapshot(id, UUID.randomUUID(), "".getBytes(), false);

uut.setSnapshot(snap);

// uses the stub w compression enabled
verify(compBlockingStub).setSnapshot(conv.toProto(snap));
}

@Test
void setSnapshotAlreadyCompressed() {
// set compression and mock
RemoteFactStoreBlockingStub compBlockingStub = mock(RemoteFactStoreBlockingStub.class);
RemoteFactStoreStub compStub = mock(RemoteFactStoreStub.class);
Map<String, String> serverProps = new HashMap<>();
serverProps.put(Capabilities.CODECS.toString(), "gzip");
when(blockingStub.handshake(any()))
.thenReturn(conv.toProto(ServerConfig.of(GrpcFactStore.PROTOCOL_VERSION, serverProps)));
when(blockingStub.withCompression(any())).thenReturn(compBlockingStub);
when(compBlockingStub.withInterceptors(any())).thenReturn(compBlockingStub);
when(stub.withCompression(any())).thenReturn(compStub);
when(compStub.withInterceptors(any())).thenReturn(compStub);

SnapshotId id = SnapshotId.of("foo", UUID.randomUUID());
Snapshot snap = new Snapshot(id, UUID.randomUUID(), "".getBytes(), true);

uut.setSnapshot(snap);

// uses the stub w/o compression
verify(blockingStub).setSnapshot(conv.toProto(snap));
}

@Test
void clearSnapshotException() {
SnapshotId id = SnapshotId.of("foo", UUID.randomUUID());
Expand Down Expand Up @@ -824,4 +869,13 @@ void initializationCreatesNewStubs() {
// should work after multiple re-initializations (issue #2868)
uut.currentTime();
}

@Test
void resetsInitializationFlag() {
uut.reset();
uut.initializeIfNecessary();
uut.reset();
uut.initializeIfNecessary();
verify(blockingStub, times(2)).handshake(any());
}
}

0 comments on commit 0d484fc

Please sign in to comment.