test(inputs.radius): Use random port for test (#13683)

This commit is contained in:
Sven Rebhan 2023-07-27 15:01:33 +02:00 committed by GitHub
parent 087a6683f1
commit 80ce606cef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 18 additions and 9 deletions

View File

@ -3,6 +3,7 @@ package radius
import (
"context"
"errors"
"net"
"path/filepath"
"testing"
"time"
@ -31,14 +32,22 @@ func TestRadiusLocal(t *testing.T) {
}
}
// Setup a connection to be able to get a random port
conn, err := net.ListenPacket("udp4", "127.0.0.1:0")
require.NoError(t, err)
defer conn.Close()
addr := conn.LocalAddr().String()
host, port, err := net.SplitHostPort(addr)
require.NoError(t, err)
server := radius.PacketServer{
Handler: radius.HandlerFunc(handler),
SecretSource: radius.StaticSecretSource([]byte(`testsecret`)),
Addr: ":1813",
Addr: addr,
}
go func() {
if err := server.ListenAndServe(); err != nil {
if err := server.Serve(conn); err != nil {
if !errors.Is(err, radius.ErrServerShutdown) {
require.NoError(t, err, "local radius server failed")
}
@ -46,25 +55,25 @@ func TestRadiusLocal(t *testing.T) {
}()
plugin := &Radius{
Servers: []string{"localhost:1813"},
Servers: []string{addr},
Username: config.NewSecret([]byte(`testusername`)),
Password: config.NewSecret([]byte(`testpassword`)),
Secret: config.NewSecret([]byte(`testsecret`)),
Log: testutil.Logger{},
}
var acc testutil.Accumulator
require.NoError(t, plugin.Init())
require.NoError(t, plugin.Gather(&acc))
require.Len(t, acc.Errors, 0)
var acc testutil.Accumulator
require.NoError(t, acc.GatherError(plugin.Gather))
if !acc.HasMeasurement("radius") {
t.Errorf("acc.HasMeasurement: expected radius")
}
require.Equal(t, true, acc.HasTag("radius", "source"))
require.Equal(t, true, acc.HasTag("radius", "source_port"))
require.Equal(t, true, acc.HasTag("radius", "response_code"))
require.Equal(t, "localhost", acc.TagValue("radius", "source"))
require.Equal(t, "1813", acc.TagValue("radius", "source_port"))
require.Equal(t, host, acc.TagValue("radius", "source"))
require.Equal(t, port, acc.TagValue("radius", "source_port"))
require.Equal(t, radius.CodeAccessAccept.String(), acc.TagValue("radius", "response_code"))
require.Equal(t, true, acc.HasInt64Field("radius", "responsetime_ms"))