def test_create_container(self):
        """Test creation of transaction container. Container must take an instance of messagebase and be a well-formatted
        transaction type to be accepted by masternode"""
        tx = self._convenience_build_standard_transaction()
        tc = TransactionContainer.create(tx)  # does not throw error

        self.assertTrue(type(tc), MessageBase)  # Transaction Container is a messagebase object
    def test_open_container(self):
        tx = self._convenience_build_standard_transaction()
        tc = TransactionContainer.create(tx)
        open_container_data = tc.open()

        # test opened container for integrity
        open_container_data.validate_metadata()
        open_container_data.validate_payload()
Example #3
0
async def contract_tx(request):
    tx_bytes = request.body
    container = TransactionContainer.from_bytes(tx_bytes)
    tx = container.open()
    app.queue.put(tx)
    log.spam("proc id {} just put a tx in queue! queue size = {}".format(
        os.getpid(), app.queue.qsize()))
    return text('ok put tx in queue...current queue size is {}'.format(
        app.queue.qsize()))
Example #4
0
 def send_tx(cls, tx: TransactionBase):
     try:
         r = requests.post(cls.mn_url,
                           data=TransactionContainer.create(tx).serialize())
         cls.log.spam(
             "POST request to MN at URL {} has status code: {}".format(
                 cls.mn_url, r.status_code))
     except Exception as e:
         cls.log.warning(
             "Error attempt to send transaction to Masternode at URL {}\nerror={}"
             .format(cls.mn_url, e))
Example #5
0
    async def route_http(self, request):
        # self.log.debug("Got request {}".format(request))
        raw_data = await request.content.read()

        # self.log.debug("Got raw_data: {}".format(raw_data))
        container = TransactionContainer.from_bytes(raw_data)

        # self.log.debug("Got container: {}".format(container))
        tx = container.open()
        self.log.debug("Masternode got tx: {}".format(tx))

        import traceback
        try:
            self.state.call_input_handler(message=tx,
                                          input_type=StateInput.INPUT)
            return web.Response(
                text="Successfully published transaction: {}".format(tx))
        except Exception as e:
            self.log.error(
                "\n Error publishing HTTP request...err = {}".format(
                    traceback.format_exc()))
            return web.Response(
                text="fukt up processing request with err: {}".format(e))
 def test_open_container_bad_payload(self):
     """Tests to see opening transaction container with invalid registry key fails"""
     tx = self._convenience_build_standard_transaction()
     tc = TransactionContainer.create(tx)
     tc._data.payload = 'lel'  # set payload to invalid entry
     self.assertRaises(Exception, tc.open)
    def test_deserialize_container(self):
        tx = self._convenience_build_standard_transaction()
        tc = TransactionContainer.create(tx)  # does not throw error
        tcs = tc.serialize()

        TransactionContainer.from_bytes(tcs)  # no error deserializing
 def test_serialize_container(self):
     tx = self._convenience_build_standard_transaction()
     tc = TransactionContainer.create(tx)
     tc.serialize() # does not throw error
Example #9
0
 def send_tx(cls, tx: TransactionBase):
     r = requests.post(cls.mn_url,
                       data=TransactionContainer.create(tx).serialize())
     cls.log.debug(
         "POST request to MN at URL {} has status code: {}".format(
             cls.mn_url, r.status_code))