Skip to content

Commit 83db69e

Browse files
author
Mario Macias
authored
Increased number of ICMP test packtes (#43)
1 parent fb3ae59 commit 83db69e

File tree

1 file changed

+21
-41
lines changed

1 file changed

+21
-41
lines changed

e2e/basic/flow_test.go

Lines changed: 21 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package basic
55
import (
66
"context"
77
"path"
8+
"strconv"
89
"testing"
910
"time"
1011

@@ -57,7 +58,6 @@ func TestBasicFlowCapture(t *testing.T) {
5758
// (2) once packets are evicted, no more flows are aggregated on top of them.
5859
func TestSinglePacketFlows(t *testing.T) {
5960
var pingerIP, serverPodIP string
60-
var latestFlowMS time.Time
6161
testCluster.TestEnv().Test(t, features.New("single-packet flow capture").Setup(
6262
func(ctx context.Context, t *testing.T, cfg *envconf.Config) context.Context {
6363
kclient, err := kubernetes.NewForConfig(cfg.Client().RESTConfig())
@@ -82,54 +82,34 @@ func TestSinglePacketFlows(t *testing.T) {
8282
}, test.Interval(time.Second))
8383
return ctx
8484
},
85-
).Assess("correctness of single, small ICMP packet from pinger to server",
85+
).Assess("correctness of single, sequential small ICMP packets from pinger to server",
8686
func(ctx context.Context, t *testing.T, cfg *envconf.Config) context.Context {
8787
pods, err := tester.NewPods(cfg)
8888
require.NoError(t, err)
8989

90-
logrus.WithField("destinationIP", serverPodIP).Info("Sending ICMP packet")
91-
stdOut, stdErr, err := pods.Execute(ctx, namespace, "pinger",
92-
"ping", "-c", "1", serverPodIP)
93-
require.NoError(t, err)
94-
logrus.WithFields(logrus.Fields{"stdOut": stdOut, "stdErr": stdErr}).Info("ping sent")
95-
96-
sent, recv := getPingFlows(t, time.Now().Add(-time.Minute))
97-
98-
assert.Equal(t, pingerIP, sent["SrcAddr"])
99-
assert.Equal(t, serverPodIP, sent["DstAddr"])
100-
assert.EqualValues(t, 98, sent["Bytes"]) // default ping data size + IP+ICMP headers
101-
assert.EqualValues(t, 1, sent["Packets"])
102-
assert.Equal(t, pingerIP, recv["DstAddr"])
103-
assert.Equal(t, serverPodIP, recv["SrcAddr"])
104-
assert.EqualValues(t, 98, recv["Bytes"]) // default ping data size + IP+ICMP headers
105-
assert.EqualValues(t, 1, recv["Packets"])
90+
const ipIcmpHeadersLen = 42
91+
latestFlowMS := time.Now().Add(-time.Minute)
92+
for pktLen := 50; pktLen <= 60; pktLen++ {
93+
logrus.WithField("destinationIP", serverPodIP).Info("Sending ICMP packet")
94+
stdOut, stdErr, err := pods.Execute(ctx, namespace, "pinger",
95+
"ping", "-s", strconv.Itoa(pktLen), "-c", "1", serverPodIP)
96+
require.NoError(t, err)
97+
logrus.WithFields(logrus.Fields{"stdOut": stdOut, "stdErr": stdErr}).Info("ping sent")
10698

107-
latestFlowMS = asTime(recv["TimeFlowEndMs"])
99+
sent, recv := getPingFlows(t, latestFlowMS)
108100

109-
return ctx
110-
},
111-
).Assess("correctness of another ICMP packet contained in another flow",
112-
func(ctx context.Context, t *testing.T, cfg *envconf.Config) context.Context {
113-
pods, err := tester.NewPods(cfg)
114-
require.NoError(t, err)
115-
116-
logrus.WithField("destinationIP", serverPodIP).Info("Sending ICMP packet")
117-
stdOut, stdErr, err := pods.Execute(ctx, namespace, "pinger",
118-
"ping", "-s", "100", "-c", "1", serverPodIP)
119-
require.NoError(t, err)
120-
logrus.WithFields(logrus.Fields{"stdOut": stdOut, "stdErr": stdErr}).Info("ping sent")
101+
assert.Equal(t, pingerIP, sent["SrcAddr"])
102+
assert.Equal(t, serverPodIP, sent["DstAddr"])
103+
assert.EqualValues(t, pktLen+ipIcmpHeadersLen, sent["Bytes"])
104+
assert.EqualValues(t, 1, sent["Packets"])
105+
assert.Equal(t, pingerIP, recv["DstAddr"])
106+
assert.Equal(t, serverPodIP, recv["SrcAddr"])
107+
assert.EqualValues(t, pktLen+ipIcmpHeadersLen, recv["Bytes"])
108+
assert.EqualValues(t, 1, recv["Packets"])
121109

122-
// We filter by time to avoid getting twice the same flows
123-
sent, recv := getPingFlows(t, latestFlowMS)
110+
latestFlowMS = asTime(recv["TimeFlowEndMs"])
111+
}
124112

125-
assert.Equal(t, pingerIP, sent["SrcAddr"])
126-
assert.Equal(t, serverPodIP, sent["DstAddr"])
127-
assert.EqualValues(t, 142, sent["Bytes"]) // 100-byte data size + IP+ICMP headers
128-
assert.EqualValues(t, 1, sent["Packets"])
129-
assert.Equal(t, pingerIP, recv["DstAddr"])
130-
assert.Equal(t, serverPodIP, recv["SrcAddr"])
131-
assert.EqualValues(t, 142, recv["Bytes"]) // 100-byte data size + IP+ICMP headers
132-
assert.EqualValues(t, 1, recv["Packets"])
133113
return ctx
134114
},
135115
).Feature())

0 commit comments

Comments
 (0)