mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge pull request #454 from jorisbontje/423-dockerfile
update Dockerfile with cryptopp and jsonrpc dependencies, fixes #423 Cleaned up jsonrpc test Forgot the #if Undo jsonrpc test changes
This commit is contained in:
		
							parent
							
								
									919d3c56eb
								
							
						
					
					
						commit
						37939c565d
					
				
							
								
								
									
										54
									
								
								jsonrpc.cpp
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								jsonrpc.cpp
									
									
									
									
									
								
							| @ -36,6 +36,8 @@ | |||||||
| #include "TestHelper.h" | #include "TestHelper.h" | ||||||
| #include "webthreestubclient.h" | #include "webthreestubclient.h" | ||||||
| 
 | 
 | ||||||
|  | BOOST_AUTO_TEST_SUITE(jsonrpc) | ||||||
|  | 
 | ||||||
| using namespace std; | using namespace std; | ||||||
| using namespace dev; | using namespace dev; | ||||||
| using namespace dev::eth; | using namespace dev::eth; | ||||||
| @ -44,34 +46,35 @@ namespace js = json_spirit; | |||||||
| namespace jsonrpc_tests | namespace jsonrpc_tests | ||||||
| { | { | ||||||
| 
 | 
 | ||||||
|  | string name = "Ethereum(++) tests"; | ||||||
|  | string dbPath; | ||||||
|  | auto s = set<string>{"eth", "shh"}; | ||||||
|  | dev::p2p::NetworkPreferences np(30303, std::string(), false); | ||||||
|  | dev::WebThreeDirect web3(name, dbPath, true, s, np); | ||||||
|  | 
 | ||||||
|  | unique_ptr<WebThreeStubServer> jsonrpcServer; | ||||||
|  | unique_ptr<WebThreeStubClient> jsonrpcClient; | ||||||
|  | 
 | ||||||
| struct JsonrpcFixture  { | struct JsonrpcFixture  { | ||||||
| 	JsonrpcFixture():web3(name, dbPath, true, set<string>{"eth", "shh"}, dev::p2p::NetworkPreferences(30303, std::string(), false)) | 	JsonrpcFixture() | ||||||
| 	{ | 	{ | ||||||
| 		cnote << "setup jsonrpc"; | 		cnote << "setup jsonrpc"; | ||||||
| 
 | 
 | ||||||
| 		name = "Ethereum(++) tests"; |  | ||||||
| 		web3.setIdealPeerCount(5); | 		web3.setIdealPeerCount(5); | ||||||
| 		web3.ethereum()->setForceMining(true); | 		web3.ethereum()->setForceMining(true); | ||||||
| 		jsonrpcServer = unique_ptr<WebThreeStubServer>(new WebThreeStubServer(new jsonrpc::CorsHttpServer(8080), web3, {})); | 		jsonrpcServer = unique_ptr<WebThreeStubServer>(new WebThreeStubServer(new jsonrpc::CorsHttpServer(8080), web3, {})); | ||||||
| 		jsonrpcServer->setIdentities({}); | 		jsonrpcServer->setIdentities({}); | ||||||
| 		jsonrpcServer->StartListening(); | 		jsonrpcServer->StartListening(); | ||||||
| 
 | 		 | ||||||
| 		jsonrpcClient = unique_ptr<WebThreeStubClient>(new WebThreeStubClient(new jsonrpc::HttpClient("http://localhost:8080"))); | 		jsonrpcClient = unique_ptr<WebThreeStubClient>(new WebThreeStubClient(new jsonrpc::HttpClient("http://localhost:8080"))); | ||||||
| 	} | 	} | ||||||
| 	~JsonrpcFixture() | 	~JsonrpcFixture() | ||||||
| 	{ | 	{ | ||||||
| 		cnote << "teardown jsonrpc"; | 		cnote << "teardown jsonrpc"; | ||||||
| 	} | 	} | ||||||
| 
 |  | ||||||
| 	string name; |  | ||||||
| 	string dbPath; |  | ||||||
| 	unique_ptr<WebThreeStubServer> jsonrpcServer; |  | ||||||
| 	unique_ptr<WebThreeStubClient> jsonrpcClient; |  | ||||||
| 	dev::WebThreeDirect web3; |  | ||||||
| 
 |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| BOOST_FIXTURE_TEST_SUITE(jsonrpc, JsonrpcFixture) | BOOST_GLOBAL_FIXTURE(JsonrpcFixture) | ||||||
| 
 | 
 | ||||||
| BOOST_AUTO_TEST_CASE(jsonrpc_defaultBlock) | BOOST_AUTO_TEST_CASE(jsonrpc_defaultBlock) | ||||||
| { | { | ||||||
| @ -94,7 +97,7 @@ BOOST_AUTO_TEST_CASE(jsonrpc_isListening) | |||||||
| 	web3.startNetwork(); | 	web3.startNetwork(); | ||||||
| 	bool listeningOn = jsonrpcClient->listening(); | 	bool listeningOn = jsonrpcClient->listening(); | ||||||
| 	BOOST_CHECK_EQUAL(listeningOn, web3.isNetworkStarted()); | 	BOOST_CHECK_EQUAL(listeningOn, web3.isNetworkStarted()); | ||||||
| 
 | 	 | ||||||
| 	web3.stopNetwork(); | 	web3.stopNetwork(); | ||||||
| 	bool listeningOff = jsonrpcClient->listening(); | 	bool listeningOff = jsonrpcClient->listening(); | ||||||
| 	BOOST_CHECK_EQUAL(listeningOff, web3.isNetworkStarted()); | 	BOOST_CHECK_EQUAL(listeningOff, web3.isNetworkStarted()); | ||||||
| @ -156,7 +159,7 @@ BOOST_AUTO_TEST_CASE(jsonrpc_setListening) | |||||||
| 
 | 
 | ||||||
| 	jsonrpcClient->setListening(true); | 	jsonrpcClient->setListening(true); | ||||||
| 	BOOST_CHECK_EQUAL(web3.isNetworkStarted(), true); | 	BOOST_CHECK_EQUAL(web3.isNetworkStarted(), true); | ||||||
| 
 | 	 | ||||||
| 	jsonrpcClient->setListening(false); | 	jsonrpcClient->setListening(false); | ||||||
| 	BOOST_CHECK_EQUAL(web3.isNetworkStarted(), false); | 	BOOST_CHECK_EQUAL(web3.isNetworkStarted(), false); | ||||||
| } | } | ||||||
| @ -186,7 +189,7 @@ BOOST_AUTO_TEST_CASE(jsonrpc_transact) | |||||||
| 	cnote << "Testing jsonrpc transact..."; | 	cnote << "Testing jsonrpc transact..."; | ||||||
| 	string coinbase = jsonrpcClient->coinbase(); | 	string coinbase = jsonrpcClient->coinbase(); | ||||||
| 	BOOST_CHECK_EQUAL(jsToAddress(coinbase), web3.ethereum()->address()); | 	BOOST_CHECK_EQUAL(jsToAddress(coinbase), web3.ethereum()->address()); | ||||||
| 
 | 	 | ||||||
| 	dev::KeyPair key = KeyPair::create(); | 	dev::KeyPair key = KeyPair::create(); | ||||||
| 	auto address = key.address(); | 	auto address = key.address(); | ||||||
| 	auto receiver = KeyPair::create(); | 	auto receiver = KeyPair::create(); | ||||||
| @ -195,28 +198,28 @@ BOOST_AUTO_TEST_CASE(jsonrpc_transact) | |||||||
| 	coinbase = jsonrpcClient->coinbase(); | 	coinbase = jsonrpcClient->coinbase(); | ||||||
| 	BOOST_CHECK_EQUAL(jsToAddress(coinbase), web3.ethereum()->address()); | 	BOOST_CHECK_EQUAL(jsToAddress(coinbase), web3.ethereum()->address()); | ||||||
| 	BOOST_CHECK_EQUAL(jsToAddress(coinbase), address); | 	BOOST_CHECK_EQUAL(jsToAddress(coinbase), address); | ||||||
| 
 | 	 | ||||||
| 	jsonrpcServer->setAccounts({key}); | 	jsonrpcServer->setAccounts({key}); | ||||||
| 	auto balance = web3.ethereum()->balanceAt(address, 0); | 	auto balance = web3.ethereum()->balanceAt(address, 0); | ||||||
| 	string balanceString = jsonrpcClient->balanceAt(toJS(address)); | 	string balanceString = jsonrpcClient->balanceAt(toJS(address)); | ||||||
| 	double countAt = jsonrpcClient->countAt(toJS(address)); | 	double countAt = jsonrpcClient->countAt(toJS(address)); | ||||||
| 
 | 	 | ||||||
| 	BOOST_CHECK_EQUAL(countAt, (double)(uint64_t)web3.ethereum()->countAt(address)); | 	BOOST_CHECK_EQUAL(countAt, (double)(uint64_t)web3.ethereum()->countAt(address)); | ||||||
| 	BOOST_CHECK_EQUAL(countAt, 0); | 	BOOST_CHECK_EQUAL(countAt, 0); | ||||||
| 	BOOST_CHECK_EQUAL(toJS(balance), balanceString); | 	BOOST_CHECK_EQUAL(toJS(balance), balanceString); | ||||||
| 	BOOST_CHECK_EQUAL(jsToDecimal(balanceString), "0"); | 	BOOST_CHECK_EQUAL(jsToDecimal(balanceString), "0"); | ||||||
| 
 | 	 | ||||||
| 	dev::eth::mine(*(web3.ethereum()), 1); | 	dev::eth::mine(*(web3.ethereum()), 1); | ||||||
| 	balance = web3.ethereum()->balanceAt(address, 0); | 	balance = web3.ethereum()->balanceAt(address, 0); | ||||||
| 	balanceString = jsonrpcClient->balanceAt(toJS(address)); | 	balanceString = jsonrpcClient->balanceAt(toJS(address)); | ||||||
| 
 | 	 | ||||||
| 	BOOST_CHECK_EQUAL(toJS(balance), balanceString); | 	BOOST_CHECK_EQUAL(toJS(balance), balanceString); | ||||||
| 	BOOST_CHECK_EQUAL(jsToDecimal(balanceString), "1500000000000000000"); | 	BOOST_CHECK_EQUAL(jsToDecimal(balanceString), "1500000000000000000"); | ||||||
| 
 | 	 | ||||||
| 	auto txAmount = balance / 2u; | 	auto txAmount = balance / 2u; | ||||||
| 	auto gasPrice = 10 * dev::eth::szabo; | 	auto gasPrice = 10 * dev::eth::szabo; | ||||||
| 	auto gas = dev::eth::c_txGas; | 	auto gas = dev::eth::c_txGas; | ||||||
| 
 | 	 | ||||||
| 	Json::Value t; | 	Json::Value t; | ||||||
| 	t["from"] = toJS(address); | 	t["from"] = toJS(address); | ||||||
| 	t["value"] = jsToDecimal(toJS(txAmount)); | 	t["value"] = jsToDecimal(toJS(txAmount)); | ||||||
| @ -224,21 +227,24 @@ BOOST_AUTO_TEST_CASE(jsonrpc_transact) | |||||||
| 	t["data"] = toJS(bytes()); | 	t["data"] = toJS(bytes()); | ||||||
| 	t["gas"] = toJS(gas); | 	t["gas"] = toJS(gas); | ||||||
| 	t["gasPrice"] = toJS(gasPrice); | 	t["gasPrice"] = toJS(gasPrice); | ||||||
| 
 | 	 | ||||||
| 	jsonrpcClient->transact(t); | 	jsonrpcClient->transact(t); | ||||||
| 	jsonrpcServer->setAccounts({}); | 	jsonrpcServer->setAccounts({}); | ||||||
| 	dev::eth::mine(*(web3.ethereum()), 1); | 	dev::eth::mine(*(web3.ethereum()), 1); | ||||||
| 
 | 	 | ||||||
| 	countAt = jsonrpcClient->countAt(toJS(address)); | 	countAt = jsonrpcClient->countAt(toJS(address)); | ||||||
| 	auto balance2 = web3.ethereum()->balanceAt(receiver.address()); | 	auto balance2 = web3.ethereum()->balanceAt(receiver.address()); | ||||||
| 	string balanceString2 = jsonrpcClient->balanceAt(toJS(receiver.address())); | 	string balanceString2 = jsonrpcClient->balanceAt(toJS(receiver.address())); | ||||||
| 
 | 	 | ||||||
| 	BOOST_CHECK_EQUAL(countAt, (double)(uint64_t)web3.ethereum()->countAt(address)); | 	BOOST_CHECK_EQUAL(countAt, (double)(uint64_t)web3.ethereum()->countAt(address)); | ||||||
| 	BOOST_CHECK_EQUAL(countAt, 1); | 	BOOST_CHECK_EQUAL(countAt, 1); | ||||||
| 	BOOST_CHECK_EQUAL(toJS(balance2), balanceString2); | 	BOOST_CHECK_EQUAL(toJS(balance2), balanceString2); | ||||||
| 	BOOST_CHECK_EQUAL(jsToDecimal(balanceString2), "750000000000000000"); | 	BOOST_CHECK_EQUAL(jsToDecimal(balanceString2), "750000000000000000"); | ||||||
| 	BOOST_CHECK_EQUAL(txAmount, balance2); | 	BOOST_CHECK_EQUAL(txAmount, balance2); | ||||||
| } | } | ||||||
| 	BOOST_AUTO_TEST_SUITE_END() | 
 | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | BOOST_AUTO_TEST_SUITE_END() | ||||||
|  | 
 | ||||||
| #endif | #endif | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user