Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1903)

Unified Diff: testing/legion/examples/hello_world/controller_test.py

Issue 1124763003: Update from https://crrev.com/327068 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: update nacl, buildtools, fix display_change_notifier_unittest Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: testing/legion/examples/hello_world/controller_test.py
diff --git a/testing/legion/examples/hello_world/controller_test.py b/testing/legion/examples/hello_world/controller_test.py
index 37afcef6fda718ee3da73d6ca210af95d19dfd99..8253e9eb362c27b477dd0595bad1e388800adc49 100755
--- a/testing/legion/examples/hello_world/controller_test.py
+++ b/testing/legion/examples/hello_world/controller_test.py
@@ -9,74 +9,69 @@ This module runs on the host machine and is responsible for creating 2
task machines, waiting for them, and running RPC calls on them.
"""
-# Map the legion directory so we can import the host controller.
-import sys
-sys.path.append('../../')
-
import argparse
import logging
+import os
+import sys
import time
-import test_controller
+# Map the testing directory so we can import legion.legion_test.
+TESTING_DIR = os.path.join(
+ os.path.dirname(os.path.abspath(__file__)),
+ '..', '..', '..', '..', 'testing')
+sys.path.append(TESTING_DIR)
+from legion import legion_test_case
-class ExampleTestController(test_controller.TestController):
- """A simple example controller for a test."""
- def __init__(self):
- super(ExampleTestController, self).__init__()
- self.task1 = None
- self.task2 = None
-
- def CreateTask(self, isolated_hash):
- """Create a task object and set the proper values."""
- task = self.CreateNewTask(
- isolated_hash=isolated_hash,
- dimensions={'os': 'Ubuntu-14.04', 'pool': 'Legion'}, priority=200,
- idle_timeout_secs=90, connection_timeout_secs=90,
- verbosity=logging.INFO,
- run_id=1)
- task.Create()
- return task
-
- def SetUp(self):
- """Create the task machines and wait until they connect.
+class ExampleTestController(legion_test_case.TestCase):
+ """A simple example controller for a test."""
- In this call the actual creation of the task machines is done in parallel
- by the system. The WaitForConnect calls are performed in series but will
- return as soon as the tasks connect.
- """
+ @classmethod
+ def CreateTestTask(cls):
+ """Create a new task."""
parser = argparse.ArgumentParser()
parser.add_argument('--task-hash')
+ parser.add_argument('--os', default='Ubuntu-14.04')
args, _ = parser.parse_known_args()
- self.task1 = self.CreateTask(args.task_hash)
- self.task2 = self.CreateTask(args.task_hash)
- self.task1.WaitForConnection()
- self.task2.WaitForConnection()
-
- def RunTest(self):
- """Main method to run the test code."""
- self.CallEcho(self.task1)
- self.CallEcho(self.task2)
- self.CallTaskTest(self.task1)
- self.CallTaskTest(self.task2)
-
- def CallEcho(self, task):
- """Call rpc.Echo on a task."""
- logging.info('Calling Echo on %s', task.name)
- logging.info(task.rpc.Echo(task.name))
+ task = cls.CreateTask(
+ isolated_hash=args.task_hash,
+ dimensions={'os': args.os},
+ idle_timeout_secs=90,
+ connection_timeout_secs=90,
+ verbosity=logging.DEBUG)
+ task.Create()
+ return task
- def CallTaskTest(self, task):
- """Call task_test.py name on a task."""
- logging.info('Calling Subprocess to run "./task_test.py %s"', task.name)
- proc = task.rpc.subprocess.Popen(['./task_test.py', task.name])
- task.rpc.subprocess.Wait(proc)
- retcode = task.rpc.subprocess.GetReturncode(proc)
- stdout = task.rpc.subprocess.ReadStdout(proc)
- stderr = task.rpc.subprocess.ReadStderr(proc)
- logging.info('retcode: %s, stdout: %s, stderr: %s', retcode, stdout, stderr)
+ @classmethod
+ def setUpClass(cls):
+ """Creates the task machines and waits until they connect."""
+ cls.task1 = cls.CreateTestTask()
+ cls.task2 = cls.CreateTestTask()
+ cls.task1.WaitForConnection()
+ cls.task2.WaitForConnection()
+
+ def testCallEcho(self):
+ """Tests rpc.Echo on a task."""
+ logging.info('Calling Echo on %s', self.task2.name)
+ self.assertEqual(self.task2.rpc.Echo('foo'), 'echo foo')
+
+ def testLaunchTaskBinary(self):
+ """Call task_test.py 'name' on the tasks."""
+ self.VerifyTaskBinaryLaunched(self.task1)
+ self.VerifyTaskBinaryLaunched(self.task2)
+
+ def VerifyTaskBinaryLaunched(self, task):
+ logging.info(
+ 'Calling Process to run "./task_test.py %s"', task.name)
+ proc = task.Process(['./task_test.py', task.name])
+ proc.Wait()
+ self.assertEqual(proc.GetReturncode(), 0)
+ self.assertIn(task.name, proc.ReadStdout())
+ self.assertEquals(proc.ReadStderr(), '')
+ proc.Delete()
if __name__ == '__main__':
- ExampleTestController().RunController()
+ legion_test_case.main()

Powered by Google App Engine
This is Rietveld 408576698