Пример #1
0
 def test_forwarding(self, mock_post):
     # making test app and setting up test envi
     app = create_app()
     app.config['TESTING'] = True
     app.config['DEBUG'] = False
     app.config[QUORUMS]["a"] = [{API_IP: "192.168.1.200", PORT: "5000", QUORUM_ID: "c"},
                                 {API_IP: "192.168.1.300", PORT: "5000", QUORUM_ID: "d"},
                                 {API_IP: "192.168.1.400", PORT: "5000", QUORUM_ID: "e"}]
     mock_post.return_value = '<Response [200]>'
     forward(app, 'submit/', 'c', TRANSACTION_C_JSON)
     self.assertEqual(2, len(mock_post.call_args))
     self.assertEqual('http://192.168.1.200:5000/submit/', mock_post.call_args[0][0])
     self.assertEqual(TRANSACTION_C_JSON, mock_post.call_args[1]['json'])
Пример #2
0
 def blocks():
     req = get_json(request, app)
     if app.config[PBFT_INSTANCES].in_committee(req[QUORUM_ID]):
         return json.dumps(app.config[PBFT_INSTANCES].blocks(
             req[QUORUM_ID]))
     else:
         return forward(app, "blocks/", req[QUORUM_ID], req)
Пример #3
0
    def get():
        req = get_json(request, app)

        if app.config[PBFT_INSTANCES].in_committee(req[QUORUM_ID]):
            tx = Transaction()
            tx.load_from_json(req)
            return app.config[PBFT_INSTANCES].get_tx(tx)
        else:
            return forward(app, "get/", req[QUORUM_ID], req)
Пример #4
0
 def submit():
     req = get_json(request, app)
     if app.config[PBFT_INSTANCES].in_committee(req[QUORUM_ID]):
         tx = Transaction()
         tx.load_from_json(req)
         app.config[PBFT_INSTANCES].submit(tx)
         return ROUTE_EXECUTED_CORRECTLY
     else:
         return forward(app, "submit/", req[QUORUM_ID], req)
Пример #5
0
    def test_forwarding_randomness(self, mock_post):
        # making test app and setting up test envi
        app = create_app()
        app.config['TESTING'] = True
        app.config['DEBUG'] = False
        app.config[QUORUMS]["a"] = [{
            API_IP: "192.168.1.100",
            PORT: "5000",
            QUORUM_ID: "c"
        }, {
            API_IP: "192.168.1.200",
            PORT: "5000",
            QUORUM_ID: "c"
        }, {
            API_IP: "192.168.1.300",
            PORT: "5000",
            QUORUM_ID: "d"
        }, {
            API_IP: "192.168.1.400",
            PORT: "5000",
            QUORUM_ID: "e"
        }]
        mock_post.return_value = '<Response [200]>'
        selected_neighbours = []
        for _ in range(10):
            forward(app, 'submit/', 'c', TRANSACTION_C_JSON)
            self.assertEqual(2, len(mock_post.call_args))
            self.assertIn(mock_post.call_args[0][0], [
                'http://192.168.1.200:5000/submit/',
                'http://192.168.1.100:5000/submit/'
            ])
            self.assertEqual(TRANSACTION_C_JSON,
                             mock_post.call_args[1]['json'])

            if mock_post.call_args[0][0] not in selected_neighbours:
                selected_neighbours.append(mock_post.call_args[0][0])\

        self.assertEqual(len(selected_neighbours), 2)
Пример #6
0
 def make_genesis(quorum_id=None):
     req = get_json(request, app)
     val_keys = req[VALIDATOR_KEY]
     usr_keys = req[USER_KEY]
     if quorum_id == app.config[PBFT_INSTANCES].committee_id_a:
         app.config[PBFT_INSTANCES].make_genesis(quorum_id, val_keys,
                                                 usr_keys)
     elif quorum_id == app.config[PBFT_INSTANCES].committee_id_b:
         app.config[PBFT_INSTANCES].make_genesis(quorum_id, val_keys,
                                                 usr_keys)
     else:
         return forward(app, "make+genesis/{id}".format(id=quorum_id),
                        quorum_id, req)
     return ROUTE_EXECUTED_CORRECTLY