Skip to content

Commit

Permalink
Remove static initializer and fix object graph roots test
Browse files Browse the repository at this point in the history
Signed-off-by: Matt Hess <matt.hess@swirldslabs.com>
  • Loading branch information
mhess-swl committed Apr 27, 2023
1 parent 4179d69 commit b59e492
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -101,21 +101,11 @@ public class EntityMapWarmer {
this.nftsAdapter = nftsAdapter;
this.tokenRelsAdapter = tokenRelsAdapter;
this.threadpool = threadpool;
this.acctsOnDisk = accountsStorageAdapter.get().areOnDisk();
this.nftsOnDisk = nftsAdapter.get().isVirtual();
this.tokenRelsOnDisk = tokenRelsAdapter.get().areOnDisk();
}

public static EntityMapWarmer getInstance(
Supplier<AccountStorageAdapter> accountsStorageAdapter,
Supplier<UniqueTokenMapAdapter> nftsAdapter,
Supplier<TokenRelStorageAdapter> tokenRelsAdapter,
GlobalDynamicProperties globalDynamicProperties) {
if (instance == null) {
instance =
new EntityMapWarmer(accountsStorageAdapter, nftsAdapter, tokenRelsAdapter, globalDynamicProperties);
}
return instance;
this.acctsOnDisk = accountsStorageAdapter.get() != null
&& accountsStorageAdapter.get().areOnDisk();
this.nftsOnDisk = nftsAdapter.get() != null && nftsAdapter.get().isVirtual();
this.tokenRelsOnDisk =
tokenRelsAdapter.get() != null && tokenRelsAdapter.get().areOnDisk();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,9 @@
import com.hedera.node.app.service.mono.state.logic.NetworkCtxManager;
import com.hedera.node.app.service.mono.state.logic.ReconnectListener;
import com.hedera.node.app.service.mono.state.logic.StandardProcessLogic;
import com.hedera.node.app.service.mono.state.migration.AccountStorageAdapter;
import com.hedera.node.app.service.mono.state.migration.TokenRelStorageAdapter;
import com.hedera.node.app.service.mono.state.migration.UniqueTokenMapAdapter;
import com.hedera.node.app.service.mono.state.validation.BasedLedgerValidator;
import com.hedera.node.app.service.mono.state.virtual.VirtualMapFactory;
import com.hedera.node.app.service.mono.stats.ServicesStatsManager;
Expand Down Expand Up @@ -92,6 +95,15 @@ class ServicesAppTest {
@Mock
private PropertySource overridingProps;

@Mock
private AccountStorageAdapter accountsStorageAdapter;

@Mock
private UniqueTokenMapAdapter nftsAdapter;

@Mock
private TokenRelStorageAdapter tokenRelsAdapter;

private ServicesApp subject;

@BeforeEach
Expand Down Expand Up @@ -122,6 +134,12 @@ void setUp() {
.crypto(cryptography)
.selfId(selfId)
.build();

// Make sure the MutableStateChildren has the needed children to instantiate EntityMapWarmer
subject.workingState().setAccounts(accountsStorageAdapter);
subject.workingState().setTokenAssociations(tokenRelsAdapter);
subject.workingState().setUniqueTokens(nftsAdapter);
assertThat(subject.mapWarmer(), instanceOf(EntityMapWarmer.class));
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import static org.mockito.Mockito.verify;

import com.google.protobuf.ByteString;
import com.hedera.node.app.service.mono.context.properties.GlobalDynamicProperties;
import com.hedera.node.app.service.mono.state.adapters.VirtualMapLike;
import com.hedera.node.app.service.mono.state.migration.AccountStorageAdapter;
import com.hedera.node.app.service.mono.state.migration.TokenRelStorageAdapter;
Expand Down Expand Up @@ -61,7 +60,6 @@
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
Expand Down Expand Up @@ -103,22 +101,6 @@ class EntityMapWarmerTest {

private final Supplier<TokenRelStorageAdapter> tokenRelAdptSupplier = () -> tokenRelAdpt;

@Test
void getInstanceReturnsSameReference() {
// given:
final var globalProps = mock(GlobalDynamicProperties.class);
lenient().when(globalProps.cacheCryptoTransferWarmThreads()).thenReturn(3); // Any number > 0

// when:
final var firstInstance =
EntityMapWarmer.getInstance(accountAdptSupplier, nftAdptSupplier, tokenRelAdptSupplier, globalProps);
final var secondInstance =
EntityMapWarmer.getInstance(accountAdptSupplier, nftAdptSupplier, tokenRelAdptSupplier, globalProps);

// then:
Assertions.assertThat(firstInstance).isSameAs(secondInstance);
}

@Test
void warmOnNullRoundDoesNotWarm() {
// when:
Expand Down

0 comments on commit b59e492

Please sign in to comment.