예제 #1
0
class TestParamParsing(TestCase):
    def setUp(self):
        self.rammbock = Rammbock()

    def test_create_three_dicts(self):
        confs, pdu_fields, header_fields = self.rammbock._parse_parameters(
            ['foo=bar', 'doo:dar'])
        self.assertEqual(confs['foo'], 'bar')
        self.assertEqual(pdu_fields['doo'], 'dar')

    def test_use_shortest_name(self):
        confs, pdu_fields, header_fields = self.rammbock._parse_parameters(
            ['foo=this=is:config=value', 'doo:this=is:field'])
        self.assertEqual(confs['foo'], 'this=is:config=value')
        self.assertEqual(pdu_fields['doo'], 'this=is:field')

    def test_error_on_invalid_value(self):
        self.assertRaises(Exception, self.rammbock._parse_parameters, ['foo'])

    def test_parse_header_fields(self):
        confs, pdus, headers = self.rammbock._parse_parameters(
            ['header:poo', 'header:doo:dar', 'header:foo:bar'])
        self.assertEqual(headers['doo'], 'dar')
        self.assertEqual(headers['foo'], 'bar')
        self.assertEqual(pdus['header'], 'poo')
예제 #2
0
class TestParamParsing(TestCase):

    def setUp(self):
        self.rammbock = Rammbock()

    def test_create_three_dicts(self):
        confs, pdu_fields, header_fields = self.rammbock._parse_parameters(['foo=bar', 'doo:dar'])
        self.assertEquals(confs['foo'], 'bar')
        self.assertEquals(pdu_fields['doo'], 'dar')

    def test_use_shortest_name(self):
        confs, pdu_fields, header_fields = self.rammbock._parse_parameters(['foo=this=is:config=value', 'doo:this=is:field'])
        self.assertEquals(confs['foo'], 'this=is:config=value')
        self.assertEquals(pdu_fields['doo'], 'this=is:field')

    def test_error_on_invalid_value(self):
        self.assertRaises(Exception, self.rammbock._parse_parameters, ['foo'])

    def test_parse_header_fields(self):
        confs, pdus, headers = self.rammbock._parse_parameters(['header:poo', 'header:doo:dar', 'header:foo:bar'])
        self.assertEquals(headers['doo'], 'dar')
        self.assertEquals(headers['foo'], 'bar')
        self.assertEquals(pdus['header'], 'poo')
예제 #3
0
 def setUp(self):
     self.rammbock = Rammbock()
예제 #4
0
class TestMessageSequence(TestCase):

    def setUp(self):
        self.rammbock = Rammbock()

    def tearDown(self):
        self.rammbock.reset_rammbock()

    def _example_protocol(self):
        self.rammbock.new_protocol('TestProtocol')
        self.rammbock.uint(2, 'msgId', 5)
        self.rammbock.uint(2, 'length', None)
        self.rammbock.pdu('length-4')
        self.rammbock.end_protocol()

    def _foo_message(self):
        self.rammbock.new_message('FooRequest', 'TestProtocol')
        self.rammbock.uint(2, 'foo', '0xcafe')

    def _start_client_server(self, protocol=None):
        self.rammbock.start_udp_server(LOCAL_IP, ports['SERVER_PORT'],
                                       protocol=protocol, name='Server')
        self.rammbock.start_udp_client(LOCAL_IP, ports['CLIENT_PORT'],
                                       protocol=protocol, name='Client')
        self.rammbock.connect(LOCAL_IP, ports['SERVER_PORT'])

    def test_send_receive(self):
        self._example_protocol()
        self._start_client_server('TestProtocol')
        self._foo_message()
        self.rammbock.client_sends_message()
        self.rammbock.server_receives_message()
        self._sequence_should_equal(self.rammbock._message_sequence.get(),
                                    [['Client', 'Server', 'TestProtocol:FooRequest', '', 'received']])

    def test_validation_failure(self):
        self._example_protocol()
        self._start_client_server('TestProtocol')
        self._foo_message()
        self.rammbock.client_sends_message()
        try:
            self.rammbock.server_receives_message('foo:5')
        except:
            pass
        self._sequence_should_equal(self.rammbock._message_sequence.get(),
                                    [['Client', 'Server', 'TestProtocol:FooRequest', 'Value of field foo does not match 0xcafe!=5', 'received']])

    def test_send_binary_without_protocol(self):
        self._start_client_server()
        self.rammbock.client_sends_binary('foobar')
        self._sequence_should_equal(self.rammbock._message_sequence.get(),
                                    [['Client', '127.0.0.1:12345', 'binary', '', 'sent']])

    def test_receive_binary_without_protocol(self):
        self._start_client_server()
        self.rammbock.client_sends_binary('foobar')
        self.rammbock.server_receives_binary()
        self._sequence_should_equal(self.rammbock._message_sequence.get(),
                                    [['Client', 'Server', 'binary', '', 'received']])

    def _sequence_should_equal(self, seq_generator, expected):
        list_seq = [list(row) for row in seq_generator]
        self.assertEquals(list_seq, expected)