Skip to content

Instantly share code, notes, and snippets.

@karampok
Created October 15, 2019 15:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save karampok/c97b8f89aad8898b3e020d8ca9c3b506 to your computer and use it in GitHub Desktop.
Save karampok/c97b8f89aad8898b3e020d8ca9c3b506 to your computer and use it in GitHub Desktop.
type myFrame struct {
epoch uint16
seq uint32
}
func (f myFrame) Matches(x interface{}) bool {
//b := []byte(fmt.Sprintf("%v", x.(interface{})))
//epoch := common.Order.UintN(x[1:3], 2)
//seq := common.Order.UintN(b[3:6], 3)
// more logic here
return true
}
func (f myFrame) String() string {
return fmt.Sprintf("This is what is not equal")
}
func TestMe(t *testing.T) {
rtt := sigmap.RoutingTable{
{
Prefix: makePrefix("0.0.0.0/0"),
Addr: *makeAppAddr("1.2.3.6", 6666),
},
}
cases := []struct {
dscr string
rt sigmap.RoutingTable
wantFrame myFrame
ret bool
}{
{
dscr: "NoEntryInRoutingTable",
rt: nil,
ret: false,
},
{
dscr: "OnePacketToSIG",
rt: rtt,
wantFrame: myFrame{seq: 0},
ret: true,
},
}
for _, tc := range cases {
t.Run(tc.dscr, func(t *testing.T) {
ctrl := gomock.NewController(t)
defer ctrl.Finish()
conn := mock_snet.NewMockConn(ctrl)
sm := mock_session.NewMockSIGMon(ctrl)
sm.EXPECT().Get().Return(createMockPath(ctrl, "1", 100, 3),
tc.rt).Times(1)
done := make(chan struct{}, 10)
conn.EXPECT().WriteToSCION(tc.wantFrame, gomock.Any()).DoAndReturn(
func(f common.RawBytes, _ *snet.Addr) (int, error) {
done <- struct{}{}
return 0, nil
}).AnyTimes() //in a for {} loop at connection/connection.go:54
sess := session.NewSession(1, addr.IA{I: 3, A: 4}, conn, sm)
res := sess.Write(net.ParseIP("1.2.3.4"), dummyPacket)
assert.Equal(t, res, tc.ret)
if res == false {
return
}
select {
case <-done:
case <-time.After(1 * time.Second):
t.Fatalf("timed out")
}
})
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment