{"action":"created","comment":{"url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/comments/28529232","id":28529232,"diff_hunk":"@@ -0,0 +1,265 @@\n+# Copyright 2015 Zi Shen Lim. All rights reserved.\n+#\n+# Licensed under the Apache License, Version 2.0 (the \"License\");\n+# you may not use this file except in compliance with the License.\n+# You may obtain a copy of the License at\n+#\n+#   http://www.apache.org/licenses/LICENSE-2.0\n+#\n+# Unless required by applicable law or agreed to in writing, software\n+# distributed under the License is distributed on an \"AS IS\" BASIS,\n+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+# See the License for the specific language governing permissions and\n+# limitations under the License.\n+\n+\"\"\"Runs SciMark2.\n+\n+Original documentation & code: http://math.nist.gov/scimark2/\n+\n+SciMark2 is a Java (and C) benchmark for scientific and numerical computing.\n+It measures several computational kernels and reports a composite score in\n+approximate Mflops (Millions of floating point operations per second).\n+\n+For convenience, we use the code base at https://github.com/zlim/scimark2,\n+which contains both the Java and C versions of SciMark2 in a single\n+repository.\n+\"\"\"\n+\n+import logging\n+import re\n+\n+from perfkitbenchmarker import regex_util\n+from perfkitbenchmarker import sample\n+from perfkitbenchmarker import vm_util\n+\n+SCIMARK2_URL = 'https://github.com/zlim/scimark2/archive/master.zip'\n+SCIMARK2_ZIP = '{0}/scimark2-master.zip'.format(vm_util.VM_TMP_DIR)\n+SCIMARK2_PATH = '{0}/scimark2-master'.format(vm_util.VM_TMP_DIR)\n+\n+BENCHMARK_INFO = {'name': 'scimark2',\n+                  'description': 'Runs SciMark2',\n+                  'scratch_disk': False,\n+                  'num_machines': 1}\n+\n+TEST_PARSE_RESULTS = False\n+\n+\n+def GetInfo():\n+  return BENCHMARK_INFO\n+\n+\n+def CheckPrerequisites():\n+  pass\n+\n+\n+def Prepare(benchmark_spec):\n+  \"\"\"Install SciMark2 on the target vm.\n+\n+  Args:\n+    benchmark_spec: The benchmark specification. Contains all data that is\n+        required to run the benchmark.\n+  \"\"\"\n+  vms = benchmark_spec.vms\n+  vm = vms[0]\n+  logging.info('Preparing SciMark2 on %s', vm)\n+  vm.Install('build_tools')\n+  vm.Install('wget')\n+  vm.InstallPackages('unzip')\n+  cmds = [\n+      'wget {0} -O {1}'.format(SCIMARK2_URL, SCIMARK2_ZIP),\n+      '(cd {0} && rm -rf {1} && unzip {2})'.format(\n+          vm_util.VM_TMP_DIR, SCIMARK2_PATH, SCIMARK2_ZIP),\n+      '(cd {0} && make build_c)'.format(SCIMARK2_PATH),\n+      '(cd {0} && make build_java)'.format(SCIMARK2_PATH)\n+  ]\n+  for cmd in cmds:\n+    vm.RemoteCommand(cmd, should_log=True)\n+\n+\n+def Run(benchmark_spec):\n+  \"\"\"Run SciMark2 on the target vm.\n+\n+  Args:\n+    benchmark_spec: The benchmark specification. Contains all data that is\n+        required to run the benchmark.\n+\n+  Returns:\n+    A list of sample.Sample objects.\n+  \"\"\"\n+  vms = benchmark_spec.vms\n+  vm = vms[0]\n+  logging.info('Running SciMark2 on %s', vm)\n+  samples = []\n+  if TEST_PARSE_RESULTS:\n+    samples.extend(TestParseResults())\n+    return samples\n+  cmds = [\n+      '(cd {0} && make c)'.format(SCIMARK2_PATH),\n+      '(cd {0} && make java)'.format(SCIMARK2_PATH)\n+  ]\n+  for cmd in cmds:\n+    stdout, _ = vm.RemoteCommand(cmd, should_log=True)\n+    samples.extend(ParseResults(stdout))\n+  return samples\n+\n+\n+def Cleanup(benchmark_spec):\n+  \"\"\"Cleanup SciMark2 on the target vm.\n+\n+  Args:\n+    benchmark_spec: The benchmark specification. Contains all data that is\n+        required to run the benchmark.\n+  \"\"\"\n+  pass\n+\n+\n+def ParseResults(results):\n+  \"\"\"Result parser for SciMark2.\n+\n+  Sample Results (C version):\n+    **                                                              **\n+    ** SciMark2 Numeric Benchmark, see http://math.nist.gov/scimark **\n+    ** for details. (Results can be submitted to pozo@nist.gov)     **\n+    **                                                              **\n+    Using       2.00 seconds min time per kenel.\n+    Composite Score:         1596.04\n+    FFT             Mflops:  1568.64    (N=1024)\n+    SOR             Mflops:  1039.98    (100 x 100)\n+    MonteCarlo:     Mflops:   497.64\n+    Sparse matmult  Mflops:  1974.39    (N=1000, nz=5000)\n+    LU              Mflops:  2899.56    (M=100, N=100)\n+\n+  Sample Results (Java version):\n+\n+    SciMark 2.0a\n+\n+    Composite Score: 1731.4467627163242\n+    FFT (1024): 996.9938397943672\n+    SOR (100x100):   1333.5328291027124\n+    Monte Carlo : 724.5221517116782\n+    Sparse matmult (N=1000, nz=5000): 1488.18620413327\n+    LU (100x100): 4113.998788839592\n+\n+    java.vendor: Oracle Corporation\n+    java.version: 1.7.0_75\n+    os.arch: amd64\n+    os.name: Linux\n+    os.version: 3.16.0-25-generic\n+\n+  Args:\n+    results: SciMark2 result.\n+\n+  Returns:\n+    A list of sample.Sample objects.\n+  \"\"\"\n+  RESULT_START_C = '** SciMark2 Numeric Benchmark'\n+  RESULT_START_JAVA = 'SciMark 2.0a'\n+\n+  SCORE_REGEX = r'\\n(Composite Score):\\s+(\\d+\\.\\d+)'\n+  RESULT_REGEX_C = r'\\n(.+?)\\s+Mflops:\\s+(\\d+\\.\\d+)(\\s+\\(.+?\\))?'\n+  RESULT_REGEX_JAVA = r'\\n([^:]+):\\s+(\\d+\\.\\d+)'\n+  PLATFORM_REGEX = r'\\n(\\w+\\.\\w+):\\s+(.*)'\n+\n+  def FindBenchStart(results, start_index=0):\n+    bench_version = 'Unknown'\n+    index = results.find(RESULT_START_C, start_index)\n+    if index != -1:\n+      bench_version = 'C'\n+    else:\n+      index = results.find(RESULT_START_JAVA, start_index)\n+      if index != -1:\n+        bench_version = 'Java'\n+    return index, bench_version\n+\n+  def ExtractPlatform(result, bench_version, clear=True):\n+    metadata = dict()\n+    if bench_version == 'C':\n+      pass\n+    elif bench_version == 'Java':\n+      matches = re.finditer(PLATFORM_REGEX, result)\n+      for m in matches:\n+        metadata.update({m.group(1): m.group(2)})\n+        if clear:\n+          result = result[:m.start()] + ' ' * (m.end() - m.start()) + \\\n+              result[m.end():]\n+    return metadata, result\n+\n+  def ExtractScore(result, bench_version, clear=True):\n+    m = re.search(SCORE_REGEX, result)\n+    label = m.group(1)\n+    score = float(m.group(2))\n+    if clear:\n+      result = result[:m.start()] + ' ' * (m.end() - m.start()) + \\\n+          result[m.end():]\n+    return score, label, result\n+\n+  def ExtractResults(result, bench_version):\n+    datapoints = []\n+    if bench_version == 'C':\n+      match = regex_util.ExtractAllMatches(RESULT_REGEX_C, result)\n+      for groups in match:\n+        metric = '{0} {1}'.format(groups[0].strip(), groups[2].strip())\n+        metric = metric.strip().strip(':')\n+        value = float(groups[1])\n+        datapoints.append((metric, value))\n+    elif bench_version == 'Java':\n+      match = regex_util.ExtractAllMatches(RESULT_REGEX_JAVA, result)\n+      for groups in match:\n+        datapoints.append((groups[0].strip(), float(groups[1])))\n+    return datapoints\n+\n+  samples = []\n+  start_index, bench_version = FindBenchStart(results)\n+  while start_index != -1:\n+    next_start, next_bench = FindBenchStart(results, start_index + 1)\n+    result = results[start_index:next_start]\n+\n+    metadata = {'bench_version': bench_version}\n+\n+    platform_metadata, result = ExtractPlatform(result, bench_version)\n+    metadata.update(platform_metadata)\n+\n+    score, label, result = ExtractScore(result, bench_version)\n+    samples.append(sample.Sample(label, score, 'Mflops', metadata))\n+\n+    datapoints = ExtractResults(result, bench_version)\n+    for metric, value in datapoints:\n+      samples.append(sample.Sample(metric, value, 'Mflops', metadata))\n+\n+    start_index, bench_version = next_start, next_bench\n+\n+  return samples\n+\n+\n+def TestParseResults():","path":"perfkitbenchmarker/benchmarks/scimark2_benchmark.py","position":234,"original_position":234,"commit_id":"2e9d471dce11da1c8afec2b8f7005a764c6214c2","original_commit_id":"2e9d471dce11da1c8afec2b8f7005a764c6214c2","user":{"login":"voellm","id":5758832,"avatar_url":"https://avatars.githubusercontent.com/u/5758832?v=3","gravatar_id":"","url":"https://api.github.com/users/voellm","html_url":"https://github.com/voellm","followers_url":"https://api.github.com/users/voellm/followers","following_url":"https://api.github.com/users/voellm/following{/other_user}","gists_url":"https://api.github.com/users/voellm/gists{/gist_id}","starred_url":"https://api.github.com/users/voellm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/voellm/subscriptions","organizations_url":"https://api.github.com/users/voellm/orgs","repos_url":"https://api.github.com/users/voellm/repos","events_url":"https://api.github.com/users/voellm/events{/privacy}","received_events_url":"https://api.github.com/users/voellm/received_events","type":"User","site_admin":false},"body":"Please move the test to tests directory.  it should be its own file and then will be included in the unit tests there.","created_at":"2015-04-16T17:08:46Z","updated_at":"2015-04-16T17:08:46Z","html_url":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker/pull/207#discussion_r28529232","pull_request_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/207","_links":{"self":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/comments/28529232"},"html":{"href":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker/pull/207#discussion_r28529232"},"pull_request":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/207"}}},"pull_request":{"url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/207","id":32730498,"html_url":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker/pull/207","diff_url":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker/pull/207.diff","patch_url":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker/pull/207.patch","issue_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues/207","number":207,"state":"open","locked":false,"title":"Add SciMark2 benchmark (both Java and C versions)","user":{"login":"zlim","id":748121,"avatar_url":"https://avatars.githubusercontent.com/u/748121?v=3","gravatar_id":"","url":"https://api.github.com/users/zlim","html_url":"https://github.com/zlim","followers_url":"https://api.github.com/users/zlim/followers","following_url":"https://api.github.com/users/zlim/following{/other_user}","gists_url":"https://api.github.com/users/zlim/gists{/gist_id}","starred_url":"https://api.github.com/users/zlim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zlim/subscriptions","organizations_url":"https://api.github.com/users/zlim/orgs","repos_url":"https://api.github.com/users/zlim/repos","events_url":"https://api.github.com/users/zlim/events{/privacy}","received_events_url":"https://api.github.com/users/zlim/received_events","type":"User","site_admin":false},"body":"This addresses Issue #23.","created_at":"2015-04-07T03:19:03Z","updated_at":"2015-04-16T17:08:46Z","closed_at":null,"merged_at":null,"merge_commit_sha":"63b0b25f9df3c344a2a3c3ccb29e26ee6d4827b1","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/207/commits","review_comments_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/207/comments","review_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/comments{/number}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues/207/comments","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/statuses/2e9d471dce11da1c8afec2b8f7005a764c6214c2","head":{"label":"zlim:scimark2","ref":"scimark2","sha":"2e9d471dce11da1c8afec2b8f7005a764c6214c2","user":{"login":"zlim","id":748121,"avatar_url":"https://avatars.githubusercontent.com/u/748121?v=3","gravatar_id":"","url":"https://api.github.com/users/zlim","html_url":"https://github.com/zlim","followers_url":"https://api.github.com/users/zlim/followers","following_url":"https://api.github.com/users/zlim/following{/other_user}","gists_url":"https://api.github.com/users/zlim/gists{/gist_id}","starred_url":"https://api.github.com/users/zlim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zlim/subscriptions","organizations_url":"https://api.github.com/users/zlim/orgs","repos_url":"https://api.github.com/users/zlim/repos","events_url":"https://api.github.com/users/zlim/events{/privacy}","received_events_url":"https://api.github.com/users/zlim/received_events","type":"User","site_admin":false},"repo":{"id":33518860,"name":"PerfKitBenchmarker","full_name":"zlim/PerfKitBenchmarker","owner":{"login":"zlim","id":748121,"avatar_url":"https://avatars.githubusercontent.com/u/748121?v=3","gravatar_id":"","url":"https://api.github.com/users/zlim","html_url":"https://github.com/zlim","followers_url":"https://api.github.com/users/zlim/followers","following_url":"https://api.github.com/users/zlim/following{/other_user}","gists_url":"https://api.github.com/users/zlim/gists{/gist_id}","starred_url":"https://api.github.com/users/zlim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zlim/subscriptions","organizations_url":"https://api.github.com/users/zlim/orgs","repos_url":"https://api.github.com/users/zlim/repos","events_url":"https://api.github.com/users/zlim/events{/privacy}","received_events_url":"https://api.github.com/users/zlim/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/zlim/PerfKitBenchmarker","description":"Perfkit Benchmarker contains set of benchmarks to measure and compare cloud offerings. The benchmarks are not tuned (i.e. use defaults) to reflect what most users will see. PerfKit Benchmarker is licensed under the Apache 2 license terms. Please make sure to read, understand and agree to the terms of the LICENSE and CONTRIBUTING files before proceeding.","fork":true,"url":"https://api.github.com/repos/zlim/PerfKitBenchmarker","forks_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/forks","keys_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/teams","hooks_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/hooks","issue_events_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/issues/events{/number}","events_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/events","assignees_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/assignees{/user}","branches_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/branches{/branch}","tags_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/tags","blobs_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/git/refs{/sha}","trees_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/statuses/{sha}","languages_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/languages","stargazers_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/stargazers","contributors_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/contributors","subscribers_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/subscribers","subscription_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/subscription","commits_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/commits{/sha}","git_commits_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/git/commits{/sha}","comments_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/comments{/number}","issue_comment_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/issues/comments{/number}","contents_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/contents/{+path}","compare_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/merges","archive_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/downloads","issues_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/issues{/number}","pulls_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/pulls{/number}","milestones_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/milestones{/number}","notifications_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/labels{/name}","releases_url":"https://api.github.com/repos/zlim/PerfKitBenchmarker/releases{/id}","created_at":"2015-04-07T03:03:38Z","updated_at":"2015-04-07T03:03:38Z","pushed_at":"2015-04-07T03:18:53Z","git_url":"git://github.com/zlim/PerfKitBenchmarker.git","ssh_url":"git@github.com:zlim/PerfKitBenchmarker.git","clone_url":"https://github.com/zlim/PerfKitBenchmarker.git","svn_url":"https://github.com/zlim/PerfKitBenchmarker","homepage":"","size":1431,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"GoogleCloudPlatform:dev","ref":"dev","sha":"a31338b932e49b91cce1d5bca023afef55174f6b","user":{"login":"GoogleCloudPlatform","id":2810941,"avatar_url":"https://avatars.githubusercontent.com/u/2810941?v=3","gravatar_id":"","url":"https://api.github.com/users/GoogleCloudPlatform","html_url":"https://github.com/GoogleCloudPlatform","followers_url":"https://api.github.com/users/GoogleCloudPlatform/followers","following_url":"https://api.github.com/users/GoogleCloudPlatform/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCloudPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCloudPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCloudPlatform/subscriptions","organizations_url":"https://api.github.com/users/GoogleCloudPlatform/orgs","repos_url":"https://api.github.com/users/GoogleCloudPlatform/repos","events_url":"https://api.github.com/users/GoogleCloudPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCloudPlatform/received_events","type":"Organization","site_admin":false},"repo":{"id":21950910,"name":"PerfKitBenchmarker","full_name":"GoogleCloudPlatform/PerfKitBenchmarker","owner":{"login":"GoogleCloudPlatform","id":2810941,"avatar_url":"https://avatars.githubusercontent.com/u/2810941?v=3","gravatar_id":"","url":"https://api.github.com/users/GoogleCloudPlatform","html_url":"https://github.com/GoogleCloudPlatform","followers_url":"https://api.github.com/users/GoogleCloudPlatform/followers","following_url":"https://api.github.com/users/GoogleCloudPlatform/following{/other_user}","gists_url":"https://api.github.com/users/GoogleCloudPlatform/gists{/gist_id}","starred_url":"https://api.github.com/users/GoogleCloudPlatform/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/GoogleCloudPlatform/subscriptions","organizations_url":"https://api.github.com/users/GoogleCloudPlatform/orgs","repos_url":"https://api.github.com/users/GoogleCloudPlatform/repos","events_url":"https://api.github.com/users/GoogleCloudPlatform/events{/privacy}","received_events_url":"https://api.github.com/users/GoogleCloudPlatform/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker","description":"Perfkit Benchmarker contains set of benchmarks to measure and compare cloud offerings. The benchmarks are not tuned (i.e. use defaults) to reflect what most users will see. PerfKit Benchmarker is licensed under the Apache 2 license terms. Please make sure to read, understand and agree to the terms of the LICENSE and CONTRIBUTING files before proceeding.","fork":false,"url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker","forks_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/forks","keys_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/keys{/key_id}","collaborators_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/teams","hooks_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/hooks","issue_events_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues/events{/number}","events_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/events","assignees_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/assignees{/user}","branches_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/branches{/branch}","tags_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/tags","blobs_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/git/refs{/sha}","trees_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/git/trees{/sha}","statuses_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/statuses/{sha}","languages_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/languages","stargazers_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/stargazers","contributors_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/contributors","subscribers_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/subscribers","subscription_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/subscription","commits_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/commits{/sha}","git_commits_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/git/commits{/sha}","comments_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/comments{/number}","issue_comment_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues/comments{/number}","contents_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/contents/{+path}","compare_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/compare/{base}...{head}","merges_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/merges","archive_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/downloads","issues_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues{/number}","pulls_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls{/number}","milestones_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/milestones{/number}","notifications_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/labels{/name}","releases_url":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/releases{/id}","created_at":"2014-07-17T17:23:26Z","updated_at":"2015-04-13T23:00:21Z","pushed_at":"2015-04-16T16:54:28Z","git_url":"git://github.com/GoogleCloudPlatform/PerfKitBenchmarker.git","ssh_url":"git@github.com:GoogleCloudPlatform/PerfKitBenchmarker.git","clone_url":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker.git","svn_url":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker","homepage":"","size":150503,"stargazers_count":427,"watchers_count":427,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":45,"mirror_url":null,"open_issues_count":63,"forks":45,"open_issues":63,"watchers":427,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/207"},"html":{"href":"https://github.com/GoogleCloudPlatform/PerfKitBenchmarker/pull/207"},"issue":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues/207"},"comments":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/issues/207/comments"},"review_comments":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/207/comments"},"review_comment":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/pulls/207/commits"},"statuses":{"href":"https://api.github.com/repos/GoogleCloudPlatform/PerfKitBenchmarker/statuses/2e9d471dce11da1c8afec2b8f7005a764c6214c2"}}}}