mirror of
https://github.com/evilsocket/opensnitch.git
synced 2025-03-04 00:24:40 +01:00
added tasks tests
added tests for TaskManager, nodeMonitor and pidmonitor.
This commit is contained in:
parent
e20e79d686
commit
c3939c7dfd
3 changed files with 221 additions and 0 deletions
64
daemon/tasks/main_test.go
Normal file
64
daemon/tasks/main_test.go
Normal file
|
@ -0,0 +1,64 @@
|
|||
package tasks
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type BasicTask struct {
|
||||
TaskBase
|
||||
Name string
|
||||
}
|
||||
|
||||
func (pm *BasicTask) Start(ctx context.Context, cancel context.CancelFunc) error {
|
||||
return nil
|
||||
}
|
||||
func (pm *BasicTask) Pause() error {
|
||||
return nil
|
||||
}
|
||||
func (pm *BasicTask) Resume() error {
|
||||
return nil
|
||||
}
|
||||
func (pm *BasicTask) Stop() error {
|
||||
return nil
|
||||
}
|
||||
func (pm *BasicTask) Errors() <-chan error {
|
||||
return pm.TaskBase.Errors
|
||||
}
|
||||
func (pm *BasicTask) Results() <-chan interface{} {
|
||||
return pm.TaskBase.Results
|
||||
}
|
||||
|
||||
var basicTask = BasicTask{
|
||||
TaskBase: TaskBase{
|
||||
Results: make(chan interface{}),
|
||||
Errors: make(chan error),
|
||||
},
|
||||
Name: "basic-task",
|
||||
}
|
||||
|
||||
func TestTaskManager(t *testing.T) {
|
||||
tkMgr := NewTaskManager()
|
||||
|
||||
t.Run("AddTask", func(t *testing.T) {
|
||||
_, err := tkMgr.AddTask(basicTask.Name, &basicTask)
|
||||
if err != nil {
|
||||
t.Error("AddTask():", err)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("GetTask", func(t *testing.T) {
|
||||
if tk, found := tkMgr.GetTask(basicTask.Name); !found {
|
||||
t.Error("GetTask() not found:", tk)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("RemoveTask", func(t *testing.T) {
|
||||
if err := tkMgr.RemoveTask(basicTask.Name); err != nil {
|
||||
t.Error("RemoveTask() error:", err)
|
||||
}
|
||||
if tk, found := tkMgr.GetTask(basicTask.Name); found {
|
||||
t.Error("RemoveTask() task note removed:", tk)
|
||||
}
|
||||
})
|
||||
}
|
76
daemon/tasks/nodemonitor/main_test.go
Normal file
76
daemon/tasks/nodemonitor/main_test.go
Normal file
|
@ -0,0 +1,76 @@
|
|||
package nodemonitor
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"syscall"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/evilsocket/opensnitch/daemon/tasks"
|
||||
)
|
||||
|
||||
var tkMgr = tasks.NewTaskManager()
|
||||
|
||||
func TestNodeMonitor(t *testing.T) {
|
||||
taskName, nodeMon := New("my-node", "1s", false)
|
||||
activity := false
|
||||
var ctx context.Context
|
||||
var err error
|
||||
var sysinfoRaw string
|
||||
|
||||
t.Run("AddTask", func(t *testing.T) {
|
||||
ctx, err = tkMgr.AddTask(taskName, nodeMon)
|
||||
if err != nil {
|
||||
t.Error("TaskManager.AddTask() error:", err)
|
||||
}
|
||||
})
|
||||
|
||||
go func(ctx context.Context) {
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
goto Exit
|
||||
case err := <-nodeMon.Errors():
|
||||
t.Error("Error via channel Errors():", err)
|
||||
case temp := <-nodeMon.Results():
|
||||
var ok bool
|
||||
sysinfoRaw, ok = temp.(string)
|
||||
if !ok {
|
||||
t.Error("Error on Results() channel:", temp)
|
||||
goto Exit
|
||||
}
|
||||
activity = true
|
||||
}
|
||||
}
|
||||
Exit:
|
||||
}(ctx)
|
||||
time.Sleep(3 * time.Second)
|
||||
if !activity {
|
||||
t.Error("Error: no activity after 5s")
|
||||
}
|
||||
|
||||
t.Run("Unmarshal response", func(t *testing.T) {
|
||||
var sysinfo syscall.Sysinfo_t
|
||||
err = json.Unmarshal([]byte(sysinfoRaw), &sysinfo)
|
||||
if err != nil {
|
||||
t.Error("Error unmarshaling response:", err)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("RemoveTask", func(t *testing.T) {
|
||||
err = tkMgr.RemoveTask(taskName)
|
||||
if err != nil {
|
||||
t.Error("RemoveTask() error:", err)
|
||||
}
|
||||
if tk, found := tkMgr.GetTask(taskName); found {
|
||||
t.Error("Task not removed:", tk)
|
||||
}
|
||||
})
|
||||
|
||||
activity = false
|
||||
time.Sleep(2 * time.Second)
|
||||
if activity {
|
||||
t.Error("Error: task active after being removed/stopped")
|
||||
}
|
||||
}
|
81
daemon/tasks/pidmonitor/main_test.go
Normal file
81
daemon/tasks/pidmonitor/main_test.go
Normal file
|
@ -0,0 +1,81 @@
|
|||
package pidmonitor
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/evilsocket/opensnitch/daemon/procmon"
|
||||
"github.com/evilsocket/opensnitch/daemon/tasks"
|
||||
)
|
||||
|
||||
var tkMgr = tasks.NewTaskManager()
|
||||
|
||||
func TestPIDMonitor(t *testing.T) {
|
||||
ourPID := os.Getpid()
|
||||
taskName, pidMon := New(ourPID, "1s", false)
|
||||
activity := false
|
||||
var ctx context.Context
|
||||
var err error
|
||||
var procRaw string
|
||||
|
||||
t.Run("AddTask", func(t *testing.T) {
|
||||
ctx, err = tkMgr.AddTask(taskName, pidMon)
|
||||
if err != nil {
|
||||
t.Error("TaskManager.AddTask() error:", err)
|
||||
}
|
||||
})
|
||||
|
||||
go func(ctx context.Context) {
|
||||
for {
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
goto Exit
|
||||
case err := <-pidMon.Errors():
|
||||
t.Error("Error via channel Errors():", err)
|
||||
case temp := <-pidMon.Results():
|
||||
var ok bool
|
||||
procRaw, ok = temp.(string)
|
||||
if !ok {
|
||||
t.Error("Error on Results() channel:", temp)
|
||||
goto Exit
|
||||
}
|
||||
activity = true
|
||||
}
|
||||
}
|
||||
Exit:
|
||||
}(ctx)
|
||||
time.Sleep(3 * time.Second)
|
||||
if !activity {
|
||||
t.Error("Error: no activity after 5s")
|
||||
}
|
||||
|
||||
t.Run("Unmarshal response", func(t *testing.T) {
|
||||
var proc procmon.Process
|
||||
err = json.Unmarshal([]byte(procRaw), &proc)
|
||||
if err != nil {
|
||||
t.Error("Error unmarshaling response:", err)
|
||||
}
|
||||
if proc.ID != ourPID {
|
||||
t.Error("invalid Process object received:", ourPID, proc)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("RemoveTask", func(t *testing.T) {
|
||||
err = tkMgr.RemoveTask(taskName)
|
||||
if err != nil {
|
||||
t.Error("RemoveTask() error:", err)
|
||||
}
|
||||
if tk, found := tkMgr.GetTask(taskName); found {
|
||||
t.Error("Task not removed:", tk)
|
||||
}
|
||||
})
|
||||
|
||||
activity = false
|
||||
time.Sleep(2 * time.Second)
|
||||
if activity {
|
||||
t.Error("Task active after being removed/stopped")
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue