Skip to content

Commit

Permalink
increase test coverage for ipv6 fragment extension header
Browse files Browse the repository at this point in the history
  • Loading branch information
compscidr committed Sep 27, 2024
1 parent 29621a3 commit 54755ee
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ import kotlin.experimental.and
* Explicit Congestion Notification (ECN) bits from different
* fragments to derive the ECN bits of the reassembled packet.
*/
class Ipv6Fragment(
data class Ipv6Fragment(
override var nextHeader: UByte = IpType.TCP.value,
override val length: UByte = LENGTH,
val fragmentOffset: UShort = 0u,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,37 @@
package com.jasonernst.knet.ip.v6.extensions

import com.jasonernst.knet.ip.IpType
import com.jasonernst.knet.ip.v6.Ipv6Header
import com.jasonernst.knet.ip.v6.extenions.Ipv6Fragment
import com.jasonernst.knet.transport.tcp.TcpHeader
import org.junit.jupiter.api.Assertions.assertArrayEquals
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Assertions.assertTrue
import org.junit.jupiter.api.Test
import java.nio.ByteBuffer
import kotlin.random.Random

class Ipv6FragmentTest {
@Test
fun toAndFromStream() {
val fragmentHeader = Ipv6Fragment()
val stream = ByteBuffer.wrap(fragmentHeader.toByteArray())
var nextHeader = stream.get().toUByte()
stream.get() // skip over length
var parsedFragmentHeader = Ipv6Fragment.fromStream(stream, nextHeader)
assertEquals(fragmentHeader, parsedFragmentHeader)

val fragmentWithMore = Ipv6Fragment(moreFlag = true)
fragmentWithMore.nextHeader = IpType.UDP.value // make sure the setter is working
val stream2 = ByteBuffer.wrap(fragmentWithMore.toByteArray())
nextHeader = stream2.get().toUByte()
stream2.get() // skip over length
parsedFragmentHeader = Ipv6Fragment.fromStream(stream2, nextHeader)
assertEquals(fragmentWithMore, parsedFragmentHeader)
assertTrue(parsedFragmentHeader.moreFlag)
assertEquals(IpType.UDP.value, parsedFragmentHeader.nextHeader)
}

@Test
fun fragmentReassembly() {
val payload = ByteArray(5000)
Expand Down

0 comments on commit 54755ee

Please sign in to comment.