{"action":"closed","number":61,"pull_request":{"url":"https://api.github.com/repos/hyperledger/caliper/pulls/61","id":186477629,"html_url":"https://github.com/hyperledger/caliper/pull/61","diff_url":"https://github.com/hyperledger/caliper/pull/61.diff","patch_url":"https://github.com/hyperledger/caliper/pull/61.patch","issue_url":"https://api.github.com/repos/hyperledger/caliper/issues/61","number":61,"state":"closed","locked":false,"title":"Add rate controllers and related extensions, update docs","user":{"login":"aklenik","id":10832624,"avatar_url":"https://avatars2.githubusercontent.com/u/10832624?v=4","gravatar_id":"","url":"https://api.github.com/users/aklenik","html_url":"https://github.com/aklenik","followers_url":"https://api.github.com/users/aklenik/followers","following_url":"https://api.github.com/users/aklenik/following{/other_user}","gists_url":"https://api.github.com/users/aklenik/gists{/gist_id}","starred_url":"https://api.github.com/users/aklenik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aklenik/subscriptions","organizations_url":"https://api.github.com/users/aklenik/orgs","repos_url":"https://api.github.com/users/aklenik/repos","events_url":"https://api.github.com/users/aklenik/events{/privacy}","received_events_url":"https://api.github.com/users/aklenik/received_events","type":"User","site_admin":false},"body":"The aim of this PR is to pave the road for advanced workload modelling. Contributions include:\r\n\r\n* Added `end` method to the rate controller proxy to signal the end of a round (in a backward compatible/optional way).\r\n* Modified round execution workflow to call this `end` method.\r\n* Added a composite rate controller implementation.\r\n* Added a zero rate controller implementation.\r\n* Extended the rate controller documentation.\r\n* Added a sample configuration to demonstrate the usage of the new controllers.\r\n* Propagate client index to _local_ clients.\r\n\r\nSigned-off-by: Attila Klenik <a.klenik@gmail.com>","created_at":"2018-05-07T22:05:33Z","updated_at":"2018-05-08T06:40:55Z","closed_at":"2018-05-08T06:40:55Z","merged_at":"2018-05-08T06:40:55Z","merge_commit_sha":"994d7acd97f48491d8302ebd0e9b550a98e68643","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/hyperledger/caliper/pulls/61/commits","review_comments_url":"https://api.github.com/repos/hyperledger/caliper/pulls/61/comments","review_comment_url":"https://api.github.com/repos/hyperledger/caliper/pulls/comments{/number}","comments_url":"https://api.github.com/repos/hyperledger/caliper/issues/61/comments","statuses_url":"https://api.github.com/repos/hyperledger/caliper/statuses/ea4cd0b068881d9fb59a3194ee015a8c3b310038","head":{"label":"aklenik:rate-controllers","ref":"rate-controllers","sha":"ea4cd0b068881d9fb59a3194ee015a8c3b310038","user":{"login":"aklenik","id":10832624,"avatar_url":"https://avatars2.githubusercontent.com/u/10832624?v=4","gravatar_id":"","url":"https://api.github.com/users/aklenik","html_url":"https://github.com/aklenik","followers_url":"https://api.github.com/users/aklenik/followers","following_url":"https://api.github.com/users/aklenik/following{/other_user}","gists_url":"https://api.github.com/users/aklenik/gists{/gist_id}","starred_url":"https://api.github.com/users/aklenik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aklenik/subscriptions","organizations_url":"https://api.github.com/users/aklenik/orgs","repos_url":"https://api.github.com/users/aklenik/repos","events_url":"https://api.github.com/users/aklenik/events{/privacy}","received_events_url":"https://api.github.com/users/aklenik/received_events","type":"User","site_admin":false},"repo":{"id":132515890,"name":"caliper","full_name":"aklenik/caliper","owner":{"login":"aklenik","id":10832624,"avatar_url":"https://avatars2.githubusercontent.com/u/10832624?v=4","gravatar_id":"","url":"https://api.github.com/users/aklenik","html_url":"https://github.com/aklenik","followers_url":"https://api.github.com/users/aklenik/followers","following_url":"https://api.github.com/users/aklenik/following{/other_user}","gists_url":"https://api.github.com/users/aklenik/gists{/gist_id}","starred_url":"https://api.github.com/users/aklenik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aklenik/subscriptions","organizations_url":"https://api.github.com/users/aklenik/orgs","repos_url":"https://api.github.com/users/aklenik/repos","events_url":"https://api.github.com/users/aklenik/events{/privacy}","received_events_url":"https://api.github.com/users/aklenik/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/aklenik/caliper","description":" A blockchain benchmark framework to measure performance of multiple blockchain solutions","fork":true,"url":"https://api.github.com/repos/aklenik/caliper","forks_url":"https://api.github.com/repos/aklenik/caliper/forks","keys_url":"https://api.github.com/repos/aklenik/caliper/keys{/key_id}","collaborators_url":"https://api.github.com/repos/aklenik/caliper/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/aklenik/caliper/teams","hooks_url":"https://api.github.com/repos/aklenik/caliper/hooks","issue_events_url":"https://api.github.com/repos/aklenik/caliper/issues/events{/number}","events_url":"https://api.github.com/repos/aklenik/caliper/events","assignees_url":"https://api.github.com/repos/aklenik/caliper/assignees{/user}","branches_url":"https://api.github.com/repos/aklenik/caliper/branches{/branch}","tags_url":"https://api.github.com/repos/aklenik/caliper/tags","blobs_url":"https://api.github.com/repos/aklenik/caliper/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/aklenik/caliper/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/aklenik/caliper/git/refs{/sha}","trees_url":"https://api.github.com/repos/aklenik/caliper/git/trees{/sha}","statuses_url":"https://api.github.com/repos/aklenik/caliper/statuses/{sha}","languages_url":"https://api.github.com/repos/aklenik/caliper/languages","stargazers_url":"https://api.github.com/repos/aklenik/caliper/stargazers","contributors_url":"https://api.github.com/repos/aklenik/caliper/contributors","subscribers_url":"https://api.github.com/repos/aklenik/caliper/subscribers","subscription_url":"https://api.github.com/repos/aklenik/caliper/subscription","commits_url":"https://api.github.com/repos/aklenik/caliper/commits{/sha}","git_commits_url":"https://api.github.com/repos/aklenik/caliper/git/commits{/sha}","comments_url":"https://api.github.com/repos/aklenik/caliper/comments{/number}","issue_comment_url":"https://api.github.com/repos/aklenik/caliper/issues/comments{/number}","contents_url":"https://api.github.com/repos/aklenik/caliper/contents/{+path}","compare_url":"https://api.github.com/repos/aklenik/caliper/compare/{base}...{head}","merges_url":"https://api.github.com/repos/aklenik/caliper/merges","archive_url":"https://api.github.com/repos/aklenik/caliper/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/aklenik/caliper/downloads","issues_url":"https://api.github.com/repos/aklenik/caliper/issues{/number}","pulls_url":"https://api.github.com/repos/aklenik/caliper/pulls{/number}","milestones_url":"https://api.github.com/repos/aklenik/caliper/milestones{/number}","notifications_url":"https://api.github.com/repos/aklenik/caliper/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/aklenik/caliper/labels{/name}","releases_url":"https://api.github.com/repos/aklenik/caliper/releases{/id}","deployments_url":"https://api.github.com/repos/aklenik/caliper/deployments","created_at":"2018-05-07T20:59:39Z","updated_at":"2018-05-07T20:59:42Z","pushed_at":"2018-05-07T22:31:43Z","git_url":"git://github.com/aklenik/caliper.git","ssh_url":"git@github.com:aklenik/caliper.git","clone_url":"https://github.com/aklenik/caliper.git","svn_url":"https://github.com/aklenik/caliper","homepage":"","size":9578,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"hyperledger:master","ref":"master","sha":"c85855b2914f8a91f3975164c1f7d8bc47d63f75","user":{"login":"hyperledger","id":7657900,"avatar_url":"https://avatars2.githubusercontent.com/u/7657900?v=4","gravatar_id":"","url":"https://api.github.com/users/hyperledger","html_url":"https://github.com/hyperledger","followers_url":"https://api.github.com/users/hyperledger/followers","following_url":"https://api.github.com/users/hyperledger/following{/other_user}","gists_url":"https://api.github.com/users/hyperledger/gists{/gist_id}","starred_url":"https://api.github.com/users/hyperledger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hyperledger/subscriptions","organizations_url":"https://api.github.com/users/hyperledger/orgs","repos_url":"https://api.github.com/users/hyperledger/repos","events_url":"https://api.github.com/users/hyperledger/events{/privacy}","received_events_url":"https://api.github.com/users/hyperledger/received_events","type":"Organization","site_admin":false},"repo":{"id":125944747,"name":"caliper","full_name":"hyperledger/caliper","owner":{"login":"hyperledger","id":7657900,"avatar_url":"https://avatars2.githubusercontent.com/u/7657900?v=4","gravatar_id":"","url":"https://api.github.com/users/hyperledger","html_url":"https://github.com/hyperledger","followers_url":"https://api.github.com/users/hyperledger/followers","following_url":"https://api.github.com/users/hyperledger/following{/other_user}","gists_url":"https://api.github.com/users/hyperledger/gists{/gist_id}","starred_url":"https://api.github.com/users/hyperledger/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hyperledger/subscriptions","organizations_url":"https://api.github.com/users/hyperledger/orgs","repos_url":"https://api.github.com/users/hyperledger/repos","events_url":"https://api.github.com/users/hyperledger/events{/privacy}","received_events_url":"https://api.github.com/users/hyperledger/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/hyperledger/caliper","description":" A blockchain benchmark framework to measure performance of multiple blockchain solutions","fork":false,"url":"https://api.github.com/repos/hyperledger/caliper","forks_url":"https://api.github.com/repos/hyperledger/caliper/forks","keys_url":"https://api.github.com/repos/hyperledger/caliper/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hyperledger/caliper/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hyperledger/caliper/teams","hooks_url":"https://api.github.com/repos/hyperledger/caliper/hooks","issue_events_url":"https://api.github.com/repos/hyperledger/caliper/issues/events{/number}","events_url":"https://api.github.com/repos/hyperledger/caliper/events","assignees_url":"https://api.github.com/repos/hyperledger/caliper/assignees{/user}","branches_url":"https://api.github.com/repos/hyperledger/caliper/branches{/branch}","tags_url":"https://api.github.com/repos/hyperledger/caliper/tags","blobs_url":"https://api.github.com/repos/hyperledger/caliper/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hyperledger/caliper/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hyperledger/caliper/git/refs{/sha}","trees_url":"https://api.github.com/repos/hyperledger/caliper/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hyperledger/caliper/statuses/{sha}","languages_url":"https://api.github.com/repos/hyperledger/caliper/languages","stargazers_url":"https://api.github.com/repos/hyperledger/caliper/stargazers","contributors_url":"https://api.github.com/repos/hyperledger/caliper/contributors","subscribers_url":"https://api.github.com/repos/hyperledger/caliper/subscribers","subscription_url":"https://api.github.com/repos/hyperledger/caliper/subscription","commits_url":"https://api.github.com/repos/hyperledger/caliper/commits{/sha}","git_commits_url":"https://api.github.com/repos/hyperledger/caliper/git/commits{/sha}","comments_url":"https://api.github.com/repos/hyperledger/caliper/comments{/number}","issue_comment_url":"https://api.github.com/repos/hyperledger/caliper/issues/comments{/number}","contents_url":"https://api.github.com/repos/hyperledger/caliper/contents/{+path}","compare_url":"https://api.github.com/repos/hyperledger/caliper/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hyperledger/caliper/merges","archive_url":"https://api.github.com/repos/hyperledger/caliper/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hyperledger/caliper/downloads","issues_url":"https://api.github.com/repos/hyperledger/caliper/issues{/number}","pulls_url":"https://api.github.com/repos/hyperledger/caliper/pulls{/number}","milestones_url":"https://api.github.com/repos/hyperledger/caliper/milestones{/number}","notifications_url":"https://api.github.com/repos/hyperledger/caliper/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hyperledger/caliper/labels{/name}","releases_url":"https://api.github.com/repos/hyperledger/caliper/releases{/id}","deployments_url":"https://api.github.com/repos/hyperledger/caliper/deployments","created_at":"2018-03-20T01:46:34Z","updated_at":"2018-05-08T02:59:18Z","pushed_at":"2018-05-08T06:40:55Z","git_url":"git://github.com/hyperledger/caliper.git","ssh_url":"git@github.com:hyperledger/caliper.git","clone_url":"https://github.com/hyperledger/caliper.git","svn_url":"https://github.com/hyperledger/caliper","homepage":"","size":9570,"stargazers_count":64,"watchers_count":64,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":38,"mirror_url":null,"archived":false,"open_issues_count":14,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0"},"forks":38,"open_issues":14,"watchers":64,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/hyperledger/caliper/pulls/61"},"html":{"href":"https://github.com/hyperledger/caliper/pull/61"},"issue":{"href":"https://api.github.com/repos/hyperledger/caliper/issues/61"},"comments":{"href":"https://api.github.com/repos/hyperledger/caliper/issues/61/comments"},"review_comments":{"href":"https://api.github.com/repos/hyperledger/caliper/pulls/61/comments"},"review_comment":{"href":"https://api.github.com/repos/hyperledger/caliper/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/hyperledger/caliper/pulls/61/commits"},"statuses":{"href":"https://api.github.com/repos/hyperledger/caliper/statuses/ea4cd0b068881d9fb59a3194ee015a8c3b310038"}},"author_association":"CONTRIBUTOR","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"haojun","id":1271835,"avatar_url":"https://avatars0.githubusercontent.com/u/1271835?v=4","gravatar_id":"","url":"https://api.github.com/users/haojun","html_url":"https://github.com/haojun","followers_url":"https://api.github.com/users/haojun/followers","following_url":"https://api.github.com/users/haojun/following{/other_user}","gists_url":"https://api.github.com/users/haojun/gists{/gist_id}","starred_url":"https://api.github.com/users/haojun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haojun/subscriptions","organizations_url":"https://api.github.com/users/haojun/orgs","repos_url":"https://api.github.com/users/haojun/repos","events_url":"https://api.github.com/users/haojun/events{/privacy}","received_events_url":"https://api.github.com/users/haojun/received_events","type":"User","site_admin":false},"comments":1,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":553,"deletions":5,"changed_files":7}}
{"actor":{"display_login":"haojun"}}