예제 #1
0
        public void dns_test_wrong_domain()
        {
            PublicKey publicKey = new("0x000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f");
            string    domain    = "i_do_not_exist";
            Action    action    = () => _ = new Enode($"enode://{publicKey.ToString(false)}@{domain}:{1234}");

            action.Should().Throw <ArgumentException>();
        }
예제 #2
0
        public void NetVersionSuccessTest()
        {
            Enode     enode     = new Enode(TestItem.PublicKeyA, IPAddress.Loopback, 30303);
            NetBridge netBridge = new NetBridge(enode, Substitute.For <ISyncServer>(), Substitute.For <IPeerManager>());
            NetModule module    = new NetModule(NullLogManager.Instance, netBridge);
            string    response  = RpcTest.TestSerializedRequest <INetModule>(module, "net_version");

            Assert.AreEqual("{\"id\":67,\"jsonrpc\":\"2.0\",\"result\":\"0\"}", response);
        }
예제 #3
0
        public void NetListeningSuccessTest()
        {
            Enode     enode     = new Enode(TestItem.PublicKeyA, IPAddress.Loopback, 30303);
            NetBridge netBridge = new NetBridge(enode, Substitute.For <ISyncServer>());
            NetModule module    = new NetModule(LimboLogs.Instance, netBridge);
            string    response  = RpcTest.TestSerializedRequest <INetModule>(module, "net_listening");

            Assert.AreEqual("{\"jsonrpc\":\"2.0\",\"result\":true,\"id\":67}", response);
        }
예제 #4
0
        public void ip_test()
        {
            var   publicKey = new PublicKey("0x000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f");
            Enode enode     = new Enode($"enode://{publicKey.ToString(false)}@{IPAddress.Loopback}:{1234}");

            enode.HostIp.Should().BeEquivalentTo(IPAddress.Loopback);
            enode.Port.Should().Be(1234);
            enode.PublicKey.Should().BeEquivalentTo(publicKey);
        }
예제 #5
0
        public void dns_test()
        {
            var    publicKey = new PublicKey("0x000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f");
            string domain    = "nethermind.io";
            Enode  enode     = new Enode($"enode://{publicKey.ToString(false)}@{domain}:{1234}");

            Dns.GetHostAddresses(domain).Should().NotBeEmpty();
            enode.Port.Should().Be(1234);
            enode.PublicKey.Should().BeEquivalentTo(publicKey);
        }
예제 #6
0
        public void dns_test()
        {
            var    publicKey = new PublicKey("0x000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f");
            string domain    = "www.google.com";
            Enode  enode     = new Enode($"enode://{publicKey.ToString(false)}@{domain}:{1234}");

            enode.HostIp.Should().BeEquivalentTo(Dns.GetHostAddresses(domain).First());
            enode.Port.Should().Be(1234);
            enode.PublicKey.Should().BeEquivalentTo(publicKey);
        }
예제 #7
0
        public void Setup()
        {
            _blockTree     = Build.A.BlockTree().OfChainLength(5).TestObject;
            _networkConfig = new NetworkConfig();
            IPeerManager peerManager = Substitute.For <IPeerManager>();

            peerManager.ActivePeers.Returns(new List <Peer> {
                new Peer(new Node("127.0.0.1", 30303, true))
            });

            IStaticNodesManager staticNodesManager = Substitute.For <IStaticNodesManager>();
            Enode enode = new Enode(_enodeString);

            _adminRpcModule = new AdminRpcModule(_blockTree, _networkConfig, peerManager, staticNodesManager, enode, _exampleDataDir);
            _serializer     = new EthereumJsonSerializer();
        }
예제 #8
0
        public async Task Will_accept_static_connection()
        {
            await using Context ctx = new Context();
            ctx.NetworkConfig.ActivePeersMaxCount = 1;
            ctx.StaticNodesManager.IsStatic(enode2String).Returns(true);

            ctx.PeerManager.Init();
            var     enode1   = new Enode(enode1String);
            Node    node1    = new Node(enode1.PublicKey, new IPEndPoint(enode1.HostIp, enode1.Port));
            Session session1 = new Session(30303, node1, Substitute.For <IChannel>(), NullDisconnectsAnalyzer.Instance, LimboLogs.Instance);

            var     enode2   = new Enode(enode2String);
            Node    node2    = new Node(enode2.PublicKey, new IPEndPoint(enode2.HostIp, enode2.Port));
            Session session2 = new Session(30303, node2, Substitute.For <IChannel>(), NullDisconnectsAnalyzer.Instance, LimboLogs.Instance);

            ctx.RlpxPeer.CreateIncoming(session1, session2);
            ctx.PeerManager.ActivePeers.Count.Should().Be(2);
        }
예제 #9
0
 public IPAddress can_find_ipv4_host(IPAddress[] ips) => Enode.GetHostIpFromDnsAddresses(ips);