Add wrapper script for computing n-grams from SKPs on Cluster Telemetry
authorborenet <borenet@google.com>
Tue, 30 Jun 2015 17:24:03 +0000 (10:24 -0700)
committerCommit bot <commit-bot@chromium.org>
Tue, 30 Jun 2015 17:24:03 +0000 (10:24 -0700)
Add --n argument

BUG=skia:3840

Review URL: https://codereview.chromium.org/1216073007

tools/lua/find_ngrams_on_ct [new file with mode: 0755]
tools/lua/ngrams.lua

diff --git a/tools/lua/find_ngrams_on_ct b/tools/lua/find_ngrams_on_ct
new file mode 100755 (executable)
index 0000000..be3e4c0
--- /dev/null
@@ -0,0 +1,61 @@
+#!/usr/bin/env python
+
+
+"""Run Cluster Telemetry to compute n-grams from SKPs."""
+
+
+import argparse
+import os
+import re
+import subprocess
+import sys
+import tempfile
+
+
+NGRAMS_LUA_SUBSTITUTION_STR = '-- CHANGEME\nlocal n = \d+\n-- CHANGEME'
+SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
+
+
+def main():
+  # Parse arguments.
+  parser = argparse.ArgumentParser(
+      description='Run Cluster Telemetry to compute n-grams from SKPs.')
+  parser.add_argument('--n', help='Compute n-grams with this integer as N',
+                      required=True)
+  args, extra_args = parser.parse_known_args()
+
+  # Read the n-gram Lua script.
+  script_path = os.path.join(SCRIPT_DIR, 'ngrams.lua')
+  with open(script_path) as f:
+    script_contents = f.read()
+
+  # Replace the default value of n with the value specified by the user.
+  new_contents, subd = re.subn(NGRAMS_LUA_SUBSTITUTION_STR,
+                               'local n = %s' % args.n, script_contents, 1)
+  if subd != 1:
+    raise Exception('Unable to replace N in %s; expected to find:\n%s' % (
+                    script_path, sub))
+
+  # Write the new script contents to a temporary file.
+  tmp_script = tempfile.NamedTemporaryFile(delete=False)
+  try:
+    tmp_script.write(new_contents)
+    tmp_script.close()
+
+    # Run trigger_ct_lua with the new script, forwarding the rest of the
+    # passed-in arguments to the script.
+    trigger_ct_lua = os.path.join(SCRIPT_DIR, 'trigger_ct_lua')
+    cmd = ['python', trigger_ct_lua,
+           '--script', tmp_script.name,
+           '--aggregator', os.path.join(SCRIPT_DIR, 'ngrams_aggregate.lua')]
+    cmd.extend(extra_args)
+    try:
+      subprocess.check_call(cmd)
+    except subprocess.CalledProcessError:
+      exit(1)
+  finally:
+    os.remove(tmp_script.name)
+
+
+if __name__ == '__main__':
+  main()
index ddbbc9b..fee6b90 100644 (file)
@@ -11,7 +11,9 @@
 -- box on the same page.
 
 -- Change n as desired.
+-- CHANGEME
 local n = 3
+-- CHANGEME
 
 -- This algorithm uses a list-of-lists for each SKP. For API call, append a
 -- list containing just the verb to the master list. Then, backtrack over the