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

Unified Diff: testing/legion/examples/subprocess/subprocess_test.py

Issue 1108173002: Roll //build, //native_client, and a few more targets of opportunity. Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Test fix Created 5 years, 8 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
« no previous file with comments | « testing/legion/examples/hello_world/controller_test.py ('k') | testing/legion/legion.isolate » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: testing/legion/examples/subprocess/subprocess_test.py
diff --git a/testing/legion/examples/subprocess/subprocess_test.py b/testing/legion/examples/subprocess/subprocess_test.py
index 1a28ddd5dabdc536568bf50f4348294dbea14835..cea871a4051f9fb28b950ae461b50dc47573cdcf 100755
--- a/testing/legion/examples/subprocess/subprocess_test.py
+++ b/testing/legion/examples/subprocess/subprocess_test.py
@@ -5,85 +5,91 @@
"""A host test module demonstrating interacting with remote subprocesses."""
-# 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 xmlrpclib
-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):
- """An example controller using the remote subprocess functions."""
- def __init__(self):
- super(ExampleTestController, self).__init__()
- self.task = None
+class ExampleTestController(legion_test_case.TestCase):
+ """An example controller using the remote subprocess functions."""
- def SetUp(self):
+ @classmethod
+ def setUpClass(cls):
"""Creates the task machine and waits until it connects."""
parser = argparse.ArgumentParser()
parser.add_argument('--task-hash')
+ parser.add_argument('--os', default='Ubuntu-14.04')
args, _ = parser.parse_known_args()
- self.task = self.CreateNewTask(
+ cls.task = cls.CreateTask(
isolated_hash=args.task_hash,
- dimensions={'os': 'Ubuntu-14.04', 'pool': 'Chromoting'},
- idle_timeout_secs=90, connection_timeout_secs=90,
+ dimensions={'os': args.os},
+ idle_timeout_secs=90,
+ connection_timeout_secs=90,
verbosity=logging.DEBUG)
- self.task.Create()
- self.task.WaitForConnection()
-
- def RunTest(self):
- """Main method to run the test code."""
- self.TestLs()
- self.TestTerminate()
- self.TestMultipleProcesses()
+ cls.task.Create()
+ cls.task.WaitForConnection()
- def TestMultipleProcesses(self):
+ def testMultipleProcesses(self):
+ """Tests that processes can be run and controlled simultaneously."""
start = time.time()
+ logging.info('Starting "sleep 10" and "sleep 20"')
+ sleep10 = self.task.Process(['sleep', '10'])
+ sleep20 = self.task.Process(['sleep', '20'])
- sleep20 = self.task.rpc.subprocess.Process(['sleep', '20'])
- self.task.rpc.subprocess.Start(sleep20)
- sleep10 = self.task.rpc.subprocess.Process(['sleep', '10'])
- self.task.rpc.subprocess.Start(sleep10)
-
- self.task.rpc.subprocess.Wait(sleep10)
+ logging.info('Waiting for sleep 10 to finish and verifying timing')
+ sleep10.Wait()
elapsed = time.time() - start
- assert elapsed >= 10 and elapsed < 11
+ self.assertGreaterEqual(elapsed, 10)
+ self.assertLess(elapsed, 11)
- self.task.rpc.subprocess.Wait(sleep20)
+ logging.info('Waiting for sleep 20 to finish and verifying timing')
+ sleep20.Wait()
elapsed = time.time() - start
- assert elapsed >= 20
+ self.assertGreaterEqual(elapsed, 20)
- self.task.rpc.subprocess.Delete(sleep20)
- self.task.rpc.subprocess.Delete(sleep10)
+ sleep10.Delete()
+ sleep20.Delete()
- def TestTerminate(self):
+ def testTerminate(self):
+ """Tests that a process can be correctly terminated."""
start = time.time()
- proc = self.task.rpc.subprocess.Process(['sleep', '20'])
- self.task.rpc.subprocess.Start(proc)
- self.task.rpc.subprocess.Terminate(proc)
+
+ logging.info('Starting "sleep 20"')
+ sleep20 = self.task.Process(['sleep', '20'])
+ logging.info('Calling Terminate()')
+ sleep20.Terminate()
try:
- self.task.rpc.subprocess.Wait(proc)
+ logging.info('Trying to wait for sleep 20 to complete')
+ sleep20.Wait()
except xmlrpclib.Fault:
pass
finally:
- self.task.rpc.subprocess.Delete(proc)
- assert time.time() - start < 20
+ sleep20.Delete()
+ logging.info('Checking to make sure sleep 20 was actually terminated')
+ self.assertLess(time.time() - start, 20)
- def TestLs(self):
- proc = self.task.rpc.subprocess.Process(['ls'])
- self.task.rpc.subprocess.Start(proc)
- self.task.rpc.subprocess.Wait(proc)
- assert self.task.rpc.subprocess.GetReturncode(proc) == 0
- assert 'task.isolate' in self.task.rpc.subprocess.ReadStdout(proc)
- self.task.rpc.subprocess.Delete(proc)
+ def testLs(self):
+ """Tests that the returned results from a process are correct."""
+ logging.info('Calling "ls"')
+ ls = self.task.Process(['ls'])
+ logging.info('Trying to wait for ls to complete')
+ ls.Wait()
+ logging.info('Checking that ls completed and returned the correct results')
+ self.assertEqual(ls.GetReturncode(), 0)
+ self.assertIn('task.isolate', ls.ReadStdout())
if __name__ == '__main__':
- ExampleTestController().RunController()
+ legion_test_case.main()
« no previous file with comments | « testing/legion/examples/hello_world/controller_test.py ('k') | testing/legion/legion.isolate » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698