def do_test(arch, clk, phy, seed): rand = random.Random() rand.seed(seed) dev_address = get_dut_address() ep_loopback = 3 # The inter-frame gap is to give the DUT time to print its output packets = [] data_val = 0; pkt_length = 20 data_pid = 0x3 #DATA0 for pkt_length in range(10, 20): # min 237 # increased to 277 when SETUP/OUT checking added AppendOutToken(packets, ep_loopback, inter_pkt_gap=277) packets.append(TxDataPacket(rand, data_start_val=data_val, length=pkt_length, pid=data_pid)) #DATA0 packets.append(RxHandshakePacket(timeout=9)) data_val = data_val + pkt_length data_pid = data_pid ^ 8 do_rx_test(arch, clk, phy, packets, __file__, seed, level='smoke', extra_tasks=[])
def do_test(arch, tx_clk, tx_phy, seed): rand = random.Random() rand.seed(seed) dev_address = get_dut_address() ep = 1 # The inter-frame gap is to give the DUT time to print its output packets = [] dataval = 0 AppendOutToken(packets, ep) packets.append( TxDataPacket(rand, data_start_val=dataval, length=10, pid=0x3)) #DATA0 packets.append(RxHandshakePacket()) # Note, quite big gap to allow checking. dataval += 10 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=11, pid=0xb)) #DATA1 packets.append(RxHandshakePacket()) dataval += 11 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=12, bad_crc=True, pid=0x3)) #DATA0 # Bad CRC - dont expect ACK #packets.append(RxHandshakePacket()) #Due to bad CRC, XUD will not ACK and expect a resend of the same packet - so dont change PID dataval += 12 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=13, pid=0x3)) #DATA0 packets.append(RxHandshakePacket(timeout=9)) # PID toggle as normal dataval += 13 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=14, pid=0xb)) #DATA1 packets.append(RxHandshakePacket()) do_rx_test(arch, tx_clk, tx_phy, packets, __file__, seed, level='smoke', extra_tasks=[])
def do_test(arch, clk, phy, seed): rand = random.Random() rand.seed(seed) dev_address = get_dut_address() ep = 1 # The inter-frame gap is to give the DUT time to print its output packets = [] dataval = 0 AppendOutToken(packets, ep) packets.append( TxDataPacket(rand, data_start_val=dataval, length=10, pid=0x3)) #DATA0 packets.append(RxHandshakePacket()) # Note, quite big gap to allow checking. dataval += 10 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=11, pid=0xb)) #DATA1 packets.append(RxHandshakePacket()) #Pretend the ACK went missing. Re-send same packet. xCORE should ACK but throw pkt away AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=11, pid=0xb)) #DATA1 packets.append(RxHandshakePacket()) dataval += 11 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=12, pid=0x3)) #DATA0 packets.append(RxHandshakePacket()) dataval += 12 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=13, pid=0xb)) #DATA1 packets.append(RxHandshakePacket(timeout=9)) dataval += 13 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=14, pid=0x3)) #DATA0 packets.append(RxHandshakePacket()) do_rx_test(arch, clk, phy, packets, __file__, seed, level='smoke', extra_tasks=[])
def do_test(arch, tx_clk, tx_phy, seed): rand = random.Random() rand.seed(seed) dev_address = get_dut_address() ep = 2 # The inter-frame gap is to give the DUT time to print its output packets = [] dataval = 0 AppendInToken(packets, ep) packets.append( RxDataPacket(rand, data_start_val=dataval, length=10, pid=0x3)) #DATA0 packets.append(TxHandshakePacket()) dataval += 10 AppendInToken(packets, ep, inter_pkt_gap=5000) packets.append( RxDataPacket(rand, data_start_val=dataval, length=11, pid=0xb)) #DATA1 packets.append(TxHandshakePacket()) #pretend CRC got broken on way to host and dont send ACK dataval += 11 AppendInToken(packets, ep, inter_pkt_gap=5000) packets.append( RxDataPacket(rand, data_start_val=dataval, length=12, pid=0x3)) #DATA0 #packets.append(TxHandshakePacket()) #xCore should resend same packet again.. AppendInToken(packets, ep, inter_pkt_gap=5000) packets.append( RxDataPacket(rand, data_start_val=dataval, length=12, pid=0x3)) #DATA0 packets.append(TxHandshakePacket()) dataval += 12 AppendInToken(packets, ep, inter_pkt_gap=5000) packets.append( RxDataPacket(rand, data_start_val=dataval, length=13, pid=0xb)) #DATA1 packets.append(TxHandshakePacket()) dataval += 13 AppendInToken(packets, ep, inter_pkt_gap=5000) packets.append( RxDataPacket(rand, data_start_val=dataval, length=14, pid=0x3)) #DATA0 packets.append(TxHandshakePacket()) # Note, quite big gap to allow checking. do_rx_test(arch, tx_clk, tx_phy, packets, __file__, seed, level='smoke', extra_tasks=[])
def do_test(arch, clk, phy, seed): rand = random.Random() rand.seed(seed) dev_address = get_dut_address() ep = 1 # The inter-frame gap is to give the DUT time to print its output packets = [] dataval = 0 # Ping EP 2, expect NAK AppendPingToken(packets, 2) packets.append(RxHandshakePacket(pid=0x5a)) # And again AppendPingToken(packets, 2) packets.append(RxHandshakePacket(pid=0x5a)) # Send packet to EP 1, xCORE should mark EP 2 as ready AppendOutToken(packets, ep) packets.append( TxDataPacket(rand, data_start_val=dataval, length=10, pid=0x3)) #DATA0 packets.append(RxHandshakePacket()) # Ping EP 2 again - expect ACK AppendPingToken(packets, 2, inter_pkt_gap=6000) packets.append(RxHandshakePacket()) # And again.. AppendPingToken(packets, 2) packets.append(RxHandshakePacket()) # Send out to EP 2.. expect ack AppendOutToken(packets, 2, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=10, pid=0x3)) #DATA0 packets.append(RxHandshakePacket()) # Re-Ping EP 2, expect NAK AppendPingToken(packets, 2) packets.append(RxHandshakePacket(pid=0x5a)) # And again AppendPingToken(packets, 2) packets.append(RxHandshakePacket(pid=0x5a)) do_rx_test(arch, clk, phy, packets, __file__, seed, level='smoke', extra_tasks=[])
def do_test(arch, tx_clk, tx_phy, seed): rand = random.Random() rand.seed(seed) dev_address = get_dut_address() ep = 0 # The inter-frame gap is to give the DUT time to print its output packets = [] AppendSetupToken(packets, ep) packets.append(TxDataPacket(rand, length=3, pid=3, bad_crc=True)) #packets.append(RxHandshakePacket()) AppendSetupToken(packets, ep) packets.append(TxDataPacket(rand, length=8, pid=3, bad_crc=False)) packets.append(RxHandshakePacket(timeout=11)) # Note, quite big gap to allow checking. packets.append( TokenPacket( inter_pkt_gap=2000, pid=0xe1, #OUT address=dev_address, endpoint=ep)) packets.append(TxDataPacket(rand, length=10, pid=0xb)) packets.append(RxHandshakePacket()) packets.append( TokenPacket( inter_pkt_gap=2000, pid=0x69, #OUT address=dev_address, endpoint=ep)) #Expect 0-length packets.append(RxDataPacket(rand, length=0, pid=0x4b)) # Send ACK packets.append(TxHandshakePacket()) do_rx_test(arch, tx_clk, tx_phy, packets, __file__, seed, level='smoke', extra_tasks=[])
def do_test(arch, tx_clk, tx_phy, seed): rand = random.Random() rand.seed(seed) dev_address = get_dut_address() ep = 0 # The inter-frame gap is to give the DUT time to print its output packets = [] AppendSetupToken(packets, ep) # DATA0 data packet with bad CRC packets.append(TxDataPacket(rand, length=8, pid=3, bad_crc=True)) # Dont expect an ACK due to bad CRC #packets.append(RxHandshakePacket()) AppendSetupToken(packets, ep, inter_pkt_gap=400) packets.append(TxDataPacket(rand, length=8, pid=3, bad_crc=False)) packets.append(RxHandshakePacket(timeout=11)) # Note, quite big gap to allow checking. AppendOutToken(packets, ep, inter_pkt_gap=2000) packets.append(TxDataPacket(rand, length=10, pid=0xb)) packets.append(RxHandshakePacket()) #IN AppendInToken(packets, ep, inter_pkt_gap=500) #Expect 0-length packets.append(RxDataPacket(rand, length=0, pid=0x4b)) # Send ACK packets.append(TxHandshakePacket()) do_rx_test(arch, tx_clk, tx_phy, packets, __file__, seed, level='smoke', extra_tasks=[])
def test_dut_online_after_reboot(self, dut, execute_helper): """Wait for the DUT to come back online. The previous test causes the DUT to reboot. """ dut_address = "" # Wait some time before discovering again the DUT time.sleep(20) while not dut_address: dut_address = get_dut_address(dut, execute_helper) if dut_address: print("DUT {} is online again".format(dut_address)) break print("DUT is still offline. Trying again...") assert dut_address is not None
def test_dut_online_after_reboot(self, dut, execute_helper, update_component_name): """Wait for the DUT to be back online after the reboot.""" # Wait some time before attempting to discover the DUT if update_component_name not in ["sample-app", "multi-app-all-good"]: time.sleep(30) dut_address = "" num_retries = 0 while not dut_address and num_retries < 30: dut_address = get_dut_address(dut, execute_helper) if dut_address: print("DUT {} is online again".format(dut_address)) else: print("DUT is still offline. Trying again...") num_retries += 1 assert dut_address else: pytest.skip("Don't reboot for app updates")
def do_test(arch, tx_clk, tx_phy, seed): rand = random.Random() rand.seed(seed) dev_address = get_dut_address() ep = 1 # The inter-frame gap is to give the DUT time to print its output packets = [] dataval = 0 AppendOutToken(packets, ep) packets.append( TxDataPacket(rand, data_start_val=dataval, length=10, pid=0x3)) #DATA0 packets.append(RxHandshakePacket()) # Assert RxError during packet dataval += 10 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=11, pid=0xb, rxe_assert_time=5)) #DATA1 # xCORE should ignore the packet and not handshake... #packets.append(RxHandshakePacket()) # Re-send.. AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=11, pid=0xb, rxe_assert_time=0)) #DATA1 packets.append(RxHandshakePacket()) dataval += 11 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=12, pid=0x3)) #DATA0 packets.append(RxHandshakePacket(timeout=9)) dataval += 12 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=13, pid=0xb, rxe_assert_time=1)) #DATA1 #packets.append(RxHandshakePacket()) #resend AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=13, pid=0xb)) #DATA1 packets.append(RxHandshakePacket()) dataval += 13 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append( TxDataPacket(rand, data_start_val=dataval, length=14, pid=0x3)) #DATA0 packets.append(RxHandshakePacket()) do_rx_test(arch, tx_clk, tx_phy, packets, __file__, seed, level='smoke', extra_tasks=[])
def dut_addr(dut, execute_helper): """Fixture to return the DUT address.""" return get_dut_address(dut, execute_helper)
def do_test(arch, tx_clk, tx_phy, seed): rand = random.Random() rand.seed(seed) dev_address = get_dut_address() ep = 1 # The inter-frame gap is to give the DUT time to print its output packets = [] dataval = 0; # Reserved PID packets.append(TokenPacket( inter_pkt_gap=2000, pid=0x0, address=dev_address, endpoint=ep)) # Valid IN but not for us.. packets.append(TokenPacket( inter_pkt_gap=200, pid=0x69, address=dev_address, endpoint=ep, valid=False)) # Valid OUT but not for us.. packets.append(TokenPacket( inter_pkt_gap=200, pid=0xe1, address=dev_address, endpoint=ep, valid=False)) AppendOutToken(packets, ep) packets.append(TxDataPacket(rand, data_start_val=dataval, length=10, pid=0x3)) #DATA0 packets.append(RxHandshakePacket()) # Valid SETUP but not for us.. packets.append(TokenPacket( inter_pkt_gap=200, pid=0x2d, address=dev_address, endpoint=ep, valid=False)) # Note, quite big gap to allow checking. dataval += 10 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append(TxDataPacket(rand, data_start_val=dataval, length=11, pid=0xb)) #DATA1 packets.append(RxHandshakePacket()) # Valid PING but not for us.. packets.append(TokenPacket( inter_pkt_gap=200, pid=0xb4, address=dev_address, endpoint=ep, valid=False)) dataval += 11 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append(TxDataPacket(rand, data_start_val=dataval, length=12, pid=0x3)) #DATA0 packets.append(RxHandshakePacket()) dataval += 12 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append(TxDataPacket(rand, data_start_val=dataval, length=13, pid=0xb)) #DATA1 packets.append(RxHandshakePacket()) dataval += 13 AppendOutToken(packets, ep, inter_pkt_gap=6000) packets.append(TxDataPacket(rand, data_start_val=dataval, length=14, pid=0x3)) #DATA0 packets.append(RxHandshakePacket()) do_rx_test(arch, tx_clk, tx_phy, packets, __file__, seed, level='smoke', extra_tasks=[])