for lsnr in listeners: # `all_rx_msg` contains a list of (msg_content, (src_addr, src_port)). verify( len(lsnr.all_rx_msg) == 0 or all([ msg[1][0] != sender.src_addr and msg[1][1] != sender.src_port for msg in lsnr.all_rx_msg ])) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 4 wpan.Node.set_time_speedup_factor(speedup) r1 = wpan.Node() r2 = wpan.Node() r3 = wpan.Node() r4 = wpan.Node() fed = wpan.Node() sed = wpan.Node() all_routers = [r1, r2, r3, r4] all_nodes = all_routers + [fed, sed] # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # -----------------------------------------------------------------------------------------------------------------------
start_time = time.time() while not all([(new_channel == int(node.get(wpan.WPAN_CHANNEL), 0)) for node in nodes]): if time.time() - start_time > wait_time: print('Took too long to switch to channel {} ({}>{} sec)'.format( new_channel, time.time() - start_time, wait_time)) exit(1) time.sleep(0.1) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances router = wpan.Node() c1 = wpan.Node() c2 = wpan.Node() all_nodes = [router, c1, c2] # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # ----------------------------------------------------------------------------------------------------------------------- # Build network topology router.form('announce-tst', channel=11)
# Test description: Test MeshCop Joiner and Commissioner behavior # # This test covers Thread commissioning with a single commissioner and # joiner device. test_name = __file__[:-3] if __file__.endswith('.py') else __file__ print('-' * 120) print('Starting \'{}\''.format(test_name)) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 4 wpan.Node.set_time_speedup_factor(speedup) c = wpan.Node() j = wpan.Node() # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # ----------------------------------------------------------------------------------------------------------------------- # Build network topology c.form('meshcop') # ----------------------------------------------------------------------------------------------------------------------- # Test implementation
# # Verify router table entries on a network with 4 routers: # {r1, r2, r3} forming a loop with r4 connecting to r3. # test_name = __file__[:-3] if __file__.endswith('.py') else __file__ print('-' * 120) print('Starting \'{}\''.format(test_name)) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 4 wpan.Node.set_time_speedup_factor(speedup) r1 = wpan.Node() r2 = wpan.Node() r3 = wpan.Node() r4 = wpan.Node() c4 = wpan.Node() # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # ----------------------------------------------------------------------------------------------------------------------- # Build network topology # # # r1 ------ r2
# POSSIBILITY OF SUCH DAMAGE. from wpan import verify import wpan # ----------------------------------------------------------------------------------------------------------------------- # Test description: simple wpanctl get and set commands test_name = __file__[:-3] if __file__.endswith('.py') else __file__ print('-' * 120) print('Starting \'{}\''.format(test_name)) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances node = wpan.Node() # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # ----------------------------------------------------------------------------------------------------------------------- # Test implementation verify(node.get(wpan.WPAN_STATE) == wpan.STATE_OFFLINE) # set some of properties and check and verify that the value is indeed # changed... node.set(wpan.WPAN_NAME, 'test-network')
# - Verify that `sed2`'s address is present in `r2` (its parent) "Thread:ChildTable:Addresses". # - Verify that addresses/prefixes are retained by wpantund over NCP reset. # - Verify that when an IPv6 address is removed from network interface, its corresponding prefix is also removed from # all nodes. test_name = __file__[:-3] if __file__.endswith('.py') else __file__ print '-' * 120 print 'Starting \'{}\''.format(test_name) #----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 4 wpan.Node.set_time_speedup_factor(speedup) r1 = wpan.Node() fed1 = wpan.Node() r2 = wpan.Node() sed2 = wpan.Node() all_nodes = [r1, fed1, r2, sed2] #----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() #----------------------------------------------------------------------------------------------------------------------- # Build network topology # # r1 ---- r2
mode & wpan.THREAD_MODE_FLAG_RX_ON_WHEN_IDLE != 0)) verify(entry.is_ftd() == ( mode & wpan.THREAD_MODE_FLAG_FULL_THREAD_DEV != 0)) verify(entry.is_full_net_data() == ( mode & wpan.THREAD_MODE_FLAG_FULL_NETWORK_DATA != 0)) verify(entry.is_sec_data_req() == ( mode & wpan.THREAD_MODE_FLAG_SECURE_DATA_REQUEST != 0)) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 4 wpan.Node.set_time_speedup_factor(speedup) parent = wpan.Node() child1 = wpan.Node() child2 = wpan.Node() # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # ----------------------------------------------------------------------------------------------------------------------- # Build network topology # parent.form("ModeChangeReset") child1.join_node(parent, wpan.JOIN_TYPE_END_DEVICE)
def verify_address(node_list, prefix): """ This function verifies that all nodes in the `node_list` contain an IPv6 address with the given `prefix`. """ for node in node_list: all_addrs = wpan.parse_list(node.get(wpan.WPAN_IP6_ALL_ADDRESSES)) verify(any([addr.startswith(prefix[:-1]) for addr in all_addrs])) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 4 wpan.Node.set_time_speedup_factor(speedup) leader = wpan.Node() parent = wpan.Node() child = wpan.Node() # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # ----------------------------------------------------------------------------------------------------------------------- # Build network topology leader.form('multi-addr-test') leader.whitelist_node(parent) parent.whitelist_node(leader)
from wpan import verify # ----------------------------------------------------------------------------------------------------------------------- # Test description: Verify transmission of data polls and poll interval change. test_name = __file__[:-3] if __file__.endswith('.py') else __file__ print('-' * 120) print('Starting \'{}\''.format(test_name)) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 4 wpan.Node.set_time_speedup_factor(speedup) parent = wpan.Node() child = wpan.Node() # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # ----------------------------------------------------------------------------------------------------------------------- # Build network topology # parent.form("poll-interval") child.join_node(parent, wpan.JOIN_TYPE_SLEEPY_END_DEVICE)
# | | # c2 (15.4) c3 (15.4) # # c3 is used for quick router promotion of r3. # test_name = __file__[:-3] if __file__.endswith('.py') else __file__ print('-' * 120) print('Starting \'{}\''.format(test_name)) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 4 wpan.Node.set_time_speedup_factor(speedup) r1 = wpan.Node(wpan.NODE_TREL) r2 = wpan.Node(wpan.NODE_15_4_TREL) r3 = wpan.Node(wpan.NODE_15_4) c2 = wpan.Node(wpan.NODE_15_4) c3 = wpan.Node(wpan.NODE_15_4) # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # ----------------------------------------------------------------------------------------------------------------------- # Build network topology # r1.allowlist_node(r2)
# # This test verifies that address cache entry associated with a SED child # addresses is removed from new parent node ensuring we would not have a # routing loop. test_name = __file__[:-3] if __file__.endswith('.py') else __file__ print('-' * 120) print('Starting \'{}\''.format(test_name)) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 4 wpan.Node.set_time_speedup_factor(speedup) r1 = wpan.Node() r2 = wpan.Node() r3 = wpan.Node() c = wpan.Node() c3 = wpan.Node() # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # ----------------------------------------------------------------------------------------------------------------------- # Build network topology # # r3 ---- r1 ---- r2 # | |
# ----------------------------------------------------------------------------------------------------------------------- # Test description: discover scan test_name = __file__[:-3] if __file__.endswith('.py') else __file__ print('-' * 120) print('Starting \'{}\''.format(test_name)) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances NUM_NODES = 5 nodes = [] for i in range(NUM_NODES): nodes.append(wpan.Node()) scanner = wpan.Node() # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # ----------------------------------------------------------------------------------------------------------------------- # Build network topology for node in nodes: node.form(node.interface_name) # -----------------------------------------------------------------------------------------------------------------------
# ----------------------------------------------------------------------------------------------------------------------- # Test description: Test active scan with nodes supporting different radios # test_name = __file__[:-3] if __file__.endswith('.py') else __file__ print('-' * 120) print('Starting \'{}\''.format(test_name)) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 1 wpan.Node.set_time_speedup_factor(speedup) n1 = wpan.Node(wpan.NODE_15_4) n2 = wpan.Node(wpan.NODE_TREL) n3 = wpan.Node(wpan.NODE_15_4_TREL) s1 = wpan.Node(wpan.NODE_15_4) s2 = wpan.Node(wpan.NODE_TREL) s3 = wpan.Node(wpan.NODE_15_4_TREL) # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # ----------------------------------------------------------------------------------------------------------------------- # Build network topology n1.form("n1", channel='20')
verify(p.is_config() == configure) verify(p.is_preferred() == preferred) verify(p.priority == priority) break else: raise wpan.VerifyError("Did not find prefix {} on node {}".format( prefix, node)) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 25 wpan.Node.set_time_speedup_factor(speedup) r1 = wpan.Node() r2 = wpan.Node() c1 = wpan.Node() c2 = wpan.Node() # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # ----------------------------------------------------------------------------------------------------------------------- # Build network topology # r1.form("partition")
verify(p.is_config() == configure) verify(p.is_preferred() == preferred) verify(p.priority == priority) break else: print "Did not find prefix {} on node {}".format(prefix, node) exit(1) #----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 4 wpan.Node.set_time_speedup_factor(speedup) r1 = wpan.Node() r2 = wpan.Node() sc1 = wpan.Node() sc2 = wpan.Node() all_nodes = [r1, r2, sc1, sc2] #----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() #----------------------------------------------------------------------------------------------------------------------- # Build network topology r1.whitelist_node(r2)
# Test description: Test MeshCop Joiner, Commissioner and Joiner-router behavior # # This test covers Thread commissioning with a commissioner, a joiner-router and # joiner device. test_name = __file__[:-3] if __file__.endswith('.py') else __file__ print('-' * 120) print('Starting \'{}\''.format(test_name)) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 4 wpan.Node.set_time_speedup_factor(speedup) r1 = wpan.Node() r2 = wpan.Node() c2 = wpan.Node() joiner = wpan.Node() # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # ----------------------------------------------------------------------------------------------------------------------- # Build network topology # # r1 ---------- r2 # (commissioner) (joiner-router) # |
print 'Starting \'{}\''.format(test_name) #----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 4 wpan.Node.set_time_speedup_factor(speedup) NUM_ROUTERS = 4 routers = [] sed_children = [] fed_children = [] for index in range(NUM_ROUTERS): routers.append(wpan.Node()) sed_children.append(wpan.Node()) fed_children.append(wpan.Node()) fed_children.append(wpan.Node()) all_nodes = routers + sed_children + fed_children #----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() #----------------------------------------------------------------------------------------------------------------------- # Build network topology #
# POSSIBILITY OF SUCH DAMAGE. import wpan from wpan import verify # ----------------------------------------------------------------------------------------------------------------------- # Test description: Check insecure data transmission during joining. test_name = __file__[:-3] if __file__.endswith('.py') else __file__ print('-' * 120) print('Starting \'{}\''.format(test_name)) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances node1 = wpan.Node() node2 = wpan.Node() # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # ----------------------------------------------------------------------------------------------------------------------- # Build network topology node1.form("insec-join-test") # ----------------------------------------------------------------------------------------------------------------------- # Test implementation
# / | \ # / | \ # c1 c2 c3 # (15.4) (trel) (trel+15.4) test_name = __file__[:-3] if __file__.endswith('.py') else __file__ print('-' * 120) print('Starting \'{}\''.format(test_name)) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 4 wpan.Node.set_time_speedup_factor(speedup) parent = wpan.Node(wpan.NODE_15_4_TREL) c1 = wpan.Node(wpan.NODE_15_4) c2 = wpan.Node(wpan.NODE_TREL) c3 = wpan.Node(wpan.NODE_15_4_TREL) # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # ----------------------------------------------------------------------------------------------------------------------- # Test implementation WAIT_TIME = 5 # Verify that each node supports the correct radio links:
test_name = __file__[:-3] if __file__.endswith('.py') else __file__ print('-' * 120) print('Starting \'{}\''.format(test_name)) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 4 wpan.Node.set_time_speedup_factor(speedup) NUM_ROUTERS = 2 NUM_CHILDREN = 1 routers = [] for num in range(NUM_ROUTERS): routers.append(wpan.Node()) children = [] for num in range(NUM_CHILDREN): children.append(wpan.Node()) # end-device per router used for quick promotion to router role ed = [0] for num in range(1, NUM_ROUTERS): ed.append(wpan.Node()) all_nodes = routers + children + ed # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes
print( 'Took too long to switch to channel {} ({}>{} sec)'.format( new_channel, time.time() - start_time, wait_time ) ) exit(1) time.sleep(0.1) # ----------------------------------------------------------------------------------------------------------------------- # Creating `wpan.Nodes` instances speedup = 4 wpan.Node.set_time_speedup_factor(speedup) r1 = wpan.Node() r2 = wpan.Node() r3 = wpan.Node() sc1 = wpan.Node() ec1 = wpan.Node() sc2 = wpan.Node() sc3 = wpan.Node() all_nodes = [r1, r2, r3, sc1, ec1, sc2, sc3] # ----------------------------------------------------------------------------------------------------------------------- # Init all nodes wpan.Node.init_all_nodes() # -----------------------------------------------------------------------------------------------------------------------