{"action":"created","comment":{"url":"https://api.github.com/repos/theQRL/integration_tests/pulls/comments/155243405","pull_request_review_id":81529276,"id":155243405,"diff_hunk":"@@ -0,0 +1,65 @@\n+import grpc\n+\n+from qrl.generated import qrl_pb2, qrl_pb2_grpc\n+\n+from qrl.core.Transaction import Transaction\n+from qrl.core.Wallet import Wallet, AddressBundle\n+\n+\n+class NodeInterface:\n+    \"\"\"\n+    Abstraction on top of gRPC so that CLI, tests that need to communicate \n+    with a running node do not reimplement business logic on top of gRPC.\n+    \"\"\"\n+    def __init__(self, ip, port=9009, debug=False):\n+       \"\"\"\n+       server format: ip:addr\n+       \"\"\"\n+       self.debug = debug\n+       self.channel = grpc.insecure_channel(\":\".join([ip, str(port)]))  # 127.0.0.1, 9009 -> \"127.0.0.1:9009\"\n+       self.stub = qrl_pb2_grpc.PublicAPIStub(self.channel)\n+\n+    def send(self, from_addr:AddressBundle, to_addr:bytes, amount, fee):","path":"qrl_testing/NodeInterface.py","position":22,"original_position":22,"commit_id":"a203e0ce8c711bec6984edc94fa2b1f7b1b871d0","original_commit_id":"a203e0ce8c711bec6984edc94fa2b1f7b1b871d0","user":{"login":"jleni","id":13698520,"avatar_url":"https://avatars3.githubusercontent.com/u/13698520?v=4","gravatar_id":"","url":"https://api.github.com/users/jleni","html_url":"https://github.com/jleni","followers_url":"https://api.github.com/users/jleni/followers","following_url":"https://api.github.com/users/jleni/following{/other_user}","gists_url":"https://api.github.com/users/jleni/gists{/gist_id}","starred_url":"https://api.github.com/users/jleni/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jleni/subscriptions","organizations_url":"https://api.github.com/users/jleni/orgs","repos_url":"https://api.github.com/users/jleni/repos","events_url":"https://api.github.com/users/jleni/events{/privacy}","received_events_url":"https://api.github.com/users/jleni/received_events","type":"User","site_admin":false},"body":"fee is not used in the code and later the fee is hardcoded to 1","created_at":"2017-12-06T14:01:25Z","updated_at":"2017-12-06T14:27:00Z","html_url":"https://github.com/theQRL/integration_tests/pull/4#discussion_r155243405","pull_request_url":"https://api.github.com/repos/theQRL/integration_tests/pulls/4","author_association":"MEMBER","_links":{"self":{"href":"https://api.github.com/repos/theQRL/integration_tests/pulls/comments/155243405"},"html":{"href":"https://github.com/theQRL/integration_tests/pull/4#discussion_r155243405"},"pull_request":{"href":"https://api.github.com/repos/theQRL/integration_tests/pulls/4"}}},"pull_request":{"url":"https://api.github.com/repos/theQRL/integration_tests/pulls/4","id":156734164,"html_url":"https://github.com/theQRL/integration_tests/pull/4","diff_url":"https://github.com/theQRL/integration_tests/pull/4.diff","patch_url":"https://github.com/theQRL/integration_tests/pull/4.patch","issue_url":"https://api.github.com/repos/theQRL/integration_tests/issues/4","number":4,"state":"open","locked":false,"title":"Integration Test that sends QRL between node_1 and node_2","user":{"login":"randomshinichi","id":9956122,"avatar_url":"https://avatars3.githubusercontent.com/u/9956122?v=4","gravatar_id":"","url":"https://api.github.com/users/randomshinichi","html_url":"https://github.com/randomshinichi","followers_url":"https://api.github.com/users/randomshinichi/followers","following_url":"https://api.github.com/users/randomshinichi/following{/other_user}","gists_url":"https://api.github.com/users/randomshinichi/gists{/gist_id}","starred_url":"https://api.github.com/users/randomshinichi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/randomshinichi/subscriptions","organizations_url":"https://api.github.com/users/randomshinichi/orgs","repos_url":"https://api.github.com/users/randomshinichi/repos","events_url":"https://api.github.com/users/randomshinichi/events{/privacy}","received_events_url":"https://api.github.com/users/randomshinichi/received_events","type":"User","site_admin":false},"body":"Interestingly enough, the sending address gets debited 9 QRL, not 10. I'm not sure if this has to do with the fee calculation (sent with amount=10  fee=1).\r\n\r\nFurther improvements:\r\nask other nodes what are the new balances of A and B\r\nTravis doesn't run this integration test automatically.\r\n","created_at":"2017-12-06T13:50:48Z","updated_at":"2017-12-06T14:27:00Z","closed_at":null,"merged_at":null,"merge_commit_sha":"dd6acdd03aeb9c22ba72194dc580197b07965254","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/theQRL/integration_tests/pulls/4/commits","review_comments_url":"https://api.github.com/repos/theQRL/integration_tests/pulls/4/comments","review_comment_url":"https://api.github.com/repos/theQRL/integration_tests/pulls/comments{/number}","comments_url":"https://api.github.com/repos/theQRL/integration_tests/issues/4/comments","statuses_url":"https://api.github.com/repos/theQRL/integration_tests/statuses/a203e0ce8c711bec6984edc94fa2b1f7b1b871d0","head":{"label":"randomshinichi:sendqrl","ref":"sendqrl","sha":"a203e0ce8c711bec6984edc94fa2b1f7b1b871d0","user":{"login":"randomshinichi","id":9956122,"avatar_url":"https://avatars3.githubusercontent.com/u/9956122?v=4","gravatar_id":"","url":"https://api.github.com/users/randomshinichi","html_url":"https://github.com/randomshinichi","followers_url":"https://api.github.com/users/randomshinichi/followers","following_url":"https://api.github.com/users/randomshinichi/following{/other_user}","gists_url":"https://api.github.com/users/randomshinichi/gists{/gist_id}","starred_url":"https://api.github.com/users/randomshinichi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/randomshinichi/subscriptions","organizations_url":"https://api.github.com/users/randomshinichi/orgs","repos_url":"https://api.github.com/users/randomshinichi/repos","events_url":"https://api.github.com/users/randomshinichi/events{/privacy}","received_events_url":"https://api.github.com/users/randomshinichi/received_events","type":"User","site_admin":false},"repo":{"id":112334038,"name":"integration_tests","full_name":"randomshinichi/integration_tests","owner":{"login":"randomshinichi","id":9956122,"avatar_url":"https://avatars3.githubusercontent.com/u/9956122?v=4","gravatar_id":"","url":"https://api.github.com/users/randomshinichi","html_url":"https://github.com/randomshinichi","followers_url":"https://api.github.com/users/randomshinichi/followers","following_url":"https://api.github.com/users/randomshinichi/following{/other_user}","gists_url":"https://api.github.com/users/randomshinichi/gists{/gist_id}","starred_url":"https://api.github.com/users/randomshinichi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/randomshinichi/subscriptions","organizations_url":"https://api.github.com/users/randomshinichi/orgs","repos_url":"https://api.github.com/users/randomshinichi/repos","events_url":"https://api.github.com/users/randomshinichi/events{/privacy}","received_events_url":"https://api.github.com/users/randomshinichi/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/randomshinichi/integration_tests","description":"QRL Integration Tests","fork":true,"url":"https://api.github.com/repos/randomshinichi/integration_tests","forks_url":"https://api.github.com/repos/randomshinichi/integration_tests/forks","keys_url":"https://api.github.com/repos/randomshinichi/integration_tests/keys{/key_id}","collaborators_url":"https://api.github.com/repos/randomshinichi/integration_tests/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/randomshinichi/integration_tests/teams","hooks_url":"https://api.github.com/repos/randomshinichi/integration_tests/hooks","issue_events_url":"https://api.github.com/repos/randomshinichi/integration_tests/issues/events{/number}","events_url":"https://api.github.com/repos/randomshinichi/integration_tests/events","assignees_url":"https://api.github.com/repos/randomshinichi/integration_tests/assignees{/user}","branches_url":"https://api.github.com/repos/randomshinichi/integration_tests/branches{/branch}","tags_url":"https://api.github.com/repos/randomshinichi/integration_tests/tags","blobs_url":"https://api.github.com/repos/randomshinichi/integration_tests/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/randomshinichi/integration_tests/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/randomshinichi/integration_tests/git/refs{/sha}","trees_url":"https://api.github.com/repos/randomshinichi/integration_tests/git/trees{/sha}","statuses_url":"https://api.github.com/repos/randomshinichi/integration_tests/statuses/{sha}","languages_url":"https://api.github.com/repos/randomshinichi/integration_tests/languages","stargazers_url":"https://api.github.com/repos/randomshinichi/integration_tests/stargazers","contributors_url":"https://api.github.com/repos/randomshinichi/integration_tests/contributors","subscribers_url":"https://api.github.com/repos/randomshinichi/integration_tests/subscribers","subscription_url":"https://api.github.com/repos/randomshinichi/integration_tests/subscription","commits_url":"https://api.github.com/repos/randomshinichi/integration_tests/commits{/sha}","git_commits_url":"https://api.github.com/repos/randomshinichi/integration_tests/git/commits{/sha}","comments_url":"https://api.github.com/repos/randomshinichi/integration_tests/comments{/number}","issue_comment_url":"https://api.github.com/repos/randomshinichi/integration_tests/issues/comments{/number}","contents_url":"https://api.github.com/repos/randomshinichi/integration_tests/contents/{+path}","compare_url":"https://api.github.com/repos/randomshinichi/integration_tests/compare/{base}...{head}","merges_url":"https://api.github.com/repos/randomshinichi/integration_tests/merges","archive_url":"https://api.github.com/repos/randomshinichi/integration_tests/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/randomshinichi/integration_tests/downloads","issues_url":"https://api.github.com/repos/randomshinichi/integration_tests/issues{/number}","pulls_url":"https://api.github.com/repos/randomshinichi/integration_tests/pulls{/number}","milestones_url":"https://api.github.com/repos/randomshinichi/integration_tests/milestones{/number}","notifications_url":"https://api.github.com/repos/randomshinichi/integration_tests/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/randomshinichi/integration_tests/labels{/name}","releases_url":"https://api.github.com/repos/randomshinichi/integration_tests/releases{/id}","deployments_url":"https://api.github.com/repos/randomshinichi/integration_tests/deployments","created_at":"2017-11-28T12:42:54Z","updated_at":"2017-11-28T12:42:56Z","pushed_at":"2017-12-06T13:45:03Z","git_url":"git://github.com/randomshinichi/integration_tests.git","ssh_url":"git@github.com:randomshinichi/integration_tests.git","clone_url":"https://github.com/randomshinichi/integration_tests.git","svn_url":"https://github.com/randomshinichi/integration_tests","homepage":"","size":64,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":null,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"theQRL:master","ref":"master","sha":"9dfe94b9d908c10d4cdb39f4befc9c2cbd529692","user":{"login":"theQRL","id":27088483,"avatar_url":"https://avatars3.githubusercontent.com/u/27088483?v=4","gravatar_id":"","url":"https://api.github.com/users/theQRL","html_url":"https://github.com/theQRL","followers_url":"https://api.github.com/users/theQRL/followers","following_url":"https://api.github.com/users/theQRL/following{/other_user}","gists_url":"https://api.github.com/users/theQRL/gists{/gist_id}","starred_url":"https://api.github.com/users/theQRL/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/theQRL/subscriptions","organizations_url":"https://api.github.com/users/theQRL/orgs","repos_url":"https://api.github.com/users/theQRL/repos","events_url":"https://api.github.com/users/theQRL/events{/privacy}","received_events_url":"https://api.github.com/users/theQRL/received_events","type":"Organization","site_admin":false},"repo":{"id":110380981,"name":"integration_tests","full_name":"theQRL/integration_tests","owner":{"login":"theQRL","id":27088483,"avatar_url":"https://avatars3.githubusercontent.com/u/27088483?v=4","gravatar_id":"","url":"https://api.github.com/users/theQRL","html_url":"https://github.com/theQRL","followers_url":"https://api.github.com/users/theQRL/followers","following_url":"https://api.github.com/users/theQRL/following{/other_user}","gists_url":"https://api.github.com/users/theQRL/gists{/gist_id}","starred_url":"https://api.github.com/users/theQRL/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/theQRL/subscriptions","organizations_url":"https://api.github.com/users/theQRL/orgs","repos_url":"https://api.github.com/users/theQRL/repos","events_url":"https://api.github.com/users/theQRL/events{/privacy}","received_events_url":"https://api.github.com/users/theQRL/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/theQRL/integration_tests","description":"QRL Integration Tests","fork":false,"url":"https://api.github.com/repos/theQRL/integration_tests","forks_url":"https://api.github.com/repos/theQRL/integration_tests/forks","keys_url":"https://api.github.com/repos/theQRL/integration_tests/keys{/key_id}","collaborators_url":"https://api.github.com/repos/theQRL/integration_tests/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/theQRL/integration_tests/teams","hooks_url":"https://api.github.com/repos/theQRL/integration_tests/hooks","issue_events_url":"https://api.github.com/repos/theQRL/integration_tests/issues/events{/number}","events_url":"https://api.github.com/repos/theQRL/integration_tests/events","assignees_url":"https://api.github.com/repos/theQRL/integration_tests/assignees{/user}","branches_url":"https://api.github.com/repos/theQRL/integration_tests/branches{/branch}","tags_url":"https://api.github.com/repos/theQRL/integration_tests/tags","blobs_url":"https://api.github.com/repos/theQRL/integration_tests/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/theQRL/integration_tests/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/theQRL/integration_tests/git/refs{/sha}","trees_url":"https://api.github.com/repos/theQRL/integration_tests/git/trees{/sha}","statuses_url":"https://api.github.com/repos/theQRL/integration_tests/statuses/{sha}","languages_url":"https://api.github.com/repos/theQRL/integration_tests/languages","stargazers_url":"https://api.github.com/repos/theQRL/integration_tests/stargazers","contributors_url":"https://api.github.com/repos/theQRL/integration_tests/contributors","subscribers_url":"https://api.github.com/repos/theQRL/integration_tests/subscribers","subscription_url":"https://api.github.com/repos/theQRL/integration_tests/subscription","commits_url":"https://api.github.com/repos/theQRL/integration_tests/commits{/sha}","git_commits_url":"https://api.github.com/repos/theQRL/integration_tests/git/commits{/sha}","comments_url":"https://api.github.com/repos/theQRL/integration_tests/comments{/number}","issue_comment_url":"https://api.github.com/repos/theQRL/integration_tests/issues/comments{/number}","contents_url":"https://api.github.com/repos/theQRL/integration_tests/contents/{+path}","compare_url":"https://api.github.com/repos/theQRL/integration_tests/compare/{base}...{head}","merges_url":"https://api.github.com/repos/theQRL/integration_tests/merges","archive_url":"https://api.github.com/repos/theQRL/integration_tests/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/theQRL/integration_tests/downloads","issues_url":"https://api.github.com/repos/theQRL/integration_tests/issues{/number}","pulls_url":"https://api.github.com/repos/theQRL/integration_tests/pulls{/number}","milestones_url":"https://api.github.com/repos/theQRL/integration_tests/milestones{/number}","notifications_url":"https://api.github.com/repos/theQRL/integration_tests/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/theQRL/integration_tests/labels{/name}","releases_url":"https://api.github.com/repos/theQRL/integration_tests/releases{/id}","deployments_url":"https://api.github.com/repos/theQRL/integration_tests/deployments","created_at":"2017-11-11T21:16:43Z","updated_at":"2017-11-28T09:37:07Z","pushed_at":"2017-12-06T13:50:48Z","git_url":"git://github.com/theQRL/integration_tests.git","ssh_url":"git@github.com:theQRL/integration_tests.git","clone_url":"https://github.com/theQRL/integration_tests.git","svn_url":"https://github.com/theQRL/integration_tests","homepage":"","size":33,"stargazers_count":2,"watchers_count":2,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"open_issues_count":2,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit"},"forks":2,"open_issues":2,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/theQRL/integration_tests/pulls/4"},"html":{"href":"https://github.com/theQRL/integration_tests/pull/4"},"issue":{"href":"https://api.github.com/repos/theQRL/integration_tests/issues/4"},"comments":{"href":"https://api.github.com/repos/theQRL/integration_tests/issues/4/comments"},"review_comments":{"href":"https://api.github.com/repos/theQRL/integration_tests/pulls/4/comments"},"review_comment":{"href":"https://api.github.com/repos/theQRL/integration_tests/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/theQRL/integration_tests/pulls/4/commits"},"statuses":{"href":"https://api.github.com/repos/theQRL/integration_tests/statuses/a203e0ce8c711bec6984edc94fa2b1f7b1b871d0"}},"author_association":"NONE"}}
{"actor":{"display_login":"jleni"}}