Files
core/session/collector_test.go
Ingo Oppermann d3eed2a417 Allow to log each finished session to filesystem
By providing CORE_SESSIONS_SESSION_LOG_PATH_PATTERN (e.g. "/log/%Y-%m-%d.log") all
finished sessions will be logged to a file according to the provided strftime-pattern. The
actual value is calculated from when the session closed. CORE_SESSIONS_PERSIST must
be set. Default: not set.

Set CORE_SESSIONS_SESSION_LOG_BUFFER_SEC to the number of seconds the log should be
buffered in memory before persisted to disk. Default 15 seconds.
2023-06-20 15:19:25 +02:00

134 lines
2.6 KiB
Go

package session
import (
"testing"
"time"
"github.com/stretchr/testify/require"
)
func createCollector(inactive, session time.Duration) (*collector, error) {
return newCollector("", nil, nil, CollectorConfig{
InactiveTimeout: inactive,
SessionTimeout: session,
})
}
func TestRegisterSession(t *testing.T) {
c, err := createCollector(time.Hour, time.Hour)
require.Equal(t, nil, err)
b := c.IsKnownSession("foobar")
require.Equal(t, false, b)
c.Register("foobar", "", "", "")
b = c.IsKnownSession("foobar")
require.Equal(t, true, b)
c.Unregister("foobar")
time.Sleep(2 * time.Second)
b = c.IsKnownSession("foobar")
require.Equal(t, false, b)
}
func TestInactiveSession(t *testing.T) {
c, err := createCollector(time.Second, time.Hour)
require.Equal(t, nil, err)
b := c.IsKnownSession("foobar")
require.Equal(t, false, b)
c.Register("foobar", "", "", "")
b = c.IsKnownSession("foobar")
require.Equal(t, true, b)
time.Sleep(3 * time.Second)
b = c.IsKnownSession("foobar")
require.Equal(t, false, b)
}
func TestActivateSession(t *testing.T) {
c, err := createCollector(time.Second, time.Second)
require.Equal(t, nil, err)
b := c.IsKnownSession("foobar")
require.Equal(t, false, b)
c.RegisterAndActivate("foobar", "", "", "")
b = c.IsKnownSession("foobar")
require.Equal(t, true, b)
time.Sleep(3 * time.Second)
b = c.IsKnownSession("foobar")
require.Equal(t, false, b)
}
func TestIngress(t *testing.T) {
c, err := createCollector(time.Second, time.Hour)
require.Equal(t, nil, err)
c.RegisterAndActivate("foobar", "", "", "")
c.Ingress("foobar", 1024)
sessions := c.Active()
require.Equal(t, 1, len(sessions))
require.Equal(t, uint64(1024), sessions[0].RxBytes)
c.Stop()
}
func TestEgress(t *testing.T) {
c, err := createCollector(time.Second, time.Hour)
require.Equal(t, nil, err)
c.RegisterAndActivate("foobar", "", "", "")
c.Egress("foobar", 1024)
sessions := c.Active()
require.Equal(t, 1, len(sessions))
require.Equal(t, uint64(1024), sessions[0].TxBytes)
c.Stop()
}
func TestNbSessions(t *testing.T) {
c, err := createCollector(time.Hour, time.Hour)
require.Equal(t, nil, err)
nsessions := c.Sessions()
require.Equal(t, uint64(0), nsessions)
c.Register("foo", "", "", "")
nsessions = c.Sessions()
require.Equal(t, uint64(0), nsessions)
c.Activate("foo")
nsessions = c.Sessions()
require.Equal(t, uint64(1), nsessions)
c.RegisterAndActivate("bar", "", "", "")
nsessions = c.Sessions()
require.Equal(t, uint64(2), nsessions)
c.Stop()
time.Sleep(2 * time.Second)
nsessions = c.Sessions()
require.Equal(t, uint64(0), nsessions)
}