private IPeerAddressManager CreateTestPeerAddressManager(List <Tuple <IPEndPoint, DateTimeOffset> > testDataSet) { var peers = new ConcurrentDictionary <IPEndPoint, PeerAddress>(); string dataFolderDirectory = Path.Combine(AppContext.BaseDirectory, "WhitelistTests"); if (Directory.Exists(dataFolderDirectory)) { Directory.Delete(dataFolderDirectory, true); } Directory.CreateDirectory(dataFolderDirectory); var peerFolder = new DataFolder(new NodeSettings(args: new string[] { $"-datadir={dataFolderDirectory}" }).DataDir); Mock <ILogger> mockLogger = new Mock <ILogger>(); Mock <ILoggerFactory> mockLoggerFactory = new Mock <ILoggerFactory>(); mockLoggerFactory.Setup(l => l.CreateLogger(It.IsAny <string>())).Returns(mockLogger.Object); ILoggerFactory loggerFactory = mockLoggerFactory.Object; IPeerAddressManager peerAddressManager = new PeerAddressManager(DateTimeProvider.Default, peerFolder, loggerFactory); foreach (Tuple <IPEndPoint, DateTimeOffset> testData in testDataSet) { peerAddressManager.AddPeer(testData.Item1, IPAddress.Loopback); peerAddressManager.PeerSeen(testData.Item1, testData.Item2.DateTime); } return(peerAddressManager); }
public void PeerFile_CanSaveAndLoadPeers_PeerSeen() { var ipAddress = IPAddress.Parse("::ffff:192.168.0.1"); var endpoint = new IPEndPoint(ipAddress, 80); var peerFolder = AssureEmptyDirAsDataFolder(Path.Combine(AppContext.BaseDirectory, "PeerAddressManager")); var addressManager = new PeerAddressManager(DateTimeProvider.Default, peerFolder, this.loggerFactory, new SelfEndpointTracker()); addressManager.AddPeer(endpoint, IPAddress.Loopback); var applicableDate = DateTime.UtcNow.Date; addressManager.PeerAttempted(endpoint, applicableDate); addressManager.PeerConnected(endpoint, applicableDate); addressManager.PeerHandshaked(endpoint, applicableDate); addressManager.PeerSeen(endpoint, applicableDate); addressManager.SavePeers(); addressManager.LoadPeers(); var savedPeer = addressManager.FindPeer(endpoint); Assert.Equal("::ffff:192.168.0.1", savedPeer.Endpoint.Address.ToString()); Assert.Equal(80, savedPeer.Endpoint.Port); Assert.Equal(0, savedPeer.ConnectionAttempts); Assert.Equal(applicableDate, savedPeer.LastConnectionSuccess.Value.Date); Assert.Equal(applicableDate, savedPeer.LastConnectionHandshake.Value.Date); Assert.Equal(applicableDate, savedPeer.LastSeen.Value.Date); Assert.Equal("127.0.0.1", savedPeer.Loopback.ToString()); }
public void PeerFile_CanSaveAndLoadPeers_PeerSeen() { IPAddress ipAddress = IPAddress.Parse("::ffff:192.168.0.1"); var endpoint = new IPEndPoint(ipAddress, 80); DataFolder peerFolder = CreateDataFolder(this); var addressManager = new PeerAddressManager(DateTimeProvider.Default, peerFolder, this.LoggerFactory.Object, new SelfEndpointTracker(this.LoggerFactory.Object)); addressManager.AddPeer(endpoint, IPAddress.Loopback); DateTime applicableDate = DateTime.UtcNow.Date; addressManager.PeerAttempted(endpoint, applicableDate); addressManager.PeerConnected(endpoint, applicableDate); addressManager.PeerHandshaked(endpoint, applicableDate); addressManager.PeerSeen(endpoint, applicableDate); addressManager.SavePeers(); addressManager.LoadPeers(); PeerAddress savedPeer = addressManager.FindPeer(endpoint); Assert.Equal("::ffff:192.168.0.1", savedPeer.Endpoint.Address.ToString()); Assert.Equal(80, savedPeer.Endpoint.Port); Assert.Equal(0, savedPeer.ConnectionAttempts); Assert.Equal(applicableDate, savedPeer.LastConnectionSuccess.Value.Date); Assert.Equal(applicableDate, savedPeer.LastConnectionHandshake.Value.Date); Assert.Equal(applicableDate, savedPeer.LastSeen.Value.Date); Assert.Equal("::ffff:127.0.0.1", savedPeer.Loopback.ToString()); }