77 "log"
88 "net"
99 "os"
10+ "path"
1011 "sync/atomic"
1112 "testing"
1213 "time"
2324 forceParseErr = "88.88.88.88" // force a failure parsing a traceroute output
2425 forceExtractErr = "77.77.77.77" // force a failure extracting hops
2526 forceAnnotateErr = "66.66.66.66" // force a failure annotating hops
27+ forceWriteErr = "write-err-8" // force a failure writing trace
2628)
2729
2830func init () {
@@ -57,7 +59,12 @@ func (ft *fakeTracer) Trace(remoteIP, uuid string, t time.Time) ([]byte, error)
5759}
5860
5961func (ft * fakeTracer ) WriteFile (uuid string , t time.Time , data []byte ) error {
60- return nil
62+ switch uuid {
63+ case forceWriteErr :
64+ return errors .New ("forced write error" )
65+ default :
66+ return nil
67+ }
6168}
6269
6370func (ft * fakeTracer ) CachedTrace (uuid string , t time.Time , cachedTest []byte ) ([]byte , error ) {
@@ -99,12 +106,12 @@ func TestNewHandler(t *testing.T) {
99106 defer func () { netInterfaceAddrs = saveNetInterfaceAddrs }()
100107
101108 netInterfaceAddrs = fakeInterfaceAddrsBad
102- if _ , err := newHandler (& fakeTracer {}); err == nil {
109+ if _ , err := newHandler (t , & fakeTracer {}); err == nil {
103110 t .Fatalf ("NewHandler() = nil, want error" )
104111 }
105112
106113 netInterfaceAddrs = fakeInterfaceAddrs
107- if _ , err := newHandler (& fakeTracer {}); err != nil {
114+ if _ , err := newHandler (t , & fakeTracer {}); err != nil {
108115 t .Fatalf ("NewHandler() = %v, want nil" , err )
109116 }
110117}
@@ -114,7 +121,7 @@ func TestOpen(t *testing.T) {
114121 netInterfaceAddrs = fakeInterfaceAddrs
115122 defer func () { netInterfaceAddrs = saveNetInterfaceAddrs }()
116123
117- handler , err := newHandler (& fakeTracer {})
124+ handler , err := newHandler (t , & fakeTracer {})
118125 if err != nil {
119126 t .Fatalf ("NewHandler() = %v, want nil" , err )
120127 }
@@ -164,13 +171,14 @@ func TestClose(t *testing.T) {
164171 {"bad6" , "127.0.0.1" , forceAnnotateErr , "00005" , true , true , 1 , 0 },
165172 {"good1" , "127.0.0.1" , "3.4.5.6" , "00006" , true , true , 1 , 0 },
166173 {"good2" , "4.5.6.7" , "127.0.0.1" , "00007" , true , true , 1 , 1 },
174+ {"bad7" , "127.0.0.1" , "192.168.33.2" , forceWriteErr , true , true , 1 , 0 },
167175 }
168176 for _ , test := range tests {
169177 test := test
170178 t .Run (test .name , func (t * testing.T ) {
171179 t .Parallel ()
172180 tracer := & fakeTracer {}
173- handler , err := newHandler (tracer )
181+ handler , err := newHandler (t , tracer )
174182 if err != nil {
175183 t .Fatalf ("NewHandler() = %v, want nil" , err )
176184 }
@@ -206,15 +214,15 @@ func TestClose(t *testing.T) {
206214 }
207215}
208216
209- func newHandler (tracer * fakeTracer ) (* Handler , error ) {
217+ func newHandler (t * testing. T , tracer * fakeTracer ) (* Handler , error ) {
210218 ipcCfg := ipcache.Config {
211219 EntryTimeout : 2 * time .Second ,
212220 ScanPeriod : 1 * time .Second ,
213221 }
214222 annotator := & fakeAnnotator {}
215223 haCfg := hopannotation.Config {
216224 AnnotatorClient : annotator ,
217- OutputPath : "/tmp/ annotation1" ,
225+ OutputPath : path . Join ( t . TempDir (), " annotation1") ,
218226 }
219227 newParser , err := parser .New ("mda" )
220228 if err != nil {
0 commit comments