예제 #1
0
    def test_00_init(self, mock_SimpleConsumer, mock_KafkaClient, mock_UVEServer):
        self.test_spec = [
            TestStage(
                i = PartHandlerInput(
                    redis_instances = set([("127.0.0.1",44444,0)]),
                    get_part = ("127.0.0.1:44444",
                        { "gen1" :
                            { "ObjectXX:uve1" : set(["type1"])  }}),
                    get_messages = [OffsetAndMessage(offset=0,
                        message=Message(magic=0, attributes=0, key='',
                        value=('{"message":"UVEUpdate","key":"ObjectYY:uve2",'
                               '"type":"type2","gen":"gen1","coll":'
                               '"127.0.0.1:44444","deleted":false}')))]),
                o = PartHandlerOutput(
                    callbacks = [
                        { "ObjectXX:uve1" : None },
                        { "ObjectYY:uve2" : set(["type2"])},
                    ],
                    uvedb = None)
            ),
            TestStage(
                i = PartHandlerInput(
                    redis_instances = gevent.GreenletExit(),
                    get_part = None,
                    get_messages = None),
                o = PartHandlerOutput(
                    callbacks = [
                        { "ObjectXX:uve1" : None,
                          "ObjectYY:uve2" : None },
                    ],
                    uvedb = {"127.0.0.1:44444" :
                       { "gen1" :
                          { "ObjectXX:uve1" : set(["type1"]),
                            "ObjectYY:uve2" : set(["type2"])}}}),
   
            )
        ]
        mock_UVEServer.return_value.redis_instances.side_effect = \
            [x.i.redis_instances for x in self.test_spec]

        mock_UVEServer.return_value.get_part.side_effect = \
            [x.i.get_part for x in self.test_spec if x.i.get_part is not None]  

        mock_SimpleConsumer.return_value.get_messages.side_effect = \
            [x.i.get_messages for x in self.test_spec]

        self.ph = UveStreamProc('no-brokers', 1, "uve-1", logging,
                self.callback_proc, "127.0.0.1", mock_UVEServer.return_value)
        self.ph.start()
        res,db = self.ph.get(timeout = 10)
        if (isinstance(res,AssertionError)):
            raise res
        self.assertEqual(db, self.test_spec[-1].o.uvedb)
예제 #2
0
    def test_00_init(self, mock_SimpleConsumer, mock_KafkaClient,
                     mock_UVEServer):
        self.test_spec = [
            TestStage(i=PartHandlerInput(
                redis_instances=set([("127.0.0.1", 44444, 0)]),
                get_part={
                    "127.0.0.1:44444": {
                        "gen1": {
                            "ObjectXX:uve1": set(["type1"])
                        }
                    }
                },
                get_messages=[
                    OffsetAndMessage(
                        offset=0,
                        message=Message(
                            magic=0,
                            attributes=0,
                            key='',
                            value=(
                                '{"message":"UVEUpdate","key":"ObjectYY:uve2",'
                                '"type":"type2","gen":"gen1","coll":'
                                '"127.0.0.1:44444","deleted":false}')))
                ]),
                      o=PartHandlerOutput(callbacks=[
                          {
                              "ObjectXX:uve1": None
                          },
                          {
                              "ObjectYY:uve2": set(["type2"])
                          },
                      ],
                                          uvedb=None)),
            TestStage(
                i=PartHandlerInput(redis_instances=gevent.GreenletExit(),
                                   get_part=None,
                                   get_messages=None),
                o=PartHandlerOutput(callbacks=[
                    {
                        "ObjectXX:uve1": None,
                        "ObjectYY:uve2": None
                    },
                ],
                                    uvedb={
                                        "127.0.0.1:44444": {
                                            "gen1": {
                                                "ObjectXX:uve1":
                                                set(["type1"]),
                                                "ObjectYY:uve2": set(["type2"])
                                            }
                                        }
                                    }),
            )
        ]
        mock_UVEServer.return_value.redis_instances.side_effect = \
            [x.i.redis_instances for x in self.test_spec]

        mock_UVEServer.return_value.get_part.side_effect = \
            [x.i.get_part for x in self.test_spec if x.i.get_part is not None]

        mock_SimpleConsumer.return_value.get_messages.side_effect = \
            [x.i.get_messages for x in self.test_spec]

        self.ph = UveStreamProc('no-brokers', 1, "uve-1", logging,
                                self.callback_proc, "127.0.0.1",
                                mock_UVEServer.return_value)
        self.ph.start()
        res, db = self.ph.get(timeout=10)
        if (isinstance(res, AssertionError)):
            raise res
        self.assertEqual(db, self.test_spec[-1].o.uvedb)
예제 #3
0
class TestPartitionHandler(unittest.TestCase):

    def setUp(self):
        self.ph = None
        self.test_spec = None
        self.stage = 0
        self.step = 0
        #self.done = False
        pass

    def tearDown(self):
        pass

    def callback_proc(self, part, uves):
        self.assertNotEqual(self.stage, len(self.test_spec))
        stage = self.test_spec[self.stage]
        o = stage.o.callbacks[self.step]
        self.assertEqual(uves, o,
            "Error in stage %d step %d\nActual   %s\nExpected %s" % \
            (self.stage, self.step, str(uves), str(o)))
        self.step += 1 
        if len(stage.o.callbacks) == self.step:
            self.step = 0
            self.stage += 1
          
    @mock.patch('opserver.partition_handler.UVEServer', autospec=True)
    @mock.patch('opserver.partition_handler.KafkaClient', autospec=True)
    @mock.patch('opserver.partition_handler.SimpleConsumer', autospec=True)
    # Test intialization and shutdown, along with basic Kafka, partition start
    # and UVE read operations
    @unittest.skip('Skipping PartHandler test')
    # TODO: Needs to be updated or removed
    def test_00_init(self, mock_SimpleConsumer, mock_KafkaClient, mock_UVEServer):
        self.test_spec = [
            TestStage(
                i = PartHandlerInput(
                    redis_instances = set([("127.0.0.1",44444,0)]),
                    get_part = ("127.0.0.1:44444",
                        { "gen1" :
                            { "ObjectXX:uve1" : set(["type1"])  }}),
                    get_messages = [OffsetAndMessage(offset=0,
                        message=Message(magic=0, attributes=0, key='',
                        value=('{"message":"UVEUpdate","key":"ObjectYY:uve2",'
                               '"type":"type2","gen":"gen1","coll":'
                               '"127.0.0.1:44444","deleted":false}')))]),
                o = PartHandlerOutput(
                    callbacks = [
                        { "ObjectXX:uve1" : None },
                        { "ObjectYY:uve2" : set(["type2"])},
                    ],
                    uvedb = None)
            ),
            TestStage(
                i = PartHandlerInput(
                    redis_instances = gevent.GreenletExit(),
                    get_part = None,
                    get_messages = None),
                o = PartHandlerOutput(
                    callbacks = [
                        { "ObjectXX:uve1" : None,
                          "ObjectYY:uve2" : None },
                    ],
                    uvedb = {"127.0.0.1:44444" :
                       { "gen1" :
                          { "ObjectXX:uve1" : set(["type1"]),
                            "ObjectYY:uve2" : set(["type2"])}}}),
   
            )
        ]
        mock_UVEServer.return_value.redis_instances.side_effect = \
            [x.i.redis_instances for x in self.test_spec]

        mock_UVEServer.return_value.get_part.side_effect = \
            [x.i.get_part for x in self.test_spec if x.i.get_part is not None]  

        mock_SimpleConsumer.return_value.get_messages.side_effect = \
            [x.i.get_messages for x in self.test_spec]

        self.ph = UveStreamProc('no-brokers', 1, "uve-1", logging,
                self.callback_proc, "127.0.0.1", mock_UVEServer.return_value)
        self.ph.start()
        res,db = self.ph.get(timeout = 10)
        if (isinstance(res,AssertionError)):
            raise res
        self.assertEqual(db, self.test_spec[-1].o.uvedb)
예제 #4
0
class TestPartitionHandler(unittest.TestCase):
    def setUp(self):
        self.ph = None
        self.test_spec = None
        self.stage = 0
        self.step = 0
        #self.done = False
        pass

    def tearDown(self):
        pass

    def callback_proc(self, part, uves):
        self.assertNotEqual(self.stage, len(self.test_spec))
        stage = self.test_spec[self.stage]
        o = stage.o.callbacks[self.step]
        self.assertEqual(uves, o,
            "Error in stage %d step %d\nActual   %s\nExpected %s" % \
            (self.stage, self.step, str(uves), str(o)))
        self.step += 1
        if len(stage.o.callbacks) == self.step:
            self.step = 0
            self.stage += 1

    @mock.patch('opserver.partition_handler.UVEServer', autospec=True)
    @mock.patch('opserver.partition_handler.KafkaClient', autospec=True)
    @mock.patch('opserver.partition_handler.SimpleConsumer', autospec=True)
    # Test intialization and shutdown, along with basic Kafka, partition start
    # and UVE read operations
    def test_00_init(self, mock_SimpleConsumer, mock_KafkaClient,
                     mock_UVEServer):
        self.test_spec = [
            TestStage(i=PartHandlerInput(
                redis_instances=set([("127.0.0.1", 44444, 0)]),
                get_part={
                    "127.0.0.1:44444": {
                        "gen1": {
                            "ObjectXX:uve1": set(["type1"])
                        }
                    }
                },
                get_messages=[
                    OffsetAndMessage(
                        offset=0,
                        message=Message(
                            magic=0,
                            attributes=0,
                            key='',
                            value=(
                                '{"message":"UVEUpdate","key":"ObjectYY:uve2",'
                                '"type":"type2","gen":"gen1","coll":'
                                '"127.0.0.1:44444","deleted":false}')))
                ]),
                      o=PartHandlerOutput(callbacks=[
                          {
                              "ObjectXX:uve1": None
                          },
                          {
                              "ObjectYY:uve2": set(["type2"])
                          },
                      ],
                                          uvedb=None)),
            TestStage(
                i=PartHandlerInput(redis_instances=gevent.GreenletExit(),
                                   get_part=None,
                                   get_messages=None),
                o=PartHandlerOutput(callbacks=[
                    {
                        "ObjectXX:uve1": None,
                        "ObjectYY:uve2": None
                    },
                ],
                                    uvedb={
                                        "127.0.0.1:44444": {
                                            "gen1": {
                                                "ObjectXX:uve1":
                                                set(["type1"]),
                                                "ObjectYY:uve2": set(["type2"])
                                            }
                                        }
                                    }),
            )
        ]
        mock_UVEServer.return_value.redis_instances.side_effect = \
            [x.i.redis_instances for x in self.test_spec]

        mock_UVEServer.return_value.get_part.side_effect = \
            [x.i.get_part for x in self.test_spec if x.i.get_part is not None]

        mock_SimpleConsumer.return_value.get_messages.side_effect = \
            [x.i.get_messages for x in self.test_spec]

        self.ph = UveStreamProc('no-brokers', 1, "uve-1", logging,
                                self.callback_proc, "127.0.0.1",
                                mock_UVEServer.return_value)
        self.ph.start()
        res, db = self.ph.get(timeout=10)
        if (isinstance(res, AssertionError)):
            raise res
        self.assertEqual(db, self.test_spec[-1].o.uvedb)