@@ -7,18 +7,23 @@ import (
77 "fmt"
88 "io"
99 "net"
10+ "os"
1011 "strings"
1112 "sync"
1213 "testing"
1314 "time"
1415
1516 "github.com/HyperloopUPV-H8/h9-backend/pkg/abstraction"
17+ "github.com/HyperloopUPV-H8/h9-backend/pkg/transport/network/sniffer"
1618 "github.com/HyperloopUPV-H8/h9-backend/pkg/transport/network/tcp"
1719 "github.com/HyperloopUPV-H8/h9-backend/pkg/transport/network/tftp"
18- tftpv3 "github.com/pin/tftp/v3"
1920 "github.com/HyperloopUPV-H8/h9-backend/pkg/transport/network/udp"
2021 "github.com/HyperloopUPV-H8/h9-backend/pkg/transport/packet/data"
2122 "github.com/HyperloopUPV-H8/h9-backend/pkg/transport/presentation"
23+ "github.com/google/gopacket/layers"
24+ "github.com/google/gopacket/pcap"
25+ "github.com/google/gopacket/pcapgo"
26+ tftpv3 "github.com/pin/tftp/v3"
2227 "github.com/rs/zerolog"
2328)
2429
@@ -1065,6 +1070,42 @@ func TestHandleFileWriteRead_ErrorPath(t *testing.T) {
10651070 }
10661071}
10671072
1073+ func TestHandleSniffer_Dispatches (t * testing.T ) {
1074+ tr , api := createTestTransport (t )
1075+
1076+ // empty pcap (header only) to drive HandleSniffer through EOF path
1077+ tmp , err := os .CreateTemp ("" , "sniffer*.pcap" )
1078+ if err != nil {
1079+ t .Fatalf ("failed to create temp file: %v" , err )
1080+ }
1081+ writer := pcapgo .NewWriter (tmp )
1082+ if err := writer .WriteFileHeader (65535 , layers .LinkTypeEthernet ); err != nil {
1083+ t .Fatalf ("write header failed: %v" , err )
1084+ }
1085+ tmp .Close ()
1086+
1087+ handle , err := pcap .OpenOffline (tmp .Name ())
1088+ if err != nil {
1089+ t .Fatalf ("failed to open pcap: %v" , err )
1090+ }
1091+ sn := sniffer .New (handle , nil , defaultLogger ())
1092+
1093+ done := make (chan struct {})
1094+ go func () {
1095+ tr .HandleSniffer (sn )
1096+ close (done )
1097+ }()
1098+
1099+ select {
1100+ case <- done :
1101+ case <- time .After (2 * time .Second ):
1102+ t .Fatalf ("HandleSniffer did not return on EOF" )
1103+ }
1104+
1105+ // No notifications expected; just ensure no panic/block.
1106+ _ = api
1107+ }
1108+
10681109// Helper function to mimic errors.As behavior
10691110func ErrorAs (err error , target interface {}) bool {
10701111 switch target := target .(type ) {
0 commit comments