mirror of
https://github.com/FlipsideCrypto/web3.py.git
synced 2026-02-06 10:56:47 +00:00
Add admin interface
This commit is contained in:
parent
004ce38efa
commit
762aa2d63b
4
tests/admin-module/test_admin_addPeer.py
Normal file
4
tests/admin-module/test_admin_addPeer.py
Normal file
@ -0,0 +1,4 @@
|
||||
def test_admin_addPeer(web3, skip_if_testrpc):
|
||||
skip_if_testrpc(web3)
|
||||
|
||||
assert web3.admin.addPeer('enode://44826a5d6a55f88a18298bca4773fca5749cdc3a5c9f308aa7d810e9b31123f3e7c5fba0b1d70aac5308426f47df2a128a6747040a3815cc7dd7167d03be320d@127.0.0.1:30304') is True
|
||||
7
tests/admin-module/test_admin_nodeInfo.py
Normal file
7
tests/admin-module/test_admin_nodeInfo.py
Normal file
@ -0,0 +1,7 @@
|
||||
def test_admin_nodeInfo(web3, skip_if_testrpc):
|
||||
skip_if_testrpc(web3)
|
||||
|
||||
node_info = web3.admin.nodeInfo
|
||||
|
||||
assert 'enode' in node_info
|
||||
assert 'id' in node_info
|
||||
4
tests/admin-module/test_admin_peers.py
Normal file
4
tests/admin-module/test_admin_peers.py
Normal file
@ -0,0 +1,4 @@
|
||||
def test_admin_peers(web3, skip_if_testrpc):
|
||||
skip_if_testrpc(web3)
|
||||
|
||||
assert web3.admin.peers == []
|
||||
18
tests/admin-module/test_admin_setSolc.py
Normal file
18
tests/admin-module/test_admin_setSolc.py
Normal file
@ -0,0 +1,18 @@
|
||||
import pytest
|
||||
import subprocess
|
||||
|
||||
from web3.utils.string import force_text
|
||||
|
||||
|
||||
def test_admin_setSolc(web3, skip_if_testrpc):
|
||||
skip_if_testrpc(web3)
|
||||
|
||||
try:
|
||||
solc_path = subprocess.check_output(['which', 'solc']).strip()
|
||||
except subprocess.CalledProcessError:
|
||||
pytest.skip('solc binary not found')
|
||||
solc_version = subprocess.check_output(['solc', '--version']).strip()
|
||||
|
||||
actual = web3.admin.setSolc(solc_path)
|
||||
assert force_text(solc_version) in actual
|
||||
assert force_text(solc_path) in actual
|
||||
54
tests/admin-module/test_admin_start_stop_methods.py
Normal file
54
tests/admin-module/test_admin_start_stop_methods.py
Normal file
@ -0,0 +1,54 @@
|
||||
import pytest
|
||||
from flaky import flaky
|
||||
|
||||
|
||||
def get_open_port():
|
||||
import socket
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.bind(("", 0))
|
||||
s.listen(1)
|
||||
port = s.getsockname()[1]
|
||||
s.close()
|
||||
return port
|
||||
|
||||
|
||||
@flaky(max_runs=3)
|
||||
def test_admin_startRPC(web3_ipc_empty, skip_if_testrpc):
|
||||
web3 = web3_ipc_empty
|
||||
skip_if_testrpc(web3)
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
web3.admin.startRPC()
|
||||
assert web3.admin.stopRPC()
|
||||
assert web3.admin.startRPC(port=get_open_port())
|
||||
|
||||
|
||||
@flaky(max_runs=3)
|
||||
def test_admin_stopRPC(web3_ipc_empty, skip_if_testrpc):
|
||||
web3 = web3_ipc_empty
|
||||
skip_if_testrpc(web3)
|
||||
|
||||
assert web3.admin.stopRPC()
|
||||
with pytest.raises(ValueError):
|
||||
web3.admin.stopRPC()
|
||||
|
||||
|
||||
@flaky(max_runs=3)
|
||||
def test_admin_startWS(web3_ipc_empty, skip_if_testrpc):
|
||||
web3 = web3_ipc_empty
|
||||
skip_if_testrpc(web3)
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
web3.admin.startWS()
|
||||
assert web3.admin.stopWS()
|
||||
assert web3.admin.startWS(port=get_open_port())
|
||||
|
||||
|
||||
@flaky(max_runs=3)
|
||||
def test_admin_stopWS(web3_ipc_empty, skip_if_testrpc):
|
||||
web3 = web3_ipc_empty
|
||||
skip_if_testrpc(web3)
|
||||
|
||||
assert web3.admin.stopWS()
|
||||
with pytest.raises(ValueError):
|
||||
web3.admin.stopWS()
|
||||
39
web3/admin.py
Normal file
39
web3/admin.py
Normal file
@ -0,0 +1,39 @@
|
||||
class Admin(object):
|
||||
def __init__(self, request_manager):
|
||||
self.request_manager = request_manager
|
||||
|
||||
def addPeer(self, node_url):
|
||||
return self.request_manager.request_blocking("admin_addPeer", [node_url])
|
||||
|
||||
@property
|
||||
def datadir(self):
|
||||
return self.request_manager.request_blocking("admin_datadir", [])
|
||||
|
||||
@property
|
||||
def nodeInfo(self):
|
||||
return self.request_manager.request_blocking("admin_nodeInfo", [])
|
||||
|
||||
@property
|
||||
def peers(self):
|
||||
return self.request_manager.request_blocking("admin_peers", [])
|
||||
|
||||
def setSolc(self, solc_path):
|
||||
return self.request_manager.request_blocking("admin_setSolc", [solc_path])
|
||||
|
||||
def startRPC(self, host='localhost', port='8545', cors="", apis="eth,net,web3"):
|
||||
return self.request_manager.request_blocking(
|
||||
"admin_startRPC",
|
||||
[host, port, cors, apis],
|
||||
)
|
||||
|
||||
def startWS(self, host='localhost', port='8546', cors="", apis="eth,net,web3"):
|
||||
return self.request_manager.request_blocking(
|
||||
"admin_startWS",
|
||||
[host, port, cors, apis],
|
||||
)
|
||||
|
||||
def stopRPC(self):
|
||||
return self.request_manager.request_blocking("admin_stopRPC", [])
|
||||
|
||||
def stopWS(self):
|
||||
return self.request_manager.request_blocking("admin_stopWS", [])
|
||||
10
web3/main.py
10
web3/main.py
@ -1,13 +1,14 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from web3.eth import Eth
|
||||
from web3.admin import Admin
|
||||
from web3.db import Db
|
||||
from web3.shh import Shh
|
||||
from web3.eth import Eth
|
||||
from web3.miner import Miner
|
||||
from web3.net import Net
|
||||
from web3.personal import Personal
|
||||
from web3.version import Version
|
||||
from web3.shh import Shh
|
||||
from web3.txpool import TxPool
|
||||
from web3.miner import Miner
|
||||
from web3.version import Version
|
||||
|
||||
from web3.providers.rpc import (
|
||||
RPCProvider,
|
||||
@ -54,6 +55,7 @@ class Web3(object):
|
||||
self.version = Version(self._requestManager)
|
||||
self.txpool = TxPool(self._requestManager)
|
||||
self.miner = Miner(self._requestManager)
|
||||
self.admin = Admin(self._requestManager)
|
||||
|
||||
self.providers = {
|
||||
'RPCProvider': RPCProvider,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user