예제 #1
0
파일: test_mcast.py 프로젝트: hujiangyi/or
 def test_join(self):
     session = ("127.0.0.1", "127.0.0.1", 1233, 12323)
     mcast = Mcast(address=("127.0.0.1", "5.5.5.1", "229.1.1.255", 0))
     self.assertIn(("127.0.0.1", "5.5.5.1", "229.1.1.255", 0),
                   Mcast.McastDb.keys())
     self.assertIn(mcast, Mcast.McastDb.values())
     mcast.join(session)
     self.assertEqual(mcast.status, Mcast.JOINED)
     time.sleep(0.1)
     mcast.close()
     self.assertEqual(mcast.status, Mcast.LEAVED)
     self.assertNotIn(("127.0.0.1", "5.5.5.1", "229.1.1.255", 0),
                      Mcast.McastDb.keys())
     self.assertNotIn(mcast, Mcast.McastDb.values())
예제 #2
0
파일: test_mcast.py 프로젝트: hujiangyi/or
    def test_join_1(self):
        session = ("127.0.0.1", "127.0.0.1", 1233, 12323)
        address_1 = ("127.0.0.1", "5.5.5.1", "229.1.1.255", 0)
        address_2 = ("127.0.0.1", "7.5.5.2", "229.1.1.255", 0)
        address_3 = ("127.0.0.1", "3.5.5.2", "228.1.1.255", 0)

        mcast = Mcast(address=address_1)
        self.assertIn(("127.0.0.1", "5.5.5.1", "229.1.1.255", 0),
                      Mcast.McastDb.keys())
        self.assertIn(mcast, Mcast.McastDb.values())
        mcast.rejoin()
        self.assertEqual(mcast.status, Mcast.NOT_JOINED)
        mcast.join(session)
        self.assertEqual(mcast.status, Mcast.JOINED)
        time.sleep(0.1)
        # no operation in joined status
        mcast.join(session)
        self.assertEqual(mcast.status, Mcast.JOINED)

        mcast_3 = Mcast(address=address_3)
        self.assertIn(address_3, Mcast.McastDb.keys())
        time.sleep(0.1)
        # no operation in joined status
        mcast_3.join(session)
        self.assertEqual(mcast_3.status, Mcast.JOINED)

        try:
            mcast_test = Mcast.findMcastInstance(None)
        except McastException as e:
            pass

        mcast_test = Mcast.findMcastInstance(address_1)

        self.assertEqual(mcast_test.status, Mcast.JOINED)
        self.assertEqual(mcast_test, mcast)

        try:
            mcast = Mcast(address=address_1)
        except McastException as e:
            self.assertEqual(
                str(e),
                "init address %s was already initiated" % str(address_1))

        mcast_test = Mcast.findMcastInstance(address_2)
        self.assertIsNone(mcast_test)

        mcast_2 = Mcast(address=address_2)
        self.assertIn(("127.0.0.1", "5.5.5.1", "229.1.1.255", 0),
                      Mcast.McastDb.keys())
        self.assertIn(mcast_2, Mcast.McastDb.values())
        mcast_2.join(session)
        self.assertEqual(mcast_2.status, Mcast.JOINED)

        time.sleep(0.1)
        mcast_3.close()
        mcast.close()
        self.assertEqual(mcast.status, Mcast.LEAVED)
        time.sleep(1)
        self.assertNotIn(("127.0.0.1", "5.5.5.1", "229.1.1.255", 0),
                         Mcast.McastDb.keys())
        self.assertNotIn(Mcast, Mcast.McastDb.values())
        for key in Mcast.McastDb.keys():
            Mcast.McastDb[key].close()
        time.sleep(1)
        self.assertEqual(len(Mcast.McastDb), 0)