{"action":"created","comment":{"url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/pulls/comments/74663588","id":74663588,"diff_hunk":"@@ -7,53 +7,78 @@ This code defines implementations of grinder worker threads meant to repeatedly\n It also includes the infrastructure to divide the total work described in the grinder properties file across all the workers in the distributed system.\n \n ##Architecture\n-The BF grinder system is designed to take a single properties file that lists the total amount\n-of requests to be generated by the system, and divide the total load across the number of\n-servers aka \"agents\" that are handling the load.  Each agent subdivides it's load across each of\n-it's worker threads.   Thus much of the initialization process is spent dividing up all the work.\n-\n-The TestRunner class in contrib/grinder/scripts/grinder.py is the interface to the \n-grinder itself and is how the grinder communicates with the BF grinder system.  The\n-TestRunner.__call__() method is invoked as many times as possible on each thread while\n-the grinder is running.\n+The BF grinder system is designed to take a single properties file that lists the total number of threads to be used to generate load, and allocate each of those threads to generate a certain kind of http request.\n \n The BF grinder code creates different types of threads to handle the different kinds of requests\n to be generated.  Currently the thread types are:\n \n-Ingest - create requests for the  \"/ingest/multi\" endpoint\n-Query - does single/multi plot and search requests\n-AnnotationsIngest - ingests to the \"events\" endpoint\n+* Ingest - create requests for the  \"/ingest/multi\" endpoint\n+* Query - does single/multi plot and search requests\n+* AnnotationsIngest - ingests to the \"events\" endpoint\n+* Various query threads:\n+  * SinglePlotQuery - send GET requests to `<tenant>/views/<metric>` with `from`, `to`, and `resolution` params\n+  * MultiPlotQuery - send POST requests to `<tenant>/views` with `from`, `to`, and `resolution` params\n+  * SearchQuery - send requests to `<tenant>/metrics/search`\n+  * EnumSearchQuery - send requests to `<tenant>/metrics/search` with `include_enum_values=true`\n+  * EnumSinglePlotQuery - send GET requests to `<tenant>/views/<metric>` with `from`, `to`, and `resolution` params\n+  * EnumMultiPlotQuery - send POST requests to `<tenant>/views` with `from`, `to`, and `resolution` params\n+  * AnnotationsQuery - send requests to `<tenant>/events/getEvents` with `from`, `until` params\n+\n+The `grinder.threads` property determines the number of threads started by each worker process.\n+How those threads are divided up between the different `*Thread` classes is determined by _weight_ properties.\n+A given thread type will be created for a number of threads proportional to the weight specified for that thread type divided by the total weight for all thread types.\n+\n+Each thread will continuously generate HTTP requests of the specified type for as long as Grinder is configured to run.\n+\n+### Properties that control operation\n+\n+Grinder-specific properties are discussed in more detail [here](http://grinder.sourceforge.net/g3/properties.html)\n+\n+* `grinder.runs` - The number of times the grinder script should be run. If `0`, then it will run indefinitely, until manually stopped. Default is `1`.\n+* `grinder.processes` - The number of worker processes started by each agent. Default is `1`.\n+* `grinder.threads` - The number of threads per worker process. Default is `1`.\n+* `[grinder.bf.]url` - The HTTP Url for ingestion-based traffic. Default is `http://localhost:19000`.\n+* `[grinder.bf.]query_url` - The HTTP Url for query-based traffic. Default is `http://localhost:20000`.\n+* `[grinder.bf.]max_multiplot_metrics` - Default is `10`.\n+* `[grinder.bf.]name_fmt` - Default is `org.example.metric.%d`.\n+\n+* `[grinder.bf.]ingest_weight` - Default is `15`.\n+* `[grinder.bf.]ingest_num_tenants` - Ingestion threads randomly generate a numerical tenant id in the range of `[0,ingest_num_tenants)`. Change this property to control how many different tenant id's are used when sending standard metrics to the service. Default is `4`.\n+* `[grinder.bf.]ingest_metrics_per_tenant` - Ingestion threads randomly generate a numerical metric name suffix in the range of `[0,ingest_metrics_per_tenant)`. Metric names will generally be of the form `org.example.metric.%d`, or whatever the `name_fmt` property is set to. Change this property to control how many different metrics will have data generated for them. Default is `15`.\n+* `[grinder.bf.]ingest_batch_size` - Ingestion threads will generate this many metrics in a single payload (HTTP request body). Default is `5`.\n+* `[grinder.bf.]ingest_delay_millis` - Configures delayed metrics. Default is `\"\"`, which doesn't produced any delayed metrics.\n+\n+* `[grinder.bf.]enum_weight` - Default is `15`.","path":"README.md","position":null,"original_position":57,"commit_id":"47c00166353b877bd408f4888cb6661148b27915","original_commit_id":"ebb2b8782afd75335cdaa3822690c7c740fff320","user":{"login":"izrik","id":1711679,"avatar_url":"https://avatars.githubusercontent.com/u/1711679?v=3","gravatar_id":"","url":"https://api.github.com/users/izrik","html_url":"https://github.com/izrik","followers_url":"https://api.github.com/users/izrik/followers","following_url":"https://api.github.com/users/izrik/following{/other_user}","gists_url":"https://api.github.com/users/izrik/gists{/gist_id}","starred_url":"https://api.github.com/users/izrik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/izrik/subscriptions","organizations_url":"https://api.github.com/users/izrik/orgs","repos_url":"https://api.github.com/users/izrik/repos","events_url":"https://api.github.com/users/izrik/events{/privacy}","received_events_url":"https://api.github.com/users/izrik/received_events","type":"User","site_admin":false},"body":"@shintasmith Done.","created_at":"2016-08-12T21:32:14Z","updated_at":"2016-08-12T21:32:14Z","html_url":"https://github.com/rackerlabs/cloudmetrics-perf-test-scripts/pull/1#discussion_r74663588","pull_request_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/pulls/1","_links":{"self":{"href":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/pulls/comments/74663588"},"html":{"href":"https://github.com/rackerlabs/cloudmetrics-perf-test-scripts/pull/1#discussion_r74663588"},"pull_request":{"href":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/pulls/1"}}},"pull_request":{"url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/pulls/1","id":80647290,"html_url":"https://github.com/rackerlabs/cloudmetrics-perf-test-scripts/pull/1","diff_url":"https://github.com/rackerlabs/cloudmetrics-perf-test-scripts/pull/1.diff","patch_url":"https://github.com/rackerlabs/cloudmetrics-perf-test-scripts/pull/1.patch","issue_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/issues/1","number":1,"state":"open","locked":false,"title":"Refactor scripts","user":{"login":"izrik","id":1711679,"avatar_url":"https://avatars.githubusercontent.com/u/1711679?v=3","gravatar_id":"","url":"https://api.github.com/users/izrik","html_url":"https://github.com/izrik","followers_url":"https://api.github.com/users/izrik/followers","following_url":"https://api.github.com/users/izrik/following{/other_user}","gists_url":"https://api.github.com/users/izrik/gists{/gist_id}","starred_url":"https://api.github.com/users/izrik/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/izrik/subscriptions","organizations_url":"https://api.github.com/users/izrik/orgs","repos_url":"https://api.github.com/users/izrik/repos","events_url":"https://api.github.com/users/izrik/events{/privacy}","received_events_url":"https://api.github.com/users/izrik/received_events","type":"User","site_admin":false},"body":"This PR is a major refactoring of the perf test scripts. One of the main changes is separation. Grinder-specific and jython-specific code and logic are restricted to certain modules. The main logic of the code (especially unit tests) can now be run under vanilla python (and PyCharm!), and get coverage numbers calculated.\r\n\r\nBefore, the agents and workers would divide up a set amount of work among the different worker processes and threads. This required a lot of up-front preparation of the data to be sent in the requests. The execution logic of this prep work was difficult to follow.\r\n\r\nWith this PR, the subclasses of `AbstractThread` now generate all data randomly, on demand. Data is no longer stored in the class; all operations are on the instances themselves. This clears up a lot of the execution logic.\r\n\r\nHowever, this loses us the ability to throttle the traffic to a certain level. That feature will be added back in with a future PR.\r\n\r\nThis PR also adds a number of helpful bash scripts for setting up dependencies and running the unit tests and scripts.\r\n\r\nStill TODO: throttling, more bash scripts, more docs, reporting","created_at":"2016-08-09T15:59:36Z","updated_at":"2016-08-12T21:32:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ae802d3d72018f7098864dbce5167c5babe24ad0","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/pulls/1/commits","review_comments_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/pulls/1/comments","review_comment_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/issues/1/comments","statuses_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/statuses/47c00166353b877bd408f4888cb6661148b27915","head":{"label":"rackerlabs:refactor-scripts","ref":"refactor-scripts","sha":"47c00166353b877bd408f4888cb6661148b27915","user":{"login":"rackerlabs","id":84293,"avatar_url":"https://avatars.githubusercontent.com/u/84293?v=3","gravatar_id":"","url":"https://api.github.com/users/rackerlabs","html_url":"https://github.com/rackerlabs","followers_url":"https://api.github.com/users/rackerlabs/followers","following_url":"https://api.github.com/users/rackerlabs/following{/other_user}","gists_url":"https://api.github.com/users/rackerlabs/gists{/gist_id}","starred_url":"https://api.github.com/users/rackerlabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rackerlabs/subscriptions","organizations_url":"https://api.github.com/users/rackerlabs/orgs","repos_url":"https://api.github.com/users/rackerlabs/repos","events_url":"https://api.github.com/users/rackerlabs/events{/privacy}","received_events_url":"https://api.github.com/users/rackerlabs/received_events","type":"Organization","site_admin":false},"repo":{"id":64854159,"name":"cloudmetrics-perf-test-scripts","full_name":"rackerlabs/cloudmetrics-perf-test-scripts","owner":{"login":"rackerlabs","id":84293,"avatar_url":"https://avatars.githubusercontent.com/u/84293?v=3","gravatar_id":"","url":"https://api.github.com/users/rackerlabs","html_url":"https://github.com/rackerlabs","followers_url":"https://api.github.com/users/rackerlabs/followers","following_url":"https://api.github.com/users/rackerlabs/following{/other_user}","gists_url":"https://api.github.com/users/rackerlabs/gists{/gist_id}","starred_url":"https://api.github.com/users/rackerlabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rackerlabs/subscriptions","organizations_url":"https://api.github.com/users/rackerlabs/orgs","repos_url":"https://api.github.com/users/rackerlabs/repos","events_url":"https://api.github.com/users/rackerlabs/events{/privacy}","received_events_url":"https://api.github.com/users/rackerlabs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rackerlabs/cloudmetrics-perf-test-scripts","description":"Grinder scripts for performance testing of Rackspace Metrics https://one.rackspace.com/display/cloudmetrics/Rackspace+Metrics","fork":false,"url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts","forks_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/forks","keys_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/teams","hooks_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/hooks","issue_events_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/issues/events{/number}","events_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/events","assignees_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/assignees{/user}","branches_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/branches{/branch}","tags_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/tags","blobs_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/git/refs{/sha}","trees_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/statuses/{sha}","languages_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/languages","stargazers_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/stargazers","contributors_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/contributors","subscribers_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/subscribers","subscription_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/subscription","commits_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/commits{/sha}","git_commits_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/git/commits{/sha}","comments_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/comments{/number}","issue_comment_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/issues/comments{/number}","contents_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/contents/{+path}","compare_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/merges","archive_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/downloads","issues_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/issues{/number}","pulls_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/pulls{/number}","milestones_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/milestones{/number}","notifications_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/labels{/name}","releases_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/releases{/id}","deployments_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/deployments","created_at":"2016-08-03T14:50:08Z","updated_at":"2016-08-10T21:32:35Z","pushed_at":"2016-08-12T21:32:08Z","git_url":"git://github.com/rackerlabs/cloudmetrics-perf-test-scripts.git","ssh_url":"git@github.com:rackerlabs/cloudmetrics-perf-test-scripts.git","clone_url":"https://github.com/rackerlabs/cloudmetrics-perf-test-scripts.git","svn_url":"https://github.com/rackerlabs/cloudmetrics-perf-test-scripts","homepage":null,"size":242,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"base":{"label":"rackerlabs:master","ref":"master","sha":"0a32f1ca776996ce3e5e001397d6d179f9a87a04","user":{"login":"rackerlabs","id":84293,"avatar_url":"https://avatars.githubusercontent.com/u/84293?v=3","gravatar_id":"","url":"https://api.github.com/users/rackerlabs","html_url":"https://github.com/rackerlabs","followers_url":"https://api.github.com/users/rackerlabs/followers","following_url":"https://api.github.com/users/rackerlabs/following{/other_user}","gists_url":"https://api.github.com/users/rackerlabs/gists{/gist_id}","starred_url":"https://api.github.com/users/rackerlabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rackerlabs/subscriptions","organizations_url":"https://api.github.com/users/rackerlabs/orgs","repos_url":"https://api.github.com/users/rackerlabs/repos","events_url":"https://api.github.com/users/rackerlabs/events{/privacy}","received_events_url":"https://api.github.com/users/rackerlabs/received_events","type":"Organization","site_admin":false},"repo":{"id":64854159,"name":"cloudmetrics-perf-test-scripts","full_name":"rackerlabs/cloudmetrics-perf-test-scripts","owner":{"login":"rackerlabs","id":84293,"avatar_url":"https://avatars.githubusercontent.com/u/84293?v=3","gravatar_id":"","url":"https://api.github.com/users/rackerlabs","html_url":"https://github.com/rackerlabs","followers_url":"https://api.github.com/users/rackerlabs/followers","following_url":"https://api.github.com/users/rackerlabs/following{/other_user}","gists_url":"https://api.github.com/users/rackerlabs/gists{/gist_id}","starred_url":"https://api.github.com/users/rackerlabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rackerlabs/subscriptions","organizations_url":"https://api.github.com/users/rackerlabs/orgs","repos_url":"https://api.github.com/users/rackerlabs/repos","events_url":"https://api.github.com/users/rackerlabs/events{/privacy}","received_events_url":"https://api.github.com/users/rackerlabs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/rackerlabs/cloudmetrics-perf-test-scripts","description":"Grinder scripts for performance testing of Rackspace Metrics https://one.rackspace.com/display/cloudmetrics/Rackspace+Metrics","fork":false,"url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts","forks_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/forks","keys_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/teams","hooks_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/hooks","issue_events_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/issues/events{/number}","events_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/events","assignees_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/assignees{/user}","branches_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/branches{/branch}","tags_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/tags","blobs_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/git/refs{/sha}","trees_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/statuses/{sha}","languages_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/languages","stargazers_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/stargazers","contributors_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/contributors","subscribers_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/subscribers","subscription_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/subscription","commits_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/commits{/sha}","git_commits_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/git/commits{/sha}","comments_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/comments{/number}","issue_comment_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/issues/comments{/number}","contents_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/contents/{+path}","compare_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/merges","archive_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/downloads","issues_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/issues{/number}","pulls_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/pulls{/number}","milestones_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/milestones{/number}","notifications_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/labels{/name}","releases_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/releases{/id}","deployments_url":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/deployments","created_at":"2016-08-03T14:50:08Z","updated_at":"2016-08-10T21:32:35Z","pushed_at":"2016-08-12T21:32:08Z","git_url":"git://github.com/rackerlabs/cloudmetrics-perf-test-scripts.git","ssh_url":"git@github.com:rackerlabs/cloudmetrics-perf-test-scripts.git","clone_url":"https://github.com/rackerlabs/cloudmetrics-perf-test-scripts.git","svn_url":"https://github.com/rackerlabs/cloudmetrics-perf-test-scripts","homepage":null,"size":242,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/pulls/1"},"html":{"href":"https://github.com/rackerlabs/cloudmetrics-perf-test-scripts/pull/1"},"issue":{"href":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/issues/1"},"comments":{"href":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/rackerlabs/cloudmetrics-perf-test-scripts/statuses/47c00166353b877bd408f4888cb6661148b27915"}}}}
{"actor":{"display_login":"izrik"}}