Example #1
0
 def test_web_api_forward(self):
     # Test _msgforward
     local_node = self._create_node(8807)
     gossip = Gossip(local_node)
     path = tempfile.mkdtemp()
     ledger = Journal(gossip, data_directory=path, genesis_ledger=True)
     # Create peers for the message to be forwarded to
     node1 = self._create_node(8881)
     node2 = self._create_node(8882)
     node1.is_peer = True
     node2.is_peer = True
     gossip.add_node(node1)
     gossip.add_node(node2)
     validator = TestValidator(ledger)
     forward_page = ForwardPage(validator)
     # Create message to use and the data to forward
     msg = shutdown_message.ShutdownMessage()
     msg.sign_from_node(local_node)
     data = msg.dump()
     # Post /forward
     request = self._create_post_request("forward", data)
     r = yaml.load(forward_page.do_post(request))
     self.assertEquals(r, data)
     self.assertIn(msg.Identifier, node1.MessageQ.Messages)
     self.assertIn(msg.Identifier, node2.MessageQ.Messages)
Example #2
0
    def test_web_api_forward(self):
        # Test _msgforward
        validator = self._create_validator()
        # Create peers for the message to be forwarded to
        node1 = self._create_node(8881)
        node2 = self._create_node(8882)
        node1.is_peer = True
        node2.is_peer = True
        validator.gossip.add_node(node1)
        validator.gossip.add_node(node2)

        forward_page = ForwardPage(validator)
        # Create message to use and the data to forward
        msg = shutdown_message.ShutdownMessage()
        msg.sign_from_node(validator.gossip.LocalNode)
        data = msg.dump()
        # Post /forward
        request = self._create_post_request("forward", data)
        r = yaml.load(forward_page.do_post(request))
        self.assertEquals(r, data)
        self.assertIn(msg.Identifier, node1.MessageQ.Messages)
        self.assertIn(msg.Identifier, node2.MessageQ.Messages)

        # Create an unknown error message to use
        msg = ErrorMessage({'error': "an unknown error message"})
        msg.sign_from_node(validator.gossip.LocalNode)
        data = msg.dump()

        # Post an unknown error messsage
        request = self._create_post_request("forward", data)
        r = yaml.load(forward_page.do_post(request))
        self.assertEquals(r['status'], http.NOT_FOUND)
    def do_shutdown(self, args):
        """
        shutdown -- Command to send a shutdown message to the validator pool
        """

        self.sign_and_post(shutdown_message.ShutdownMessage({}))
        return True
 def test_gossip_get_message_handler(self):
     # Get message handler from MessageHandlerMap
     # Will throw error if not in HandlerMap
     core = self._setup(8841)
     msg = shutdown_message.ShutdownMessage({'__SIGNATURE__': "test"})
     handler = core.dispatcher.get_message_handler(msg)
     self.assertEqual(handler, shutdown_message.shutdown_handler)
 def test_gossip_datagram_received(self):
     # Test that datagramReceived behaves as expected
     core = self._setup(9500)
     peer = self._create_node(9501)
     peer2 = self._create_node(9502)
     core.add_node(peer)
     core.add_node(peer2)
     msg = self._create_msg()
     pak = Packet()
     pak.add_message(msg, peer, peer2, 0)
     data = pak.pack()
     # Test correct use of datagramReceived
     core.datagramReceived(data, "localhost:9001")
     msgType = core.MessageStats.get_stats(["MessageType"])
     self.assertIn('/gossip.Message/MessageBase', msgType["MessageType"])
     pakStats = core.PacketStats.get_stats(["MessagesAcked"])
     self.assertEqual(pakStats["MessagesAcked"], 1)
     # Test handling of duplicate packets
     msg2 = shutdown_message.ShutdownMessage({'__SIGNATURE__': "test"})
     core.MessageHandledMap[msg2.Identifier] = time.time()
     pak.add_message(msg2, peer, peer2, 1)
     data2 = pak.pack()
     core.datagramReceived(data2, "localhost:9001")
     pakStats = core.PacketStats.get_stats(["DuplicatePackets"])
     self.assertEqual(pakStats["DuplicatePackets"], 1)
 def test_gossip_unpack_message(self):
     # Test unpacking message using its handler
     core = self._setup(8842)
     msg = shutdown_message.ShutdownMessage({'__SIGNATURE__': "test"})
     info = msg.dump()
     m = core.dispatcher.unpack_message(
         '/gossip.messages.ShutdownMessage/ShutdownMessage', info)
     self.assertEqual(msg.Identifier, m.Identifier)
 def test_gossip_dispatcher(self):
     # Test _dispatch will not loop if not processing messages
     core = self._setup(8883)
     msg = shutdown_message.ShutdownMessage({'__SIGNATURE__': "test"})
     core.IncomingMessageQueue.appendleft(msg)
     # Should not run if ProcessIncomingMessages is False
     # Otherwise it will loop
     core.ProcessIncomingMessages = False
     core._dispatcher()
Example #8
0
    def post_shutdown(self):
        client = SawtoothClient(self.url)

        msg = shutdown_message.ShutdownMessage({})
        msg.SenderID = self._admin_node.Address
        msg.sign_from_node(self._admin_node)

        try:
            client.forward_message(msg)
        except MessageException as me:
            print(me)
    def post_shutdown(self):
        lwc = LedgerWebClient(self.url)

        msg = shutdown_message.ShutdownMessage({})
        msg.SenderID = self._admin_node.Address
        msg.sign_from_node(self._admin_node)

        try:
            lwc.post_message(msg)
        except MessageException as me:
            print me
Example #10
0
    def post_shutdown(self):
        lwc = ledger_web_client.LedgerWebClient(self.Url)

        msg = shutdown_message.ShutdownMessage({})
        msg.SenderID = self.AdminNode.Address
        msg.sign_from_node(self.AdminNode)

        try:
            lwc.post_message(msg)
        except ledger_web_client.MessageException as me:
            print me
Example #11
0
 def test_gossip_register_message_handlers(self):
     # Test that a message handler and type can be added and removed
     core = self._setup(8840)
     msg = shutdown_message.ShutdownMessage({'__SIGNATURE__': "test"})
     # Remove ShutdownMessage handler
     core.clear_message_handler(msg)
     self.assertNotIn("/gossip.messages.ShutdownMessage/ShutdownMessage",
                      core.MessageHandlerMap)
     # Add ShutdownMessage handler
     core.register_message_handler(msg, shutdown_message.shutdown_handler)
     self.assertIn("/gossip.messages.ShutdownMessage/ShutdownMessage",
                   core.MessageHandlerMap)
Example #12
0
 def test_web_api_msg_echo(self):
     # Test _msgecho
     LocalNode = self._create_node(8805)
     path = tempfile.mkdtemp()
     ledger = Journal(LocalNode, DataDirectory=path, GenesisLedger=True)
     validator = TestValidator(ledger)
     root = RootPage(validator)
     # Create message to use and the data to echo
     msg = shutdown_message.ShutdownMessage({'__SIGNATURE__': "test"})
     msg.sign_from_node(LocalNode)
     data = msg.dump()
     # POST /echo
     request = self._create_post_request("/echo", data)
     self.assertEquals(yaml.load(root.do_post(request)), data)
Example #13
0
 def test_gossip_register_message_handlers(self):
     # Test that a message handler and type can be added and removed
     core = self._setup(8840)
     msg = shutdown_message.ShutdownMessage({'__SIGNATURE__': "test"})
     # Remove ShutdownMessage handler
     core.dispatcher.clear_message_handler(msg)
     self.assertFalse(
         core.dispatcher.has_message_handler(
             "/gossip.messages.ShutdownMessage/ShutdownMessage"))
     # Add ShutdownMessage handler
     core.dispatcher.register_message_handler(
         msg, shutdown_message.shutdown_handler)
     self.assertTrue(
         core.dispatcher.has_message_handler(
             "/gossip.messages.ShutdownMessage/ShutdownMessage"))
Example #14
0
 def test_web_api_msg_initiate(self):
     # Test _msginitiate
     LocalNode = self._create_node(8806)
     path = tempfile.mkdtemp()
     ledger = Journal(LocalNode, DataDirectory=path, GenesisLedger=True)
     validator = TestValidator(ledger)
     root = RootPage(validator)
     # Create message to use and the data to  initiate
     msg = shutdown_message.ShutdownMessage()
     data = msg.dump()
     request = self._create_post_request("/initiate", data)
     r = root.do_post(request)
     self.assertEquals(r, "error processing http request /initiate\n")
     request.client = address.IPv4Address("TCP", '127.0.0.1', 8806)
     # Post /initiate - This should sign the message
     r = yaml.load(root.do_post(request))
     sig = r["__SIGNATURE__"]
     r.pop("__SIGNATURE__", None)
     data.pop("__SIGNATURE__", None)
     self.assertEquals(r, data)
     self.assertIsNotNone(sig)
Example #15
0
 def test_web_api_forward(self):
     # Test _msgforward
     LocalNode = self._create_node(8807)
     path = tempfile.mkdtemp()
     ledger = Journal(LocalNode, DataDirectory=path, GenesisLedger=True)
     # Create peers for the message to be forwarded to
     node1 = self._create_node(8881)
     node2 = self._create_node(8882)
     node1.is_peer = True
     node2.is_peer = True
     ledger.add_node(node1)
     ledger.add_node(node2)
     validator = TestValidator(ledger)
     root = RootPage(validator)
     # Create message to use and the data to forward
     msg = shutdown_message.ShutdownMessage()
     msg.sign_from_node(LocalNode)
     data = msg.dump()
     # Post /forward
     request = self._create_post_request("forward", data)
     r = yaml.load(root.do_post(request))
     self.assertEquals(r, data)
     self.assertIn(msg.Identifier, node1.MessageQ.Messages)
     self.assertIn(msg.Identifier, node2.MessageQ.Messages)