Ejemplo n.º 1
0
class TestTelemetryStore(unittest.TestCase):
    def setUp(self):
        self.clock = Clock()
        self.clock.advance(1000)
        self.store = TelemetryStore(time_source=self.clock)

    def test_new_object(self):
        self.assertEqual([], self.store.state().keys())
        self.store.receive(Msg("foo", 1000))
        self.assertEqual(["foo"], self.store.state().keys())
        obj = self.store.state()["foo"].get()
        self.assertIsInstance(obj, Obj)

    def test_receive_called(self):
        self.store.receive(Msg("foo", 1000, 1))
        obj = self.store.state()["foo"].get()
        self.assertEquals(obj.last_msg, 1)
        self.store.receive(Msg("foo", 1000, 2))
        self.assertEquals(obj.last_msg, 2)

    def test_drop_old(self):
        self.store.receive(Msg("foo", 1000))
        self.assertEqual(["foo"], self.store.state().keys())
        self.clock.advance(1799.5)
        self.store.receive(Msg("bar", 2799.5))
        self.assertEqual({"bar", "foo"}, set(self.store.state().keys()))
        self.clock.advance(0.5)
        self.store.receive(Msg("bar", 2800))
        self.assertEqual(["bar"], self.store.state().keys())

    def test_become_interesting(self):
        self.store.receive(Msg("foo", 1000, "boring"))
        self.assertEqual([], self.store.state().keys())
        self.store.receive(Msg("foo", 1001, "interesting"))
        self.assertEqual(["foo"], self.store.state().keys())
        # 'become boring' is not implemented, so also not tested yet

    def test_drop_old_boring(self):
        """
        Make sure that dropping a boring object doesn't fail.
        """
        self.store.receive(Msg("foo", 1000, "boring"))
        self.assertEqual([], self.store.state().keys())
        self.clock.advance(1800)
        self.store.receive(Msg("bar", 2800, "boring"))
        self.assertEqual([], self.store.state().keys())
Ejemplo n.º 2
0
class TestTelemetryStore(unittest.TestCase):
    def setUp(self):
        self.clock = Clock()
        self.clock.advance(1000)
        self.store = TelemetryStore(time_source=self.clock)

    def test_new_object(self):
        self.assertEqual([], self.store.state().keys())
        self.store.receive(Msg('foo', 1000))
        self.assertEqual(['foo'], self.store.state().keys())
        obj = self.store.state()['foo'].get()
        self.assertIsInstance(obj, Obj)

    def test_receive_called(self):
        self.store.receive(Msg('foo', 1000, 1))
        obj = self.store.state()['foo'].get()
        self.assertEquals(obj.last_msg, 1)
        self.store.receive(Msg('foo', 1000, 2))
        self.assertEquals(obj.last_msg, 2)

    def test_drop_old(self):
        self.store.receive(Msg('foo', 1000))
        self.assertEqual(['foo'], self.store.state().keys())
        self.clock.advance(1799.5)
        self.store.receive(Msg('bar', 2799.5))
        self.assertEqual({'bar', 'foo'}, set(self.store.state().keys()))
        self.clock.advance(0.5)
        self.store.receive(Msg('bar', 2800))
        self.assertEqual(['bar'], self.store.state().keys())

    def test_become_interesting(self):
        self.store.receive(Msg('foo', 1000, 'boring'))
        self.assertEqual([], self.store.state().keys())
        self.store.receive(Msg('foo', 1001, 'interesting'))
        self.assertEqual(['foo'], self.store.state().keys())
        # 'become boring' is not implemented, so also not tested yet

    def test_drop_old_boring(self):
        """
        Make sure that dropping a boring object doesn't fail.
        """
        self.store.receive(Msg('foo', 1000, 'boring'))
        self.assertEqual([], self.store.state().keys())
        self.clock.advance(1800)
        self.store.receive(Msg('bar', 2800, 'boring'))
        self.assertEqual([], self.store.state().keys())
Ejemplo n.º 3
0
class TestTelemetryStore(unittest.TestCase):
    def setUp(self):
        self.clock = SlightlyBetterClock()
        self.clock.advance(1000)
        self.store = TelemetryStore(time_source=self.clock)
    
    def test_new_object(self):
        self.assertEqual(set(), set(self.store.state().keys()))
        self.store.receive(Msg('foo', 1000))
        self.assertEqual({'foo'}, set(self.store.state().keys()))
        obj = self.store.state()['foo'].get()
        self.assertIsInstance(obj, Obj)
    
    def test_receive_called(self):
        self.store.receive(Msg('foo', 1000, 1))
        obj = self.store.state()['foo'].get()
        self.assertEqual(obj.last_msg, 1)
        self.store.receive(Msg('foo', 1000, 2))
        self.assertEqual(obj.last_msg, 2)
    
    def test_drop_old(self):
        self.store.receive(Msg('foo', 1000))
        self.assertEqual({'foo'}, set(self.store.state().keys()))

        self.clock.advance(1799.5)
        self.store.receive(Msg('bar', 2799.5))
        self.assertEqual({'bar', 'foo'}, set(self.store.state().keys()))

        self.clock.advance(0.5)
        self.assertEqual({'bar'}, set(self.store.state().keys()))

        self.clock.advance(10000)
        self.assertEqual(set(), set(self.store.state().keys()))

        # Expect complete cleanup -- that is, even if a TelemetryStore is created, filled, and thrown away, it will eventually be garbage collected when the objects expire.
        self.assertEqual(set(), set(self.clock.getDelayedCalls()))
    
    def test_become_interesting(self):
        self.store.receive(Msg('foo', 1000, 'boring'))
        self.assertEqual(set(), set(self.store.state().keys()))
        self.store.receive(Msg('foo', 1001, 'interesting'))
        self.assertEqual({'foo'}, set(self.store.state().keys()))
        # 'become boring' is not implemented, so also not tested yet
    
    def test_drop_old_boring(self):
        """
        Make sure that dropping a boring object doesn't fail.
        """
        self.store.receive(Msg('foo', 1000, 'boring'))
        self.assertEqual(set(), set(self.store.state().keys()))
        self.clock.advance(1800)
        self.store.receive(Msg('bar', 2800, 'boring'))
        self.assertEqual(set(), set(self.store.state().keys()))

    def test_expire_in_the_past(self):
        """
        An ITelemetryObject expiring in the past is not an error.
        """
        self.clock.advance(10000)
        self.store.receive(Msg('foo', 0, 'long ago'))
        self.clock.advance(2000)
Ejemplo n.º 4
0
class TestTelemetryStore(unittest.TestCase):
    def setUp(self):
        self.clock = SlightlyBetterClock()
        self.clock.advance(1000)
        self.store = TelemetryStore(time_source=self.clock)

    def test_new_object(self):
        self.assertEqual([], self.store.state().keys())
        self.store.receive(Msg('foo', 1000))
        self.assertEqual(['foo'], self.store.state().keys())
        obj = self.store.state()['foo'].get()
        self.assertIsInstance(obj, Obj)

    def test_receive_called(self):
        self.store.receive(Msg('foo', 1000, 1))
        obj = self.store.state()['foo'].get()
        self.assertEquals(obj.last_msg, 1)
        self.store.receive(Msg('foo', 1000, 2))
        self.assertEquals(obj.last_msg, 2)

    def test_drop_old(self):
        self.store.receive(Msg('foo', 1000))
        self.assertEqual(['foo'], self.store.state().keys())

        self.clock.advance(1799.5)
        self.store.receive(Msg('bar', 2799.5))
        self.assertEqual({'bar', 'foo'}, set(self.store.state().keys()))

        self.clock.advance(0.5)
        self.assertEqual({'bar'}, set(self.store.state().keys()))

        self.clock.advance(10000)
        self.assertEqual([], self.store.state().keys())

        # Expect complete cleanup -- that is, even if a TelemetryStore is created, filled, and thrown away, it will eventually be garbage collected when the objects expire.
        self.assertEqual([], self.clock.getDelayedCalls())

    def test_become_interesting(self):
        self.store.receive(Msg('foo', 1000, 'boring'))
        self.assertEqual([], self.store.state().keys())
        self.store.receive(Msg('foo', 1001, 'interesting'))
        self.assertEqual(['foo'], self.store.state().keys())
        # 'become boring' is not implemented, so also not tested yet

    def test_drop_old_boring(self):
        """
        Make sure that dropping a boring object doesn't fail.
        """
        self.store.receive(Msg('foo', 1000, 'boring'))
        self.assertEqual([], self.store.state().keys())
        self.clock.advance(1800)
        self.store.receive(Msg('bar', 2800, 'boring'))
        self.assertEqual([], self.store.state().keys())

    def test_expire_in_the_past(self):
        """
        An ITelemetryObject expiring in the past is not an error.
        """
        self.clock.advance(10000)
        self.store.receive(Msg('foo', 0, 'long ago'))
        self.clock.advance(2000)