mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-10-23 05:04:07 +00:00
to the kata-containers repo under the src/tools/log-parser folder and vendor the modules Fixes: #4100 Signed-off-by: Snir Sheriber <ssheribe@redhat.com>
206 lines
3.6 KiB
Go
206 lines
3.6 KiB
Go
//
|
|
// Copyright (c) 2018 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
const (
|
|
testLevel = "info"
|
|
testPid = 2
|
|
testName = "kata-agent"
|
|
testMsg = "hello from the agent"
|
|
)
|
|
|
|
func TestAgentLogEntry(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
type testData struct {
|
|
le LogEntry
|
|
fromAgent bool
|
|
}
|
|
|
|
data := []testData{
|
|
{
|
|
LogEntry{},
|
|
false,
|
|
},
|
|
|
|
{
|
|
LogEntry{
|
|
Source: "agent",
|
|
Msg: "",
|
|
},
|
|
false,
|
|
},
|
|
|
|
{
|
|
LogEntry{
|
|
Source: "foo",
|
|
Msg: "time=\"2018-02-24T12:36:35.980548906Z\"",
|
|
},
|
|
false,
|
|
},
|
|
|
|
{
|
|
LogEntry{
|
|
Source: "agent",
|
|
Msg: "wibble",
|
|
},
|
|
false,
|
|
},
|
|
|
|
{
|
|
LogEntry{
|
|
Source: "agent",
|
|
Msg: "time=\"2018-02-24T12:36:35.980548906Z\"",
|
|
},
|
|
true,
|
|
},
|
|
}
|
|
|
|
for i, d := range data {
|
|
fromAgent := agentLogEntry(d.le)
|
|
|
|
if d.fromAgent {
|
|
assert.True(fromAgent, "test[%d]: %+v", i, d)
|
|
} else {
|
|
assert.False(fromAgent, "test[%d]: %+v", i, d)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestUnpackAgentLogEntry(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
type testData struct {
|
|
le LogEntry
|
|
expectError bool
|
|
}
|
|
|
|
now := time.Now().UTC()
|
|
nano := now.Format(time.RFC3339Nano)
|
|
|
|
source := "agent"
|
|
|
|
agentMsg := fmt.Sprintf("time=%q source=%s level=%s msg=%q pid=%d name=%s",
|
|
nano, source, testLevel, testMsg, testPid, testName)
|
|
|
|
data := []testData{
|
|
{
|
|
LogEntry{},
|
|
true,
|
|
},
|
|
|
|
{
|
|
LogEntry{
|
|
Source: "agent",
|
|
Msg: "",
|
|
},
|
|
true,
|
|
},
|
|
|
|
{
|
|
LogEntry{
|
|
Source: "agent",
|
|
Msg: "foo",
|
|
Filename: "",
|
|
},
|
|
true,
|
|
},
|
|
|
|
{
|
|
LogEntry{
|
|
Source: "agent",
|
|
Msg: "foo",
|
|
Filename: "/foo/bar.log",
|
|
Line: 0,
|
|
},
|
|
true,
|
|
},
|
|
|
|
{
|
|
LogEntry{
|
|
Count: 123,
|
|
Source: "agent",
|
|
Filename: "/foo/bar.txt",
|
|
Line: 101,
|
|
Msg: agentMsg,
|
|
},
|
|
false,
|
|
},
|
|
}
|
|
|
|
for i, d := range data {
|
|
agent, err := unpackAgentLogEntry(d.le)
|
|
|
|
if d.expectError {
|
|
assert.Errorf(err, "test[%d]: %+v", i, d)
|
|
} else {
|
|
assert.NoErrorf(err, "test[%d]: %+v", i, d)
|
|
|
|
// Ensure the newly unpacked LogEntry is valid
|
|
err = agent.Check(false)
|
|
assert.NoError(err)
|
|
|
|
assert.Equal(d.le.Filename, agent.Filename)
|
|
assert.Equal(d.le.Line, agent.Line)
|
|
assert.Equal(d.le.Count, agent.Count)
|
|
assert.Equal(d.le.Source, agent.Source)
|
|
assert.Equal(agent.Pid, testPid)
|
|
assert.Equal(agent.Msg, testMsg)
|
|
assert.Equal(agent.Name, testName)
|
|
assert.Equal(agent.Level, testLevel)
|
|
assert.Equal(agent.Time, now)
|
|
assert.Equal(agent.Source, source)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestUnpackAgentLogEntryWithContainerID(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
now := time.Now().UTC()
|
|
nano := now.Format(time.RFC3339Nano)
|
|
|
|
source := "agent"
|
|
|
|
containerID := "51f062b90853e22c0817392395bc0c43cd6a0bb9e456b1bd0e28433f805475d6"
|
|
execID := "51f062b90853e22c0817392395bc0c43cd6a0bb9e456b1bd0e28433f805475d6"
|
|
|
|
// agent log fields added when agent debug is enabled
|
|
msg := `"new request"`
|
|
|
|
grpcTrace := fmt.Sprintf(`container_id:"%s" exec_id:"%s"`, containerID, execID)
|
|
grpcRequest := "/grpc.AgentService/CreateContainer"
|
|
|
|
agentMsg := fmt.Sprintf("time=%q source=%s level=%s pid=%d name=%s msg=%q request=%q req=%q",
|
|
nano, source, testLevel, testPid, testName, msg, grpcRequest, grpcTrace)
|
|
|
|
le := LogEntry{
|
|
Count: 123,
|
|
Source: "agent",
|
|
Filename: "/foo/bar.txt",
|
|
Line: 101,
|
|
Msg: agentMsg,
|
|
}
|
|
|
|
agent, err := unpackAgentLogEntry(le)
|
|
assert.NoError(err)
|
|
|
|
// Ensure the newly unpacked LogEntry is valid
|
|
err = agent.Check(false)
|
|
assert.NoError(err)
|
|
|
|
assert.Equal(containerID, agent.Container)
|
|
}
|