Skip to content
Snippets Groups Projects
Unverified Commit 83db69e7 authored by Mario Macias's avatar Mario Macias Committed by GitHub
Browse files

Increased number of ICMP test packtes (#43)

parent fb3ae596
No related branches found
No related tags found
No related merge requests found
...@@ -5,6 +5,7 @@ package basic ...@@ -5,6 +5,7 @@ package basic
import ( import (
"context" "context"
"path" "path"
"strconv"
"testing" "testing"
"time" "time"
...@@ -57,7 +58,6 @@ func TestBasicFlowCapture(t *testing.T) { ...@@ -57,7 +58,6 @@ func TestBasicFlowCapture(t *testing.T) {
// (2) once packets are evicted, no more flows are aggregated on top of them. // (2) once packets are evicted, no more flows are aggregated on top of them.
func TestSinglePacketFlows(t *testing.T) { func TestSinglePacketFlows(t *testing.T) {
var pingerIP, serverPodIP string var pingerIP, serverPodIP string
var latestFlowMS time.Time
testCluster.TestEnv().Test(t, features.New("single-packet flow capture").Setup( testCluster.TestEnv().Test(t, features.New("single-packet flow capture").Setup(
func(ctx context.Context, t *testing.T, cfg *envconf.Config) context.Context { func(ctx context.Context, t *testing.T, cfg *envconf.Config) context.Context {
kclient, err := kubernetes.NewForConfig(cfg.Client().RESTConfig()) kclient, err := kubernetes.NewForConfig(cfg.Client().RESTConfig())
...@@ -82,54 +82,34 @@ func TestSinglePacketFlows(t *testing.T) { ...@@ -82,54 +82,34 @@ func TestSinglePacketFlows(t *testing.T) {
}, test.Interval(time.Second)) }, test.Interval(time.Second))
return ctx return ctx
}, },
).Assess("correctness of single, small ICMP packet from pinger to server", ).Assess("correctness of single, sequential small ICMP packets from pinger to server",
func(ctx context.Context, t *testing.T, cfg *envconf.Config) context.Context { func(ctx context.Context, t *testing.T, cfg *envconf.Config) context.Context {
pods, err := tester.NewPods(cfg) pods, err := tester.NewPods(cfg)
require.NoError(t, err) require.NoError(t, err)
logrus.WithField("destinationIP", serverPodIP).Info("Sending ICMP packet") const ipIcmpHeadersLen = 42
stdOut, stdErr, err := pods.Execute(ctx, namespace, "pinger", latestFlowMS := time.Now().Add(-time.Minute)
"ping", "-c", "1", serverPodIP) for pktLen := 50; pktLen <= 60; pktLen++ {
require.NoError(t, err) logrus.WithField("destinationIP", serverPodIP).Info("Sending ICMP packet")
logrus.WithFields(logrus.Fields{"stdOut": stdOut, "stdErr": stdErr}).Info("ping sent") stdOut, stdErr, err := pods.Execute(ctx, namespace, "pinger",
"ping", "-s", strconv.Itoa(pktLen), "-c", "1", serverPodIP)
sent, recv := getPingFlows(t, time.Now().Add(-time.Minute)) require.NoError(t, err)
logrus.WithFields(logrus.Fields{"stdOut": stdOut, "stdErr": stdErr}).Info("ping sent")
assert.Equal(t, pingerIP, sent["SrcAddr"])
assert.Equal(t, serverPodIP, sent["DstAddr"])
assert.EqualValues(t, 98, sent["Bytes"]) // default ping data size + IP+ICMP headers
assert.EqualValues(t, 1, sent["Packets"])
assert.Equal(t, pingerIP, recv["DstAddr"])
assert.Equal(t, serverPodIP, recv["SrcAddr"])
assert.EqualValues(t, 98, recv["Bytes"]) // default ping data size + IP+ICMP headers
assert.EqualValues(t, 1, recv["Packets"])
latestFlowMS = asTime(recv["TimeFlowEndMs"]) sent, recv := getPingFlows(t, latestFlowMS)
return ctx assert.Equal(t, pingerIP, sent["SrcAddr"])
}, assert.Equal(t, serverPodIP, sent["DstAddr"])
).Assess("correctness of another ICMP packet contained in another flow", assert.EqualValues(t, pktLen+ipIcmpHeadersLen, sent["Bytes"])
func(ctx context.Context, t *testing.T, cfg *envconf.Config) context.Context { assert.EqualValues(t, 1, sent["Packets"])
pods, err := tester.NewPods(cfg) assert.Equal(t, pingerIP, recv["DstAddr"])
require.NoError(t, err) assert.Equal(t, serverPodIP, recv["SrcAddr"])
assert.EqualValues(t, pktLen+ipIcmpHeadersLen, recv["Bytes"])
logrus.WithField("destinationIP", serverPodIP).Info("Sending ICMP packet") assert.EqualValues(t, 1, recv["Packets"])
stdOut, stdErr, err := pods.Execute(ctx, namespace, "pinger",
"ping", "-s", "100", "-c", "1", serverPodIP)
require.NoError(t, err)
logrus.WithFields(logrus.Fields{"stdOut": stdOut, "stdErr": stdErr}).Info("ping sent")
// We filter by time to avoid getting twice the same flows latestFlowMS = asTime(recv["TimeFlowEndMs"])
sent, recv := getPingFlows(t, latestFlowMS) }
assert.Equal(t, pingerIP, sent["SrcAddr"])
assert.Equal(t, serverPodIP, sent["DstAddr"])
assert.EqualValues(t, 142, sent["Bytes"]) // 100-byte data size + IP+ICMP headers
assert.EqualValues(t, 1, sent["Packets"])
assert.Equal(t, pingerIP, recv["DstAddr"])
assert.Equal(t, serverPodIP, recv["SrcAddr"])
assert.EqualValues(t, 142, recv["Bytes"]) // 100-byte data size + IP+ICMP headers
assert.EqualValues(t, 1, recv["Packets"])
return ctx return ctx
}, },
).Feature()) ).Feature())
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment