示例#1
0
    def setUp(self):
        self.autoseed = random.randint(0, 9999999999)
        self.seed = self.RAND_SEED
        if not self.seed:
            self.seed = self.autoseed
        self.myRandom = random.Random(self.seed)

        self.peer_controller = None

        self.peers = [
            self.create_peer("P%d" % i, "127.0.0.1", 8500 + i)
            for i in range(self.NO_OF_PEERS)
        ]

        self.peer_controller = PeerController(self.peers,
                                              self.WORLD_SIZE,
                                              self.TOP_SPEED,
                                              self.MAX_SPEED_CHANGE,
                                              self.RADIO_RANGE,
                                              rand_seed=self.seed)

        #Start router
        self.router = Router("127.0.0.1", 8300, self.peers,
                             self.peer_controller, self.USE_TICKS)
        self.router.start()
        self.ensure_peers_ready(self.peers)
        self.router.activate_queue()

        if self.VISUALIZE:
            self.visualizer = Visualizer(self.peers, self.peer_controller)
            self.visualizer.visualize()
示例#2
0
    def setUp(self):
        self.autoseed = random.randint(0, 9999999999)
        self.seed = self.RAND_SEED
        if not self.seed:
            self.seed = self.autoseed
        self.myRandom = random.Random(self.seed)

        self.peer_controller = None

        self.peers = [self.create_peer("P%d" % i, "127.0.0.1", 8500 + i) for i in range(self.NO_OF_PEERS)]

        self.peer_controller = PeerController(
            self.peers, self.WORLD_SIZE, self.TOP_SPEED, self.MAX_SPEED_CHANGE, self.RADIO_RANGE, rand_seed=self.seed
        )

        # Start router
        self.router = Router("127.0.0.1", 8300, self.peers, self.peer_controller, self.USE_TICKS)
        self.router.start()
        self.ensure_peers_ready(self.peers)
        self.router.activate_queue()

        if self.VISUALIZE:
            self.visualizer = Visualizer(self.peers, self.peer_controller)
            self.visualizer.visualize()
示例#3
0
            print("Unknown command:", cmd)        

if __name__ == '__main__':
    host = sys.argv[1]
    port = int(sys.argv[2])
    if len(sys.argv) > 3:
        visualize = (sys.argv[3] == "True")
        worldwidth = int(sys.argv[4])
        worldheight = int(sys.argv[5])
        topSpeed = int(sys.argv[6])
        maxSpeedChange = int(sys.argv[7])
        radioRange = int(sys.argv[8])
    else:
        visualize = False
        worldwidth, worldheight = 2000, 2000
        topSpeed = 140
        maxSpeedChange = 50
        radioRange = 500

    peers = []

    peer_controller = PeerController(peers, {'width': worldwidth, 'height': worldheight}, topSpeed, maxSpeedChange, radioRange)
    router = Router(host, port, peers, peer_controller, False)
    router.start()
    router.activate_queue()

    if visualize:
        peer_controller.visualize(block=False)

    router._main_loop()
示例#4
0
class P2PTestCase(unittest.TestCase):
    NO_OF_PEERS = 1
    VISUALIZE = False

    # Simulation params
    TOP_SPEED = 140
    MAX_SPEED_CHANGE = 50
    RADIO_RANGE = 500
    WORLD_SIZE = {'width': 2000, 'height': 2000}  # in centimeters
    USE_TICKS = False
    CLOCK_SYNC = False
    MANUAL_OVERRIDE = True
    RAND_SEED = None

    def setUp(self):
        self.autoseed = random.randint(0, 9999999999)
        self.seed = self.RAND_SEED
        if not self.seed:
            self.seed = self.autoseed
        self.myRandom = random.Random(self.seed)

        self.peer_controller = None

        self.peers = [
            self.create_peer("P%d" % i, "127.0.0.1", 8500 + i)
            for i in range(self.NO_OF_PEERS)
        ]

        self.peer_controller = PeerController(self.peers,
                                              self.WORLD_SIZE,
                                              self.TOP_SPEED,
                                              self.MAX_SPEED_CHANGE,
                                              self.RADIO_RANGE,
                                              rand_seed=self.seed)

        #Start router
        self.router = Router("127.0.0.1", 8300, self.peers,
                             self.peer_controller, self.USE_TICKS)
        self.router.start()
        self.ensure_peers_ready(self.peers)
        self.router.activate_queue()

        if self.VISUALIZE:
            self.visualizer = Visualizer(self.peers, self.peer_controller)
            self.visualizer.visualize()

    def tearDown(self):
        for peer in self.peers:
            peer.kill()
        self.router.shutdown()

        #print("SEED: " + str(self.seed))

    def tick(self, num_msgs=1):
        self.router.tick(num_msgs)

    def wait_nw_idle(self):
        self.router.wait_queue_empty()

    def assertContains(self, msg, msg_part):
        try:
            self.assertTrue(msg_part in msg)
        except AssertionError:
            raise AssertionError("Msg: %s does not contain %s" %
                                 (msg, msg_part))

    def assertNotContains(self, msg, msg_part):
        try:
            self.assertFalse(msg_part in msg)
        except AssertionError:
            raise AssertionError("Msg: %s does  contain %s" % (msg, msg_part))

    def create_peer(self, name, host, port):
        peer = PeerHandler(name, host, port, self.MANUAL_OVERRIDE,
                           self.CLOCK_SYNC)
        if self.peer_controller:  # Not set on first setup
            peer.setLocation(self.peer_controller.generateNewPeerLocation())
            peer.setPeerController(self.peer_controller)

        if peer.process.returncode is not None:
            raise Exception("Peer " + peer.name + " quit immediately ")
        return peer

    def ensure_peers_ready(self, peers):
        for peer in peers:
            peer.expect_ready(20)

    def has_song_with_votes_in_playlist(self, playlist, song):
        for playlistitem in playlist:
            if playlistitem['song_name'] == song:
                if len(playlistitem['votes']) > 0:
                    return True
                return False
        return False

    def assert_song_in_playlist(self, playlist, song):
        self.assertTrue(self.has_song_with_votes_in_playlist(playlist, song),
                        "Song " + song + " was expected in playlist")
示例#5
0
    host = sys.argv[1]
    port = int(sys.argv[2])
    if len(sys.argv) > 3:
        visualize = (sys.argv[3] == "True")
        worldwidth = int(sys.argv[4])
        worldheight = int(sys.argv[5])
        topSpeed = int(sys.argv[6])
        maxSpeedChange = int(sys.argv[7])
        radioRange = int(sys.argv[8])
    else:
        visualize = False
        worldwidth, worldheight = 2000, 2000
        topSpeed = 140
        maxSpeedChange = 50
        radioRange = 500

    peers = []

    peer_controller = PeerController(peers, {
        'width': worldwidth,
        'height': worldheight
    }, topSpeed, maxSpeedChange, radioRange)
    router = Router(host, port, peers, peer_controller, False)
    router.start()
    router.activate_queue()

    if visualize:
        peer_controller.visualize(block=False)

    router._main_loop()
示例#6
0
class P2PTestCase(unittest.TestCase):
    NO_OF_PEERS = 1
    VISUALIZE = False

    # Simulation params
    TOP_SPEED = 140
    MAX_SPEED_CHANGE = 50
    RADIO_RANGE = 500
    WORLD_SIZE = {"width": 2000, "height": 2000}  # in centimeters
    USE_TICKS = False
    CLOCK_SYNC = False
    MANUAL_OVERRIDE = True
    RAND_SEED = None

    def setUp(self):
        self.autoseed = random.randint(0, 9999999999)
        self.seed = self.RAND_SEED
        if not self.seed:
            self.seed = self.autoseed
        self.myRandom = random.Random(self.seed)

        self.peer_controller = None

        self.peers = [self.create_peer("P%d" % i, "127.0.0.1", 8500 + i) for i in range(self.NO_OF_PEERS)]

        self.peer_controller = PeerController(
            self.peers, self.WORLD_SIZE, self.TOP_SPEED, self.MAX_SPEED_CHANGE, self.RADIO_RANGE, rand_seed=self.seed
        )

        # Start router
        self.router = Router("127.0.0.1", 8300, self.peers, self.peer_controller, self.USE_TICKS)
        self.router.start()
        self.ensure_peers_ready(self.peers)
        self.router.activate_queue()

        if self.VISUALIZE:
            self.visualizer = Visualizer(self.peers, self.peer_controller)
            self.visualizer.visualize()

    def tearDown(self):
        for peer in self.peers:
            peer.kill()
        self.router.shutdown()

        # print("SEED: " + str(self.seed))

    def tick(self, num_msgs=1):
        self.router.tick(num_msgs)

    def wait_nw_idle(self):
        self.router.wait_queue_empty()

    def assertContains(self, msg, msg_part):
        try:
            self.assertTrue(msg_part in msg)
        except AssertionError:
            raise AssertionError("Msg: %s does not contain %s" % (msg, msg_part))

    def assertNotContains(self, msg, msg_part):
        try:
            self.assertFalse(msg_part in msg)
        except AssertionError:
            raise AssertionError("Msg: %s does  contain %s" % (msg, msg_part))

    def create_peer(self, name, host, port):
        peer = PeerHandler(name, host, port, self.MANUAL_OVERRIDE, self.CLOCK_SYNC)
        if self.peer_controller:  # Not set on first setup
            peer.setLocation(self.peer_controller.generateNewPeerLocation())
            peer.setPeerController(self.peer_controller)

        if peer.process.returncode is not None:
            raise Exception("Peer " + peer.name + " quit immediately ")
        return peer

    def ensure_peers_ready(self, peers):
        for peer in peers:
            peer.expect_ready(20)

    def has_song_with_votes_in_playlist(self, playlist, song):
        for playlistitem in playlist:
            if playlistitem["song_name"] == song:
                if len(playlistitem["votes"]) > 0:
                    return True
                return False
        return False

    def assert_song_in_playlist(self, playlist, song):
        self.assertTrue(
            self.has_song_with_votes_in_playlist(playlist, song), "Song " + song + " was expected in playlist"
        )