Livt packages
Livt.Net
Version 1.4.1
Ethernet, IPv4, TCP, UDP, ARP, TFTP, and Telnet networking components for Livt hardware.
Published files (163)
- ethernet
- services
- tftp
- ArpCompositionChecks.lvt
- ArpPacketParserTest.lvt
- ArpResponderTest.lvt
- ChecksumApiTest.lvt
- ChecksumWordSumTest.lvt
- CompactPacketFieldsTest.lvt
- CountingPacketData.lvt
- EthernetFrameBuilderTest.lvt
- EthernetFrameParserTest.lvt
- EthernetLiteDeviceFixture.lvt
- EthernetLiteDriverTest.lvt
- EthernetLiteReceiveWindowTest.lvt
- EthernetLiteResetScenario.lvt
- EthernetLiteResetTest.lvt
- FaultingFrameData.lvt
- FaultingPacketData.lvt
- FrameCapacityTest.lvt
- FrameCompositionTest.lvt
- FrameForwarder.lvt
- FrameLinkTest.lvt
- FrameMii10Link.lvt
- FrameMiiLink.lvt
- FrameMiiPins.lvt
- GenericPacketTest.lvt
- IcmpCapacityChecks.lvt
- IcmpEchoResponderTest.lvt
- IcmpStorageBackendTest.lvt
- InternetChecksumTest.lvt
- Ipv4HeaderBuilderTest.lvt
- Ipv4HeaderChecksumTest.lvt
- Ipv4PacketFieldsTest.lvt
- Ipv4PacketParserTest.lvt
- MiiFrame10Test.lvt
- MiiFrameTest.lvt
- PacketConvenienceTest.lvt
- PacketDataTest.lvt
- PacketMetadataStub.lvt
- PacketMetadataTest.lvt
- PacketParserFailureTest.lvt
- PacketStorageParityTest.lvt
- RamIpv4PacketParserTest.lvt
- ReceiveContractChecks.lvt
- ScheduledWordSumTest.lvt
- SynAckCompositionChecks.lvt
- TcpChecksumTest.lvt
- TcpConnectionRecognizerTest.lvt
- TcpHeaderParserTest.lvt
- TcpMultiSessionArrayStorageTest.lvt
- TcpMultiSessionAutoStorageTest.lvt
- TcpMultiSessionDistributedStorageTest.lvt
- TcpMultiSessionMixedStorageTest.lvt
- TcpMultiSessionStorageChecks.lvt
- TcpMultiSessionTest.lvt
- TcpRamPacketTest.lvt
- TcpRetryTimerTest.lvt
- TcpSegmentBuilderTest.lvt
- TcpSegmentTest.lvt
- TcpStreamServerArrayStorageTest.lvt
- TcpStreamServerAutoStorageTest.lvt
- TcpStreamServerDistributedStorageTest.lvt
- TcpStreamServerMixedStorageTest.lvt
- TcpStreamServerStorageChecks.lvt
- TcpStreamServerTest.lvt
- TelnetSessionTest.lvt
- TransmitContractChecks.lvt
- UdpPacketTest.lvt
tests/PacketMetadataTest.lvt
namespace Livt.Net.Tests
using Livt.Net
/**
* Injects invalid metadata and read failures without allocating oversized frame buffers.
*/
@Test
component PacketMetadataTest
{
// Owned metadata stub and independently prepared protocol views.
payload: PacketMetadataStub
frame: EthernetFrame<PacketMetadataStub>
ip: Ipv4Packet<PacketMetadataStub>
echo: IcmpEchoReply<PacketMetadataStub>
/**
* Binds protocol views to the configurable source without preparing any packet.
*/
new()
{
payload = new PacketMetadataStub()
frame = new EthernetFrame<PacketMetadataStub>(payload)
ip = new Ipv4Packet<PacketMetadataStub>(payload)
echo = new IcmpEchoReply<PacketMetadataStub>(payload)
}
/**
* Checks metadata bounds and verifies that failed preparation clears earlier readiness.
*/
@Test
fn ChecksLimitsAndFailedReplacement()
{
frame.Invalidate()
ip.Invalidate()
echo.Invalidate()
var mac: byte[6] = [0x02, 0x01, 0x02, 0x03, 0x04, 0x05]
var address: byte[4] = [0x0A, 0x00, 0x00, 0x01]
var id: byte[2] = [0x00, 0x00]
var value: byte = 0x00
payload.Configure(1, 0x88B5, 17, true, -1)
assert frame.TryPrepare(mac, mac) == PacketDataResult.Success
assert frame.GetAvailableLength() == 60
assert frame.TryRead(12, value) == PacketDataResult.Success
assert value == 0x88
assert frame.TryRead(13, value) == PacketDataResult.Success
assert value == 0xB5
assert frame.TryRead(14, value) == PacketDataResult.Success
assert value == 0xA5
assert ip.TryPrepare(address, address, id) == PacketDataResult.Success
assert ip.GetAvailableLength() == 21
assert ip.TryRead(9, value) == PacketDataResult.Success
assert value == 0x11
frame.Invalidate()
ip.Invalidate()
payload.Configure(0, 0x0800, 1, false, -1)
assert frame.TryPrepare(mac, mac) == PacketDataResult.NotReady
assert ip.TryPrepare(address, address, id) == PacketDataResult.NotReady
payload.Configure(0, 0x0800, 1, true, -1)
assert frame.TryPrepare(mac, mac) == PacketDataResult.Invalid
assert ip.TryPrepare(address, address, id) == PacketDataResult.Invalid
payload.Configure(-1, 0x0800, 1, true, -1)
assert frame.TryPrepare(mac, mac) == PacketDataResult.Invalid
assert ip.TryPrepare(address, address, id) == PacketDataResult.Invalid
payload.Configure(1501, 0x0800, 1, true, -1)
assert frame.TryPrepare(mac, mac) == PacketDataResult.Invalid
payload.Configure(1, 1535, 1, true, -1)
assert frame.TryPrepare(mac, mac) == PacketDataResult.Invalid
payload.Configure(1, 65536, 1, true, -1)
assert frame.TryPrepare(mac, mac) == PacketDataResult.Invalid
payload.Configure(65516, 0x0800, 1, true, -1)
assert ip.TryPrepare(address, address, id) == PacketDataResult.Invalid
payload.Configure(1, 0x0800, -1, true, -1)
assert ip.TryPrepare(address, address, id) == PacketDataResult.Invalid
payload.Configure(1, 0x0800, 256, true, -1)
assert ip.TryPrepare(address, address, id) == PacketDataResult.Invalid
assert ip.GetAvailableLength() == 0
assert frame.TryRead(0, value) == PacketDataResult.NotReady
payload.Configure(65515, 0x0800, 1, true, -1)
assert ip.TryPrepare(address, address, id) == PacketDataResult.Success
assert ip.GetAvailableLength() == 65535
assert ip.TryRead(2, value) == PacketDataResult.Success
assert value == 0xFF
assert ip.TryRead(3, value) == PacketDataResult.Success
assert value == 0xFF
// Replacement failure clears previously prepared metadata.
payload.Configure(1, 0x0800, 256, true, -1)
assert ip.TryPrepare(address, address, id) == PacketDataResult.Invalid
assert ip.IsReady() == false
assert ip.TryRead(0, value) == PacketDataResult.NotReady
}
/**
* Injects a payload read failure and oversized metadata; neither may publish an echo reply.
*/
@Test
fn PropagatesReadFailureAndRejectsOversizedEcho()
{
frame.Invalidate()
ip.Invalidate()
echo.Invalidate()
var id: byte[2] = [0x80, 0xFF]
var value: byte = 0x00
payload.Configure(3, 0x0800, 1, true, -1)
assert echo.TryPrepare(id, id) == PacketDataResult.Success
echo.Invalidate()
payload.Configure(3, 0x0800, 1, true, 1)
assert echo.TryPrepare(id, id) == PacketDataResult.Invalid
assert echo.IsReady() == false
assert echo.GetAvailableLength() == 0
assert echo.TryRead(0, value) == PacketDataResult.NotReady
payload.Configure(65508, 0x0800, 1, true, -1)
assert echo.TryPrepare(id, id) == PacketDataResult.Invalid
payload.Configure(-1, 0x0800, 1, true, -1)
assert echo.TryPrepare(id, id) == PacketDataResult.Invalid
}
}