def test_node_pub_addr(self): self.node_q.append(self.node1) self.node_q.append(self.node2) # Client side drain_msg_queue(self.node_q, self.pub_q, addr=self.addr) # server side res = self.service.process() res = self.service.process() self.assertEqual(list(self.node_q), []) self.assertEqual(list(self.pub_q), ['deadbeef01', '20beefdead']) self.assertEqual(res, [self.node1, self.node2])
def test_node_pub_offline(self): self.node_q.append(self.node1) self.node_q.append(self.node2) self.node_q.append(self.node1) # Client side drain_msg_queue(self.node_q, tmp_q=self.tmp_q, addr=self.addr, method='offline') # server side res = self.service.process() res = self.service.process() res = self.service.process() self.assertEqual(list(self.node_q), []) self.assertEqual(self.off_list, ['deadbeef01', '20beefdead']) self.assertEqual(res, [self.node1, self.node2])
async def main(): """State cache updater to retrieve data from a local ZeroTier node.""" async with aiohttp.ClientSession() as session: ZT_API = get_token() client = ZeroTier(ZT_API, loop, session) try: logger.debug('{} node(s) in offline queue: {}'.format( len(off_q), list(off_q))) if len(off_q) > 0: drain_msg_queue(off_q, addr='127.0.0.1', method='offline') logger.debug('{} node(s) in wedged queue: {}'.format( len(wdg_q), list(wdg_q))) if len(wdg_q) > 0: drain_msg_queue(wdg_q, addr='127.0.0.1', method='wedged') logger.debug('{} node(s) in reg queue: {}'.format( len(reg_q), list(reg_q))) logger.debug('{} node(s) in wait queue: {}'.format( len(wait_q), list(wait_q))) manage_incoming_nodes(node_q, reg_q, wait_q) if len(reg_q) > 0: drain_msg_queue(reg_q, pub_q, addr='127.0.0.1') # get status details of the local node and update state await client.get_data('status') node_id = handle_node_status(client.data, cache) # get status details of the node peers await client.get_data('peer') peer_data = client.data logger.info('Found {} peers'.format(len(peer_data))) peer_keys = find_keys(cache, 'peer') logger.debug('Returned peer keys: {}'.format(peer_keys)) load_cache_by_type(cache, peer_data, 'peer') num_leaves = 0 peerStatus = get_peer_status(cache) for peer in peerStatus: if peer['role'] == 'LEAF': if peer['identity'] not in reg_q: if peer['identity'] not in node_q: node_q.append(peer['identity']) logger.debug('Adding LEAF node id: {}'.format( peer['identity'])) populate_leaf_list(node_q, wait_q, tmp_q, peer) num_leaves = num_leaves + 1 if num_leaves == 0 and st.leaf_nodes != []: st.leaf_nodes = [] if st.leaf_nodes != []: logger.debug('Found {} leaf node(s)'.format(num_leaves)) logger.debug('{} node(s) in node queue: {}'.format( len(node_q), list(node_q))) logger.debug('{} node(s) in reg queue: {}'.format( len(reg_q), list(reg_q))) logger.debug('{} node(s) in wait queue: {}'.format( len(wait_q), list(wait_q))) manage_incoming_nodes(node_q, reg_q, wait_q) if len(reg_q) > 0: drain_msg_queue(reg_q, pub_q, addr='127.0.0.1') logger.debug('{} node(s) in node queue: {}'.format( len(node_q), list(node_q))) logger.debug('{} node(s) in pub queue: {}'.format( len(pub_q), list(pub_q))) logger.debug('{} node(s) in active queue: {}'.format( len(cfg_q), list(cfg_q))) except Exception as exc: logger.error('peerstate exception was: {}'.format(exc)) raise exc