def test_put(self):
     # single attribute
     t = Task("testTask", self.proc)
     resp = Return(0, None, None)
     resp.set_value('testVal')
     # cheat and add the response before the blocking call to put
     t.q.put(resp)
     t.stop()
     t.put(self.attr, "testValue")
     self.assertEqual(len(t._futures), 0)
     self.assertEqual(self.proc.q.qsize(), 1)
Esempio n. 2
0
 def test_put(self):
     # single attribute
     t = Task("testTask", self.proc)
     resp = Return(0, None, None)
     resp.set_value('testVal')
     # cheat and add the response before the blocking call to put
     t.q.put(resp)
     t.stop()
     t.put(self.attr, "testValue")
     self.assertEqual(len(t._futures), 0)
     self.assertEqual(self.proc.q.qsize(), 1)
Esempio n. 3
0
    def test_Return(self):
        context = Mock()
        r = Return(123, context)
        self.assertEquals(123, r.id_)
        self.assertEquals("malcolm:core/Return:1.0", r.typeid)
        self.assertEquals(context, r.context)
        self.assertIsNone(r.value)
        r = Return(123, Mock(), {"key": "value"})
        self.assertEquals({"key": "value"}, r.value)

        r.set_value({"key": "value2"})
        self.assertEquals({"key": "value2"}, r.value)
Esempio n. 4
0
 def test_post(self):
     t = Task("testTask", self.proc)
     resp1 = Return(0, None, None)
     resp1.set_value('testVal')
     resp2 = Error(1, None, None)
     # cheat and add the responses before the blocking call to put
     t.q.put(resp1)
     t.q.put(resp2)
     t.stop()
     t.post(self.method, "testParm")
     t.post(self.method, "testParm2")
     self.assertEqual(len(t._futures), 0)
     self.assertEqual(self.proc.q.qsize(), 2)
Esempio n. 5
0
 def test_post(self):
     t = Task("testTask", self.proc)
     resp1 = Return(1, None, None)
     resp1.set_value(dict(ret='testVal'))
     resp2 = Error(2, None, "")
     # cheat and add the responses before the blocking call to put
     t.q.put(resp1)
     t.q.put(resp2)
     t.stop()
     t.post(self.method, {"a": "testParm"})
     self.assertRaises(ResponseError, t.post, self.method, {"a": "testParm2"})
     self.assertEqual(len(t._futures), 0)
     self.assertEqual(self.proc.q.qsize(), 2)
 def test_post(self):
     t = Task("testTask", self.proc)
     resp1 = Return(0, None, None)
     resp1.set_value('testVal')
     resp2 = Error(1, None, None)
     # cheat and add the responses before the blocking call to put
     t.q.put(resp1)
     t.q.put(resp2)
     t.stop()
     t.post(self.method, {"a": "testParm"})
     self.assertRaises(ValueError, t.post, self.method, {"a": "testParm2"})
     self.assertEqual(len(t._futures), 0)
     self.assertEqual(self.proc.q.qsize(), 2)
Esempio n. 7
0
 def test_exception(self):
     # timeout due to no response arriving
     f0 = Future(self.task)
     f1 = Future(self.task)
     self.task._futures = {0: f0, 1: f1}
     self.assertRaises(queue.Empty, f0.exception, 0)
     # return after waiting for response object
     resp0 = Return(0, None, None)
     resp0.set_value('testVal')
     resp1 = Error(1, None, None)
     resp1.set_message('test Error')
     self.task.q.put(resp0)
     self.task.q.put(resp1)
     self.assertEqual(f1.exception(), 'test Error')
Esempio n. 8
0
 def test_result(self):
     # timeout due to no response arriving
     f0 = Future(self.task)
     f1 = Future(self.task)
     self.task._futures = {0: f0, 1: f1}
     self.assertRaises(queue.Empty, f0.result, 0)
     # return after waiting for response object
     resp0 = Return(0, None, None)
     resp0.set_value('testVal')
     resp1 = Error(1, None, "test Error")
     resp1.set_message('test Error')
     self.task.q.put(resp0)
     self.task.q.put(resp1)
     self.assertEqual(f0.result(), 'testVal')
Esempio n. 9
0
 def test_put_many(self):
     # many attributes
     t = Task("testTask", self.proc)
     resp1 = Return(1, None, None)
     resp1.set_value('testVal1')
     resp2 = Return(2, None, None)
     resp2.set_value('testVal2')
     # cheat and add the response before the blocking call to put
     t.q.put(resp1)
     t.q.put(resp2)
     t.stop()
     t.put_many(self.block, dict(
         testAttr="testValue", testAttr2="testValue2"))
     self.assertEqual(len(t._futures), 0)
     self.assertEqual(self.proc.q.qsize(), 2)
Esempio n. 10
0
 def test_put_many(self):
     # many attributes
     t = Task("testTask", self.proc)
     resp1 = Return(1, None, None)
     resp1.set_value('testVal1')
     resp2 = Return(2, None, None)
     resp2.set_value('testVal2')
     # cheat and add the response before the blocking call to put
     t.q.put(resp1)
     t.q.put(resp2)
     t.stop()
     t.put_many(self.block,
                dict(testAttr="testValue", testAttr2="testValue2"))
     self.assertEqual(len(t._futures), 0)
     self.assertEqual(self.proc.q.qsize(), 2)
Esempio n. 11
0
 def test_exception(self):
     # timeout due to no response arriving
     f0 = Future(self.task)
     f1 = Future(self.task)
     self.task._futures = {0: f0, 1: f1}
     self.assertRaises(queue.Empty, f0.exception, 0)
     # return after waiting for response object
     resp0 = Return(0, None, None)
     resp0.set_value('testVal')
     resp1 = Error(1, None, None)
     resp1.set_message('test Error')
     self.task.q.put(resp0)
     self.task.q.put(resp1)
     with self.assertRaises(ValueError) as cm:
         f1.exception()
     self.assertEqual(str(cm.exception), 'test Error')
Esempio n. 12
0
    def test_wait_all(self):
        t = Task("testTask", self.proc)
        f1 = Future(t)
        f2 = Future(t)
        f3 = Future(t)
        f0 = Future(t)
        t._futures = {0: f0, 1: f1, 2: f2, 3: f3}
        f_wait1 = [f2, f0]
        self.assertRaises(queue.Empty, t.wait_all, f_wait1, 0)

        resp0 = Return(0, None, None)
        resp0.set_value('testVal')
        resp2 = Error(2, None, None)
        t.q.put(resp0)
        t.q.put(resp2)
        t.wait_all( f_wait1, 0)
        self.assertEqual(t._futures, {1: f1, 3: f3})
        self.assertEqual(f0.done(), True)
        self.assertEqual(f1.done(), False)
        self.assertEqual(f2.done(), True)
        self.assertEqual(f3.done(), False)
        self.assertEqual(self.proc.q.qsize(), 0)

        resp3 = Delta(3, None, None)
        t.q.put(resp3)
        f_wait1 = [f3]
        self.assertRaises(ValueError, t.wait_all, f_wait1, 0.01)
        t.stop()
        self.assertRaises(RuntimeWarning, t.wait_all, f_wait1, 0.01)

        resp1 = Return(1, None, None)
        resp1.set_value('testVal')
        t.q.put(resp1)
        self.assertRaises(queue.Empty, t.wait_all, f_wait1, 0.01)
        self.assertEqual(t._futures, {})

        t._futures = {0: f0, 1: f1, 2: f2}
        t.q.put(resp1)
        t.q.put(Task.TASK_STOP)
        self.assertEqual(f1.result(), 'testVal')
    def test_wait_all(self):
        t = Task("testTask", self.proc)
        f1 = Future(t)
        f2 = Future(t)
        f3 = Future(t)
        f0 = Future(t)
        t._futures = {0: f0, 1: f1, 2: f2, 3: f3}
        f_wait1 = [f2, f0]
        self.assertRaises(queue.Empty, t.wait_all, f_wait1, 0)

        resp0 = Return(0, None, None)
        resp0.set_value('testVal')
        resp2 = Error(2, None, None)
        t.q.put(resp0)
        t.q.put(resp2)
        self.assertRaises(ValueError, t.wait_all, f_wait1, 0)
        self.assertEqual(t._futures, {1: f1, 3: f3})
        self.assertEqual(f0.done(), True)
        self.assertEqual(f1.done(), False)
        self.assertEqual(f2.done(), True)
        self.assertEqual(f3.done(), False)
        self.assertEqual(self.proc.q.qsize(), 0)

        resp3 = Delta(3, None, None)
        t.q.put(resp3)
        f_wait1 = [f3]
        self.assertRaises(ValueError, t.wait_all, f_wait1, 0.01)
        t.stop()
        self.assertRaises(StopIteration, t.wait_all, f_wait1, 0.01)

        resp1 = Return(1, None, None)
        resp1.set_value('testVal')
        t.q.put(resp1)
        self.assertRaises(queue.Empty, t.wait_all, f_wait1, 0.01)
        self.assertEqual(t._futures, {})

        t._futures = {0: f0, 1: f1, 2: f2}
        t.q.put(resp1)
        t.q.put(Spawnable.STOP)
        self.assertEqual(f1.result(), 'testVal')