コード例 #1
0
ファイル: simulator.py プロジェクト: evandrofg/EP
    def __createDuplexLink(self, side1, side2, bandwidth, delay):
        """Creates a link between hosts/routers (sides 1 and 2).
           Also configures the link's bandwidth (in Mbps) and
           delay (in ms)."""
        # print("{Link} %s <=> %s [%g Mbps, %g ms]" %
        #      (side1, side2, bandwidth, delay))

        if '.' in side1 and '.' in side2:
            port1 = int(side1.split('.')[1])
            port2 = int(side2.split('.')[1])
            queue1 = self.routers[side1.split('.')[0]].getBufferQueue(port1)
            queue2 = self.routers[side2.split('.')[0]].getBufferQueue(port2)
            self.routers[side1.split('.')[0]].addLink(
                port1, Link(queue2, bandwidth, delay))
            self.routers[side2.split('.')[0]].addLink(
                port2, Link(queue1, bandwidth, delay))

        else:
            if not '.' in side1:
                aux = side1
                side1 = side2
                side2 = aux
            # 1 is router, 2 is host
            port1 = int(side1.split('.')[1])
            queue1 = self.routers[side1.split('.')[0]].getBufferQueue(port1)
            queue2 = self.hosts[side2].getNetQueue()
            self.routers[side1.split('.')[0]].addLink(
                port1, Link(queue2, bandwidth, delay))
            self.hosts[side2].addLink(Link(queue1, bandwidth, delay))
コード例 #2
0
def inchworm(seg_lens, q0, base=None):
    """Creates a complex arm with 10 segments

    :param seg_lens: 1x10 vector of lengths of each sement
    :type seg_lens: numpy.ndarray

    :param q0: 1xN vector of the starting joint configuration
    :type q0: numpy.ndarray

    :param base: (Optional) optional (x, y, z) base location of arm
    :type base: numpy.ndarray or None

    :returns: "Noodle" arm
    :rtype: maddux.robot.Arm
    """
    # L1 = Link(0, seg_lens[0], 0,  1.571)
    # L2 = Link(0, 0, seg_lens[1],  0)
    # L3 = Link(0, 0, seg_lens[2],  0)
    # L4 = Link(1.571, 0,  seg_lens[3], 1.571)

    L1 = Link(0, seg_lens[0], 0,  1.571)
    L2 = Link(0, 0, seg_lens[1],  0)
    L3 = Link(0, 0, seg_lens[2],  0)
    L4 = Link(0, 0,  0, 1.571)
    L4 = Link(0, 0, seg_lens[3], 0)

    links = np.array([L1, L2, L3, L4])

    robot = Arm(links, q0, 'inchworm', 10, base)
    return robot
コード例 #3
0
def do_test(n_data_packets, cc, add_events):
    """
    The test has 2 hosts connected by a link, and one flow.
    """
    em = EventManager(logging=False)
    host_1 = Host(em, 'H1', debug=False)
    host_2 = Host(em, 'H2', debug=False)
    sr = SeqNumberRecorder('S', host_2)
    l1_a = Link(em, 'L1_a', host_1, sr, DATA_PACKET_SIZE * 1000, 0.01,
                5 * DATA_PACKET_SIZE, debug=False)
    l1_b = Link(em, 'L1_b', host_2, host_1, DATA_PACKET_SIZE * 1000, 0.01,
                5 * DATA_PACKET_SIZE, debug=False)
    host_1.link = l1_a
    host_2.link = l1_b
    flow = Flow(em, 'F1', host_1, host_2, n_data_packets * DATA_PACKET_SIZE, 1,
                cc, debug=False)

    add_events(em, host_1, host_2, sr, l1_a, l1_b, flow)
    em.run()

    assert sr.seqs == set(range(n_data_packets + 1))
    # print('Src send first unacked', flow.src.send_first_unacked, 'Src send next', flow.src.send_next, 'Dst receive next', flow.dst.receive_next)
    assert flow.src.last_seq_number == n_data_packets
    assert flow.src.send_first_unacked == n_data_packets + 1
    assert flow.src.send_next == n_data_packets + 1
    assert flow.dst.receive_next == n_data_packets + 1
コード例 #4
0
ファイル: test_search.py プロジェクト: disciple2/selenium-1
    def test_navigation(self):
        LoginPage(self.browser).open()
        Link(self.browser, 'Accessories').hover()
        Link(self.browser, 'Shoes').click()

        self.assertTrue(
            Product(self.browser, 'Ann Ankle Boot').is_visible)
コード例 #5
0
    def calcWorker(self, worker_id):
        while (self.go.value):
            # Take ORDER
            if self.workers_query_result_q.qsize() > 3:
                print "Warning: the queue is containing %d elements" % (
                    self.workers_query_result_q.qsize())
            order = self.workers_query_result_q.get()
            profile = order["profile"]
            profile_srtm = order["profile_srtm"]
            id1 = order["id1"]
            id2 = order["id2"]
            # Normal profile
            try:
                link = Link(profile)
                loss, status = link.loss_calculator()

            except (ZeroDivisionError, ProfileException), e:
                loss = 0
                status = -1
            # Downscaled profile
            try:
                link_ds = Link(profile)
                loss_ds, status_ds = link_ds.loss_calculator(downscale=3)
            except (ZeroDivisionError, ProfileException), e:
                loss_ds = 0
                status_ds = -1
コード例 #6
0
def noodle_arm(seg_lens, q0, base=None):
    """Creates a complex arm with 10 segments

    :param seg_lens: 1x10 vector of lengths of each sement
    :type seg_lens: numpy.ndarray

    :param q0: 1xN vector of the starting joint configuration
    :type q0: numpy.ndarray

    :param base: (Optional) optional (x, y, z) base location of arm
    :type base: numpy.ndarray or None

    :returns: "Noodle" arm
    :rtype: maddux.robot.Arm
    """
    L1 = Link(0, seg_lens[0], 0, 1.571)
    L2 = Link(0, seg_lens[1], 0, -1.571)
    L3 = Link(0, seg_lens[2], 0, -1.571)
    L4 = Link(0, seg_lens[3], 0, 1.571)
    L5 = Link(0, seg_lens[4], 0, 1.571)
    L6 = Link(0, seg_lens[5], 0, -1.571)
    L7 = Link(0, seg_lens[6], 0, 1.571)
    L8 = Link(0, seg_lens[7], 0, 1.571)
    L9 = Link(0, seg_lens[8], 0, -1.571)
    L10 = Link(0, seg_lens[9], 0, 1.571)
    links = np.array([L1, L2, L3, L4, L5, L6, L7, L8, L9, L10])

    robot = Arm(links, q0, 'noodle_arm', 10, base)
    return robot
コード例 #7
0
def test_create_link_bad_lenght():
    """Attempt to create a link whose length is not greater than zero."""
    network = Network()
    alice = Router(network, "alice")
    bob = Router(network, "bob")
    with pytest.raises(AssertionError):
        _link = Link(alice, bob, -100)
    with pytest.raises(AssertionError):
        _link = Link(alice, bob, 0)
コード例 #8
0
 def create_links(self):
     link1 = Link(self.core1, self.core2)
     self.links.append(link1)
     link2 = Link(self.core2, self.core1)
     self.links.append(link2)
     if link1.get_link_id() is link2.get_link_id():
         self.link_id = link1.get_link_id()
         self.core1.add_link_id(self.link_id)
         self.core2.add_link_id(self.link_id)
コード例 #9
0
class TestAircraft(unittest.TestCase):

    Config.params["simulator"]["test_mode"] = True

    # Generates a itinerary_template
    n1 = Node("N1", {"lat": 37.611526, "lng": -122.390443})
    n2 = Node("N2", {"lat": 37.611375, "lng": -122.390443})
    n3 = Node("N3", {"lat": 37.611224, "lng": -122.390443})
    # n1 = Node("N1", {"lat": 47.722000, "lng": -122.079057})
    # n2 = Node("N2", {"lat": 47.822000, "lng": -122.079057})
    # n3 = Node("N3", {"lat": 47.922000, "lng": -122.079057})

    # m1 = Node("M1", {"lat": 47.772000, "lng": -122.079057})
    # m2 = Node("M2", {"lat": 47.872000, "lng": -122.079057})
    #
    # m = Node("M", {"lat": 47.755333, "lng": -122.079057})

    links = []
    links.append(Link("test1", [n1, n2]))
    links.append(Link("test2", [n2, n3]))
    itinerary_template = Itinerary(links)
    for link in links:
        print(link.length)

    def test_init(self):

        aircraft = Aircraft("F1", "M1", self.n1, State.unknown)
        aircraft.set_location(self.n1)
        self.assertEqual(aircraft.location, self.n1)

    def test_tick(self):

        itinerary = deepcopy(self.itinerary_template)

        aircraft = Aircraft("F1", "M1", self.n1, State.stop)
        aircraft.set_location(self.n1)
        self.assertEqual(aircraft.state, State.stop)

        # Stop state
        aircraft.tick()
        self.assertEqual(aircraft.itinerary, None)

        # Moving state
        aircraft.set_itinerary(itinerary)
        self.assertTrue(aircraft.itinerary)
        self.assertEqual(aircraft.state, State.moving)
        self.assertEqual(aircraft.itinerary.current_target.nodes[0], self.n1)

        aircraft.tick() # pass hold link, current_target node not changed
        self.assertEqual(aircraft.itinerary.current_target.nodes[0], self.n1)

        aircraft.tick()
        self.assertEqual(aircraft.itinerary.current_target.nodes[0], self.n2)

        aircraft.tick()
        self.assertTrue(aircraft.itinerary.is_completed)
コード例 #10
0
ファイル: pad.py プロジェクト: jose2190/gst-editor
 def linkPads(self, other):
     if self.direction() == gst.PAD_SRC:
         link = Link(self, other, self.selection)
     else:
         link = Link(other, self, self.selection)
     self.links.append(link)
     other.links.append(link)
     self.get_canvas().get_root_item().add_child(link)
     self.updateLinks()
     other.updateLinks()
コード例 #11
0
ファイル: interface.py プロジェクト: fossabot/noc
 def link_ptp(self, other, method=""):
     """
     Create p-t-p link with other interface
     Raise ValueError if either of interface already connected.
     :type other: Interface
     :returns: Link instance
     """
     # Try to check existing LAG
     el = Link.objects.filter(interfaces=self.id).first()
     if el and other not in el.interfaces:
         el = None
     if (self.is_linked or other.is_linked) and not el:
         raise ValueError("Already linked")
     if self.id == other.id:
         raise ValueError("Cannot link with self")
     if self.type in ("physical", "management"):
         if other.type in ("physical", "management"):
             # Refine LAG
             if el:
                 left_ifaces = [i for i in el.interfaces if i not in (self, other)]
                 if left_ifaces:
                     el.interfaces = left_ifaces
                     el.save()
                 else:
                     el.delete()
             #
             link = Link(interfaces=[self, other],
                 discovery_method=method)
             link.save()
             return link
         else:
             raise ValueError("Cannot connect %s interface to %s" % (
                 self.type, other.type))
     elif self.type == "aggregated":
         # LAG
         if other.type == "aggregated":
             # Check LAG size match
             # Skip already linked members
             l_members = [i for i in self.lag_members if not i.is_linked]
             r_members = [i for i in other.lag_members if not i.is_linked]
             if len(l_members) != len(r_members):
                 raise ValueError("LAG size mismatch")
             # Create link
             if l_members:
                 link = Link(interfaces=l_members + r_members,
                     discovery_method=method)
                 link.save()
                 return link
             else:
                 return
         else:
             raise ValueError("Cannot connect %s interface to %s" % (
                 self.type, other.type))
     raise ValueError("Cannot link")
コード例 #12
0
ファイル: test_node.py プロジェクト: GeorgeKeith/udemy_py
    def test_len(self):
        print("test_len")
        #        graph = Graph()

        node_a = Node("A")
        node_b = Node("B")
        node_c = Node("C")

        link_ab = Link(node_a, node_b)
        link_ac = Link(node_a, node_c)
        self.assertEqual(len(node_a), 2)
コード例 #13
0
ファイル: predefined_robots.py プロジェクト: fushengyong/MOR
def simple_3dof_arm(seg1_len, seg2_len, seg3_len, q0, base=None):
    """Creates a simple human-like robotic arm with 7 links and 2 segments
    with the desired lengths and starting joint configuration

    :param seg1_len: The length of the first segment of the arm
    :type seg1_len: int

    :param seg2_len: The length of the second segment of the arm
    :type seg2_len: int

    :param q0: 1xN vector of the starting joint configuration
    :type q0: numpy.ndarray

    :param base: (Optional) (x, y, z) location of arm base
    :type base: numpy.ndarray or None

    :returns: 7 link, 2 segment "human" arm.
    :rtype: maddux.robot.Arm
    """
    L1 = Link(0, 0, 0, 1.571)
    L2 = Link(0, 0, 0, -1.571)
    L3 = Link(0, seg1_len, 0, -1.571)
    L4 = Link(0, seg2_len, 0, -1.571)
    L5 = Link(0, 0, seg3_len, -1.571)
    L6 = Link(0, 0, 0, 1.571)
    L7 = Link(0, 0, 0, 1.571)
    L8 = Link(0, 0, 0, 0)
    links = np.array([L1, L2, L3, L4, L5, L6, L7, L8])

    robot = Arm(links, q0, 'simple_3dof_arm', 4, base)
    return robot
コード例 #14
0
    def test_footer_links(self):
        links = (
            # MEN
            'New Arrivals',
            'Shirts',
            'Blazers'
            # WOMEN
        )

        LoginPage(self.browser).open()
        for link in links:
            Link(self.browser, 'Men').hover()
            Link(self.browser, link).click()
            self.assertTrue(Header(self.browser, link).is_visible)
            self.assertIn(link, self.browser.title)
コード例 #15
0
ファイル: repeater.py プロジェクト: Maxsash/Quantum-Internet
    def handle_message(self, msg):
        if msg['msg'] == "entanglement swapping done":
            # update connections table
            self.handle_swap_success(..., ...)
            # retitle the message and forward it.
            # Note that the msg contains two measurement results.
            msg['msg'] = "entanglement swapping corrections"
            self.send_message(remote_repeater, msg)
        elif msg['msg'] == "entanglement swapping corrections":
            measurement_result1 = msg['measurement_result1']
            measurement_result2 = msg['measurement_result2']
            # assume we have received the qubit already.
            # ask the repeaterHardware to apply corrections.
            self.hardware.apply_swap_corrections(qubitId,
                                                       measurement_result1, 
                                                       measurement_result2)
        elif msg['msg'] == "entanglement swapping corrections applied":
            # update connections table
#             self.handle_swap_success(..., ...)
            return
        elif msg['msg'] == "received qubit":
            return
        elif msg['msg'] == "received link qubit":
            sender = msg['sender'].parent_repeater # sender is a node hardware
            side = "left" if sender in (self.left_cable.node1, self.left_cable.node2) else "right"
            if side == "left":
                self.left_link = sender.right_link
                self.left_link.node2 = self
            else:
                self.right_link = sender.left_link
                self.right_link.node2 = self
            # notify the parent repeater chain
            if self.parent_repeater_chain:
                msg = {'msg' : "link created",
                       'link': self.left_link if side == "left" else self.right_link,
                       'side': side}
                self.send_message(self.parent_repeater_chain)
        elif msg['msg'] == "sent link qubit":
            receiver = msg['receiver'].parent_repeater # change this to parent node throughout
            side = "left" if receiver in (self.left_cable.node1, self.left_cable.node2) else "right"
            if side == "left":
                self.left_link = Link()
                self.left_link.node1 = self
            else:
                self.right_link = Link()
                self.right_link.node1 = self
        else:
            print("received unknown message")
コード例 #16
0
    def post(self):
        user = users.get_current_user()
        if user:
            containers = Container.query(Container.user == user)
            cont = None
            if not containers.iter().has_next():
                cont = Container(user = user)
                cont.put()
            else:
                cont = containers.iter().next()
            check = True
            for link in cont.links:
                if link.name == self.request.get("name"):
                    check = False
                    break

            if check:
                url = self.request.get("url")
                url = url if url.startswith("http://") or url.startswith("https://") else "http://" + url
                cont.links.append(Link(name = self.request.get("name"), url = url, tags = self.request.get("tags")))
                cont.put()
                time.sleep(1)
            else:
                self.set_flash("danger", "duplicated-name")

            self.redirect("/")

        else:
            self.set_flash("danger", "not-logged-in")
            self.redirect("/")
コード例 #17
0
 def handleChanges(self):
     """Handle changes to links. Run this method in a separate thread.
        Uses a priority queue to track time of next change"""
     startTime = time.time()*1000
     while not self.changes.empty():
         changeTime, target, change = self.changes.get()
         currentTime = time.time()*1000
         waitTime = (changeTime*self.latencyMultiplier + startTime) - currentTime
         if waitTime > 0:
             time.sleep(waitTime/float(1000))
         # link changes
         if change == "up":
             addr1, addr2, p1, p2, c12, c21 = target
             link = Link(addr1, addr2, c12, c21, self.latencyMultiplier)
             self.links[(addr1,addr2)] = (p1, p2, c12, c21, link)
             self.routers[addr1].changeLink(("add", p1, addr2, link, c12))
             self.routers[addr2].changeLink(("add", p2, addr1, link, c21))
         elif change == "down":
             addr1, addr2, = target
             p1, p2, _, _, link = self.links[(addr1, addr2)]
             self.routers[addr1].changeLink(("remove", p1))
             self.routers[addr2].changeLink(("remove", p2))
         # update visualization
         if hasattr(Network, "visualizeChangesCallback"):
             Network.visualizeChangesCallback(change, target)
コード例 #18
0
 def handleChanges(self):
     """Handle changes to links. Run this method in a separate thread.
        Uses a priority queue to track time of next change"""
     startTime = time.time()*1000
     while not self.changes.empty():
         changeTime, target, change = self.changes.get()
         currentTime = time.time()*1000
         waitTime = (changeTime*self.latencyMultiplier + startTime) - currentTime
         if waitTime > 0:
             time.sleep(waitTime/float(1000))
         # link changes
         if change == "up":
             addr1, addr2, p1, p2, c12, c21 = target
             link = Link(addr1, addr2, c12, c21, self.latencyMultiplier)
             # since we have change,so we need to add link to links
             self.links[(addr1,addr2)] = (p1, p2, c12, c21, link)
             # samething happens, routers need to change(add) link
             self.routers[addr1].changeLink(("add", p1, addr2, link, c12))
             self.routers[addr2].changeLink(("add", p2, addr1, link, c21))
         elif change == "down":
             addr1, addr2, = target
             # samething happens, we need to get the ports of the original link
             p1, p2, _, _, link = self.links[(addr1, addr2)]
             # then we remove the link from these ports
             self.routers[addr1].changeLink(("remove", p1))
             self.routers[addr2].changeLink(("remove", p2))
         # update visualization
         if hasattr(Network, "visualizeChangesCallback"):
             Network.visualizeChangesCallback(change, target)
コード例 #19
0
ファイル: BadLinks.py プロジェクト: SashaOcheev/TPO
 def _handleResource(self):
     while (not (self.__queue.isEnd())):
         currentURL = self.__queue.pop()
         if (self.__rsrc in currentURL.getByteRef()):
             links = currentURL.getAllLinks()
         for i in links:
             self.__queue.push(Link(i))
コード例 #20
0
def readLinkFile(netname):
    nodesByID={}
    linksByID={}
    minSpeedLimit=10000 #km/hr
    with open(inputsDirectory+'/'+netname+'/Links.txt','r') as f:
#    with open('/Users/vpandey/Box Sync/UT Acads/PhD Dissertation/Modeling/MEME_DRL/gym-meme/gym_meme/envs/inputs/'+netname+'/Links.txt','r') as f:
        next(f) # skip headings
        reader=csv.reader(f,delimiter='\t')
        for fID, tID, l,c,jD,ffs,bws,cl,ini in reader:
            fID=int(fID); tID=int(tID)
            l= float(l); c=float(c); jD=float(jD)
            ffs=float(ffs); bws=float(bws)
            if fID not in nodesByID:
                n= Node(fID)
                nodesByID[fID]=n
            if tID not in nodesByID:
                n=Node(tID)
                nodesByID[tID]=n
            fromNode = nodesByID[fID]
            toNode = nodesByID[tID]
            linkID = fID*100+tID
            l= Link(linkID, fromNode, toNode, l, c, jD, ffs, bws, cl)
            if ffs<minSpeedLimit:
                minSpeedLimit=ffs
            linksByID[linkID]=l
    return nodesByID,linksByID, minSpeedLimit
コード例 #21
0
def load_topology(p_file_path, p_link_list, p_scale=0):
    """

    :param p_file_path:
    :type p_file_path: str
    :param p_link_list:
    :type p_link_list: dict
    :return:
    """
    f = open(p_file_path, 'r')
    line = f.readline()  # 1行を文字列として読み込む(改行文字も含まれる)
    node_count = int(line)
    # ノード集合
    nodes = range(1, node_count + 1)
    line = f.readline()

    while line:
        data = line[:-1].split(' ')
        if len(data) == 3 and data[0].isdigit() and data[1].isdigit(
        ) and data[2].isdigit():
            if p_scale == 0:
                p_scale = get_scale_rand()
            p_link_list[(int(data[0]),
                         int(data[1]))] = Link(distance=int(data[2]),
                                               bandwidth=100,
                                               failure_rate=0,
                                               shape=get_shape(),
                                               scale=p_scale,
                                               age=get_initial_age(p_scale))
        line = f.readline()
    f.close()
    return (node_count, p_link_list)
コード例 #22
0
    def export(self):
        l = Link(self.url, self.source_url)
        self.url_id = l.url_id
        return {
            "url": l.url,
            "url_id": self.url_id,
            "link_id": l.subdomain + "_" + l.domain,
            "domain": l.domain,
            "subdomain": l.subdomain,
            "extension": l.extension,
            "filetype": l.filetype,
            "date": [dt.now()],
            "source_url": self.source_url,
            "title": self.title,
            "cited_links": self.links,
            "cited_links_ids": self.domain_ids,
            "cited_domains": self.domains,
            "html": self.html,
            "text": self.text,
            "depth": self.depth,

            #"keywords": self.keywords,
            #"description": self.description,
            "meta": self.meta,
            "crawl_nb": 0,
            "status": [True],
            "msg": ["Ok"]
            #"lang": self.metalang,
        }
コード例 #23
0
 def fetch_domains_id(self):
     self.domain_ids = []
     for n in self.links:
         url = Link(n, self.url)
         if url.is_valid():
             self.domain_ids.append(url.netloc)
     return self.domain_ids
コード例 #24
0
 def fetch_domains(self):
     self.domains = []
     for n in self.links:
         url = Link(n, self.url)
         if url.is_valid():
             self.domains.append(url.domain)
     return self.domains
コード例 #25
0
    def fetch_links(self):
        ''' extract raw_links and domains '''
        self.domains = []
        self.links = []
        self.domain_ids = []
        #self.urls_ids = []
        links = [n.get('href') for n in self.doc.find_all("a")]

        links = [
            n for n in links
            if n is not None and n != "" and n != "/" and n[0] != "#"
        ]

        for url in links:
            if url.startswith('mailto'):
                pass
            if url.startswith('javascript'):
                pass
            else:
                l = Link(url)
                url, domain, domain_id = l.clean_url(url, self.url)
                self.domains.append(domain)
                self.links.append(url)
                self.domain_ids.append(domain_id)
        return (self.links, self.domains, self.domain_ids)
コード例 #26
0
 def test_node_from(self):
     print("test_node_from")
     node_a = Node("A")
     node_b = Node("B")
     link = Link(node_a, node_b)
     self.assertEqual(link.node_from(node_a), node_b)
     self.assertEqual(link.node_from(node_b), node_a)
コード例 #27
0
 def test_name(self):
     print("test_name")
     node_a = Node("A")
     node_b = Node("B")
     link = Link(node_a, node_b)
     self.assertEqual(link.name(node_a), "A-B")
     self.assertEqual(link.name(node_b), "B-A")
コード例 #28
0
ファイル: crawler.py プロジェクト: BitsBlender/LinkCrawler
 def __get_links(self, link):
     try:
         response = self.downloader.getContent(link)
         if response.status_code == 200:
             self.lookup[link].crawled = True
             links = self.parser.parseLinks(response.text)
             logging.debug(link + ' crawled' + str(len(links)))
             self.lookup[link].extracted_links_count = len(links)
             for link in links:
                 self.q.put(link)
                 if not link in self.lookup:
                     self.links_count += 1
                     self.file.write(link + '\n')
                     self.lookup[link] = Link()
         else:
             logging.error(link + ' failed to get response with code ' +
                           str(response.status_code))
             self.lookup[link].res_code = response.status_code
             self.lookup[link].attempts += 1
             if self.lookup[link].attempts < Crawler.MAT_RETREIS:
                 self.q.put(link)
             else:
                 logging.error(link + ' MAX_RETRIES Exceeded')
     except Exception as err:
         logging.error(err)
コード例 #29
0
 def get_link_board_vertical(suffix):
     return [[
         Link("r%ic%i-%s" % (r, c, suffix),
              link_length,
              free_flow_velocity=random.choice(velocities_kmh) * 0.277)
         for c in range(edge_length)
     ] for r in range(edge_length - 1)]
コード例 #30
0
 def add_link(self, v, w, element):
     if not v in self._structure or not w in self._structure:
         return None
     e = Link(v, w, element)
     self._structure[v][w] = e
     self._structure[w][v] = e
     return e