Beispiel #1
0
 def setUp(self, _):
     self.conn = PyonSelectConnection(sentinel.conn_params,
                                      sentinel.open_callback,
                                      sentinel.reconn_strat)
     self.conn.parameters = DotDict({'channel_max': 25})
     self.conn._channels = {}
Beispiel #2
0
 def setUp(self, _):
     self.conn = PyonSelectConnection(sentinel.conn_params, sentinel.open_callback, sentinel.reconn_strat)
     self.conn.parameters = DotDict({'channel_max':25})
     self.conn._channels = {}
Beispiel #3
0
class TestPyonSelectConnection(PyonTestCase):
    @patch('pyon.net.messaging.SelectConnection')
    def setUp(self, _):
        self.conn = PyonSelectConnection(sentinel.conn_params,
                                         sentinel.open_callback,
                                         sentinel.reconn_strat)
        self.conn.parameters = DotDict({'channel_max': 25})
        self.conn._channels = {}

    def test_mark_bad_channel(self):
        self.assertEquals(len(self.conn._bad_channel_numbers), 0)

        self.conn.mark_bad_channel(15)

        self.assertEquals(len(self.conn._bad_channel_numbers), 1)
        self.assertIn(15, self.conn._bad_channel_numbers)

    def test__next_channel_number_first(self):
        self.assertEquals(self.conn._next_channel_number(), 1)

    def test__next_channel_number_existing_channels(self):
        self.conn._channels[1] = sentinel.chan1
        self.conn._channels[2] = sentinel.chan2
        self.conn._channels[5] = sentinel.chan3

        new_ch_num = self.conn._next_channel_number()
        self.assertEquals(new_ch_num, 3)
        self.conn._channels[new_ch_num] = sentinel.any

        new_ch_num = self.conn._next_channel_number()
        self.assertEquals(new_ch_num, 4)
        self.conn._channels[new_ch_num] = sentinel.any

        new_ch_num = self.conn._next_channel_number()
        self.assertEquals(new_ch_num, 6)
        self.conn._channels[new_ch_num] = sentinel.any

    def test__next_channel_number_existing_channels_and_bad(self):
        self.conn._channels[1] = sentinel.chan1
        self.conn._channels[2] = sentinel.chan2
        self.conn._channels[5] = sentinel.chan3
        self.conn.mark_bad_channel(3)
        self.conn.mark_bad_channel(6)

        new_ch_num = self.conn._next_channel_number()
        self.assertEquals(new_ch_num, 4)
        self.conn._channels[new_ch_num] = sentinel.any

        new_ch_num = self.conn._next_channel_number()
        self.assertEquals(new_ch_num, 7)
        self.conn._channels[new_ch_num] = sentinel.any

    def test__next_channel_number_after_channel_is_freed(self):
        self.conn._channels[1] = sentinel.chan1
        self.conn._channels[2] = sentinel.chan2
        self.conn._channels[5] = sentinel.chan3

        new_ch_num = self.conn._next_channel_number()
        self.assertEquals(new_ch_num, 3)
        self.conn._channels[new_ch_num] = sentinel.any

        # free up a channel
        del self.conn._channels[1]

        # acquire again, should be 1
        new_ch_num = self.conn._next_channel_number()
        self.assertEquals(new_ch_num, 1)
        self.conn._channels[new_ch_num] = sentinel.any

    def test__next_channel_number_all_used_by_channels(self):
        self.conn._channels = {x: sentinel.any for x in xrange(1, 26)}
        self.assertRaises(NoFreeChannels, self.conn._next_channel_number)

    def test__next_channel_number_all_used_either_channels_or_bad(self):
        for x in xrange(1, 26):
            if x % 2:
                self.conn._channels[x] = sentinel.any
            else:
                self.conn.mark_bad_channel(x)

        self.assertRaises(NoFreeChannels, self.conn._next_channel_number)

    def text__next_channel_number_adds_to_pending(self):
        ch = self.conn._next_channel_number()
        self.assertIn(ch, self.conn._pending)

        ch2 = self.conn._next_channel_number()
        self.assertNotEquals(ch, ch2)
Beispiel #4
0
class TestPyonSelectConnection(PyonTestCase):

    @patch('pyon.net.messaging.SelectConnection')
    def setUp(self, _):
        self.conn = PyonSelectConnection(sentinel.conn_params, sentinel.open_callback, sentinel.reconn_strat)
        self.conn.parameters = DotDict({'channel_max':25})
        self.conn._channels = {}

    def test_mark_bad_channel(self):
        self.assertEquals(len(self.conn._bad_channel_numbers), 0)

        self.conn.mark_bad_channel(15)

        self.assertEquals(len(self.conn._bad_channel_numbers), 1)
        self.assertIn(15, self.conn._bad_channel_numbers)

    def test__next_channel_number_first(self):
        self.assertEquals(self.conn._next_channel_number(), 1)

    def test__next_channel_number_existing_channels(self):
        self.conn._channels[1] = sentinel.chan1
        self.conn._channels[2] = sentinel.chan2
        self.conn._channels[5] = sentinel.chan3

        new_ch_num = self.conn._next_channel_number()
        self.assertEquals(new_ch_num, 3)
        self.conn._channels[new_ch_num] = sentinel.any

        new_ch_num = self.conn._next_channel_number()
        self.assertEquals(new_ch_num, 4)
        self.conn._channels[new_ch_num] = sentinel.any

        new_ch_num = self.conn._next_channel_number()
        self.assertEquals(new_ch_num, 6)
        self.conn._channels[new_ch_num] = sentinel.any

    def test__next_channel_number_existing_channels_and_bad(self):
        self.conn._channels[1] = sentinel.chan1
        self.conn._channels[2] = sentinel.chan2
        self.conn._channels[5] = sentinel.chan3
        self.conn.mark_bad_channel(3)
        self.conn.mark_bad_channel(6)

        new_ch_num = self.conn._next_channel_number()
        self.assertEquals(new_ch_num, 4)
        self.conn._channels[new_ch_num] = sentinel.any

        new_ch_num = self.conn._next_channel_number()
        self.assertEquals(new_ch_num, 7)
        self.conn._channels[new_ch_num] = sentinel.any

    def test__next_channel_number_after_channel_is_freed(self):
        self.conn._channels[1] = sentinel.chan1
        self.conn._channels[2] = sentinel.chan2
        self.conn._channels[5] = sentinel.chan3

        new_ch_num = self.conn._next_channel_number()
        self.assertEquals(new_ch_num, 3)
        self.conn._channels[new_ch_num] = sentinel.any

        # free up a channel
        del self.conn._channels[1]

        # acquire again, should be 1
        new_ch_num = self.conn._next_channel_number()
        self.assertEquals(new_ch_num, 1)
        self.conn._channels[new_ch_num] = sentinel.any

    def test__next_channel_number_all_used_by_channels(self):
        self.conn._channels = {x:sentinel.any for x in xrange(1, 26)}
        self.assertRaises(NoFreeChannels, self.conn._next_channel_number)

    def test__next_channel_number_all_used_either_channels_or_bad(self):
        for x in xrange(1, 26):
            if x % 2:
                self.conn._channels[x] = sentinel.any
            else:
                self.conn.mark_bad_channel(x)

        self.assertRaises(NoFreeChannels, self.conn._next_channel_number)