Coverage Summary for Class: FindingConnectionPointSyncState (co.rsk.net.sync)

Class Class, % Method, % Line, %
FindingConnectionPointSyncState 0% (0/1) 0% (0/6) 0% (0/26)


1 package co.rsk.net.sync; 2  3 import co.rsk.net.Peer; 4 import co.rsk.scoring.EventType; 5 import org.ethereum.db.BlockStore; 6  7 import java.util.Optional; 8  9 public class FindingConnectionPointSyncState extends BaseSyncState { 10  11  private final BlockStore blockStore; 12  private final Peer selectedPeer; 13  private final ConnectionPointFinder connectionPointFinder; 14  15  public FindingConnectionPointSyncState(SyncConfiguration syncConfiguration, 16  SyncEventsHandler syncEventsHandler, 17  BlockStore blockStore, 18  Peer selectedPeer, 19  long peerBestBlockNumber) { 20  super(syncEventsHandler, syncConfiguration); 21  long minNumber = blockStore.getMinNumber(); 22  23  this.blockStore = blockStore; 24  this.selectedPeer = selectedPeer; 25  this.connectionPointFinder = new ConnectionPointFinder( 26  minNumber, 27  peerBestBlockNumber); 28  } 29  30  @Override 31  public void newConnectionPointData(byte[] hash) { 32  boolean knownBlock = isKnownBlock(hash); 33  Optional<Long> cp = connectionPointFinder.getConnectionPoint(); 34  if (cp.isPresent()) { 35  if (knownBlock) { 36  syncEventsHandler.startDownloadingSkeleton(cp.get(), selectedPeer); 37  } else { 38  syncEventsHandler.onSyncIssue("Connection point not found with node {}", selectedPeer); 39  } 40  return; 41  } 42  43  if (knownBlock) { 44  connectionPointFinder.updateFound(); 45  } else { 46  connectionPointFinder.updateNotFound(); 47  } 48  49  cp = connectionPointFinder.getConnectionPoint(); 50  // No need to ask for genesis hash 51  if (cp.isPresent() && cp.get() == 0L) { 52  syncEventsHandler.startDownloadingSkeleton(cp.get(), selectedPeer); 53  return; 54  } 55  56  this.resetTimeElapsed(); 57  trySendRequest(); 58  } 59  60  private boolean isKnownBlock(byte[] hash) { 61  return blockStore.isBlockExist(hash); 62  } 63  64  private void trySendRequest() { 65  syncEventsHandler.sendBlockHashRequest(selectedPeer, connectionPointFinder.getFindingHeight()); 66  } 67  68  @Override 69  public void onEnter() { 70  trySendRequest(); 71  } 72  73  @Override 74  protected void onMessageTimeOut() { 75  syncEventsHandler.onErrorSyncing( 76  selectedPeer.getPeerNodeID(), 77  "Timeout waiting requests {}", 78  EventType.TIMEOUT_MESSAGE, 79  this.getClass(), 80  selectedPeer.getPeerNodeID()); 81  } 82 }