Index: testing/legion/examples/events/task.py |
diff --git a/testing/legion/examples/events/task.py b/testing/legion/examples/events/task.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..18ae23e9088a24f75cb5aff041a18a56d1ca963c |
--- /dev/null |
+++ b/testing/legion/examples/events/task.py |
@@ -0,0 +1,45 @@ |
+# Copyright 2016 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+"""Task-based unittest for the Legion event server.""" |
+ |
+import argparse |
+import httplib |
+import sys |
+import unittest |
+ |
+ |
+class EventServerTest(unittest.TestCase): |
+ |
+ def __init__(self, *args, **kwargs): |
+ super(EventServerTest, self).__init__(*args, **kwargs) |
+ |
+ parser = argparse.ArgumentParser() |
+ parser.add_argument('--address') |
+ parser.add_argument('--port', type=int) |
+ self.args, _ = parser.parse_known_args() |
+ |
+ def Connect(self, verb, path): |
+ conn = httplib.HTTPConnection(self.args.address, self.args.port) |
+ conn.request(verb, path) |
+ return conn.getresponse().status |
+ |
+ def testSettingGettingAndClearingAnEvent(self): |
+ self.assertEquals(self.Connect('GET', '/events/event1'), 404) |
+ self.assertEquals(self.Connect('PUT', '/events/event1'), 200) |
+ self.assertEquals(self.Connect('GET', '/events/event1'), 200) |
+ self.assertEquals(self.Connect('GET', '/events/event2'), 404) |
+ self.assertEquals(self.Connect('DELETE', '/events/event1'), 200) |
+ self.assertEquals(self.Connect('DELETE', '/events/event1'), 404) |
+ self.assertEquals(self.Connect('GET', '/events/event1'), 404) |
+ |
+ def testErrors(self): |
+ for verb in ['GET', 'PUT', 'DELETE']: |
+ self.assertEquals(self.Connect(verb, '/'), 403) |
+ self.assertEquals(self.Connect(verb, '/foobar'), 405) |
+ self.assertEquals(self.Connect(verb, '/events'), 405) |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main(argv=sys.argv[:1]) |