aboutsummaryrefslogtreecommitdiff
path: root/pcap_importer_test.go
diff options
context:
space:
mode:
authorJJ2024-07-19 20:56:29 +0000
committerJJ2024-07-19 20:56:29 +0000
commit2cffb8800d857e031178e084f602a78282490937 (patch)
treea069c36349b834100322a0966c1cf5ca8e6f206b /pcap_importer_test.go
parentb3b126389079889cf62be5ee1aa92779ca1fcd20 (diff)
remove tests
Diffstat (limited to 'pcap_importer_test.go')
-rw-r--r--pcap_importer_test.go177
1 files changed, 0 insertions, 177 deletions
diff --git a/pcap_importer_test.go b/pcap_importer_test.go
deleted file mode 100644
index 4761927..0000000
--- a/pcap_importer_test.go
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * This file is part of caronte (https://github.com/eciavatta/caronte).
- * Copyright (c) 2020 Emiliano Ciavatta.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, version 3.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-package main
-
-import (
- "bufio"
- "fmt"
- "github.com/google/gopacket"
- "github.com/google/gopacket/tcpassembly"
- "github.com/google/gopacket/tcpassembly/tcpreader"
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- "os"
- "sync"
- "testing"
- "time"
-)
-
-func TestImportPcap(t *testing.T) {
- wrapper := NewTestStorageWrapper(t)
- pcapImporter := newTestPcapImporter(wrapper, "172.17.0.3")
-
- pcapImporter.releaseAssembler(pcapImporter.takeAssembler())
-
- fileName := copyToProcessing(t, "ping_pong_10000.pcap")
- sessionID, err := pcapImporter.ImportPcap(fileName, false)
- require.NoError(t, err)
-
- duplicatePcapFileName := copyToProcessing(t, "ping_pong_10000.pcap")
- duplicateSessionID, err := pcapImporter.ImportPcap(duplicatePcapFileName, false)
- require.Error(t, err)
- assert.Equal(t, sessionID, duplicateSessionID)
- assert.Error(t, os.Remove(ProcessingPcapsBasePath+duplicatePcapFileName))
-
- _, isPresent := pcapImporter.GetSession("invalid")
- assert.False(t, isPresent)
-
- session := waitSessionCompletion(t, pcapImporter, sessionID)
- assert.Equal(t, 15008, session.ProcessedPackets)
- assert.Equal(t, 0, session.InvalidPackets)
- assert.Equal(t, map[uint16]flowCount{9999: {10004, 5004}}, session.PacketsPerService)
- assert.Zero(t, session.ImportingError)
-
- checkSessionEquals(t, wrapper, session)
-
- assert.Error(t, os.Remove(ProcessingPcapsBasePath+fileName))
- assert.NoError(t, os.Remove(PcapsBasePath+session.ID+".pcap"))
-
- wrapper.Destroy(t)
-}
-
-func TestCancelImportSession(t *testing.T) {
- wrapper := NewTestStorageWrapper(t)
- pcapImporter := newTestPcapImporter(wrapper, "172.17.0.3")
-
- fileName := copyToProcessing(t, "ping_pong_10000.pcap")
- sessionID, err := pcapImporter.ImportPcap(fileName, false)
- require.NoError(t, err)
-
- assert.False(t, pcapImporter.CancelSession("invalid"))
- assert.True(t, pcapImporter.CancelSession(sessionID))
-
- session := waitSessionCompletion(t, pcapImporter, sessionID)
- assert.Zero(t, session.CompletedAt)
- assert.Equal(t, int64(1270696), session.Size)
- // assert.Equal(t, 0, session.ProcessedPackets) // TODO: investigate
- assert.Equal(t, 0, session.InvalidPackets)
- // assert.Equal(t, map[uint16]flowCount{}, session.PacketsPerService)
- assert.NotZero(t, session.ImportingError)
-
- checkSessionEquals(t, wrapper, session)
-
- assert.Error(t, os.Remove(ProcessingPcapsBasePath+fileName))
- assert.Error(t, os.Remove(PcapsBasePath+sessionID+".pcap"))
-
- wrapper.Destroy(t)
-}
-
-func TestImportNoTcpPackets(t *testing.T) {
- wrapper := NewTestStorageWrapper(t)
- pcapImporter := newTestPcapImporter(wrapper, "172.17.0.4")
-
- fileName := copyToProcessing(t, "icmp.pcap")
- sessionID, err := pcapImporter.ImportPcap(fileName, false)
- require.NoError(t, err)
-
- session := waitSessionCompletion(t, pcapImporter, sessionID)
- assert.Equal(t, int64(228024), session.Size)
- assert.Equal(t, 2000, session.ProcessedPackets)
- assert.Equal(t, 2000, session.InvalidPackets)
- assert.Equal(t, map[uint16]flowCount{}, session.PacketsPerService)
- assert.Zero(t, session.ImportingError)
-
- checkSessionEquals(t, wrapper, session)
-
- assert.Error(t, os.Remove(ProcessingPcapsBasePath+fileName))
- assert.NoError(t, os.Remove(PcapsBasePath+sessionID+".pcap"))
-
- wrapper.Destroy(t)
-}
-
-func newTestPcapImporter(wrapper *TestStorageWrapper, serverAddress string) *PcapImporter {
- wrapper.AddCollection(ImportingSessions)
-
- streamPool := tcpassembly.NewStreamPool(&testStreamFactory{})
-
- return &PcapImporter{
- storage: wrapper.Storage,
- streamPool: streamPool,
- assemblers: make([]*tcpassembly.Assembler, 0, initialAssemblerPoolSize),
- sessions: make(map[string]ImportingSession),
- mAssemblers: sync.Mutex{},
- mSessions: sync.Mutex{},
- serverNet: *ParseIPNet(serverAddress),
- notificationController: NewNotificationController(nil),
- }
-}
-
-func waitSessionCompletion(t *testing.T, pcapImporter *PcapImporter, sessionID string) ImportingSession {
- session, isPresent := pcapImporter.GetSession(sessionID)
- require.True(t, isPresent)
- <-session.completed
-
- session, isPresent = pcapImporter.GetSession(sessionID)
- assert.True(t, isPresent)
- assert.Equal(t, sessionID, session.ID)
-
- return session
-}
-
-func checkSessionEquals(t *testing.T, wrapper *TestStorageWrapper, session ImportingSession) {
- var result ImportingSession
- assert.NoError(t, wrapper.Storage.Find(ImportingSessions).Filter(OrderedDocument{{"_id", session.ID}}).
- Context(wrapper.Context).First(&result))
- assert.Equal(t, session.StartedAt.Unix(), result.StartedAt.Unix())
- assert.Equal(t, session.CompletedAt.Unix(), result.CompletedAt.Unix())
- session.StartedAt = time.Time{}
- result.StartedAt = time.Time{}
- session.CompletedAt = time.Time{}
- result.CompletedAt = time.Time{}
- session.cancelFunc = nil
- session.completed = nil
- assert.Equal(t, session, result)
-}
-
-func copyToProcessing(t *testing.T, fileName string) string {
- newFile := fmt.Sprintf("test-%v-%s", time.Now().UnixNano(), fileName)
- require.NoError(t, CopyFile(ProcessingPcapsBasePath+newFile, "test_data/"+fileName))
- return newFile
-}
-
-type testStreamFactory struct {
-}
-
-func (sf *testStreamFactory) New(_, _ gopacket.Flow) tcpassembly.Stream {
- reader := tcpreader.NewReaderStream()
- go func() {
- buffer := bufio.NewReader(&reader)
- tcpreader.DiscardBytesToEOF(buffer)
- }()
- return &reader
-}