aboutsummaryrefslogtreecommitdiffstats
path: root/monkeyrunner/scripts
diff options
context:
space:
mode:
authorBill Napier <napier@google.com>2010-10-18 00:00:20 -0700
committerBill Napier <napier@google.com>2010-10-18 13:54:38 -0700
commit6db57208c8fb964bba0bc6da098e8aac94ea6b93 (patch)
tree0e61f339dda319b881e2adccf24945c247a29777 /monkeyrunner/scripts
parent7564d1720b5505dde7a9a9a6ec000757a8e42cbf (diff)
downloadsdk-6db57208c8fb964bba0bc6da098e8aac94ea6b93.zip
sdk-6db57208c8fb964bba0bc6da098e8aac94ea6b93.tar.gz
sdk-6db57208c8fb964bba0bc6da098e8aac94ea6b93.tar.bz2
Initial cut at MonkeyRecorder.
MonkeyRecorder (and MonkeyPlayback) are a set of tools for using MonkeyRunner to record and playback actions. The current implementation is not very sophisticated, but it works. Please don't review yet. Needs a lot of style cleanup. Change-Id: Id300a27294b5dc13a842fade900e8b9916b8a17b
Diffstat (limited to 'monkeyrunner/scripts')
-rw-r--r--monkeyrunner/scripts/monkey_playback.py70
-rw-r--r--monkeyrunner/scripts/monkey_recorder.py20
2 files changed, 90 insertions, 0 deletions
diff --git a/monkeyrunner/scripts/monkey_playback.py b/monkeyrunner/scripts/monkey_playback.py
new file mode 100644
index 0000000..45d801a
--- /dev/null
+++ b/monkeyrunner/scripts/monkey_playback.py
@@ -0,0 +1,70 @@
+#!/usr/bin/env monkeyrunner
+# Copyright 2010, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import sys
+from com.android.monkeyrunner import MonkeyRunner
+
+# The format of the file we are parsing is very carfeully constructed.
+# Each line corresponds to a single command. The line is split into 2
+# parts with a | character. Text to the left of the pipe denotes
+# which command to run. The text to the right of the pipe is a python
+# dictionary (it can be evaled into existence) that specifies the
+# arguments for the command. In most cases, this directly maps to the
+# keyword argument dictionary that could be passed to the underlying
+# command.
+
+# Lookup table to map command strings to functions that implement that
+# command.
+CMD_MAP = {
+ 'TOUCH': lambda dev, arg: dev.touch(**arg),
+ 'DRAG': lambda dev, arg: dev.drag(**arg),
+ 'PRESS': lambda dev, arg: dev.press(**arg),
+ 'TYPE': lambda dev, arg: dev.type(**arg),
+ 'WAIT': lambda dev, arg: MonkeyRunner.sleep(**arg)
+ }
+
+# Process a single file for the specified device.
+def process_file(fp, device):
+ for line in fp:
+ (cmd, rest) = line.split('|')
+ try:
+ # Parse the pydict
+ rest = eval(rest)
+ except:
+ print 'unable to parse options'
+ continue
+
+ if cmd not in CMD_MAP:
+ print 'unknown command: ' + cmd
+ continue
+
+ CMD_MAP[cmd](device, rest)
+
+
+def main():
+ file = sys.argv[1]
+ fp = open(file, 'r')
+
+ device = MonkeyRunner.waitForConnection()
+
+ process_file(fp, device)
+ fp.close();
+
+
+if __name__ == '__main__':
+ main()
+
+
+
diff --git a/monkeyrunner/scripts/monkey_recorder.py b/monkeyrunner/scripts/monkey_recorder.py
new file mode 100644
index 0000000..29e6e50
--- /dev/null
+++ b/monkeyrunner/scripts/monkey_recorder.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env monkeyrunner
+# Copyright 2010, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from com.android.monkeyrunner import MonkeyRunner as mr
+from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder
+
+device = mr.waitForConnection()
+recorder.start(device)