Files
qfixdpl/quickfix/log/file/file_log_test.go
2026-03-09 15:35:32 -03:00

148 lines
3.2 KiB
Go

// Copyright (c) quickfixengine.org All rights reserved.
//
// This file may be distributed under the terms of the quickfixengine.org
// license as defined by quickfixengine.org and appearing in the file
// LICENSE included in the packaging of this file.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
// THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A
// PARTICULAR PURPOSE.
//
// See http://www.quickfixengine.org/LICENSE for licensing information.
//
// Contact ask@quickfixengine.org if any conditions of this licensing
// are not clear to you.
package file
import (
"bufio"
"fmt"
"os"
"path"
"strings"
"testing"
"quantex.com/qfixdpl/quickfix"
)
func TestFileLog_NewFileLogFactory(t *testing.T) {
_, err := NewLogFactory(quickfix.NewSettings())
if err == nil {
t.Error("Should expect error when settings have no file log path")
}
cfg := `
# default settings for sessions
[DEFAULT]
ConnectionType=initiator
ReconnectInterval=60
SenderCompID=TW
FileLogPath=.
# session definition
[SESSION]
BeginString=FIX.4.1
TargetCompID=ARCA
FileLogPath=mydir
[SESSION]
BeginString=FIX.4.1
TargetCompID=ARCA
SessionQualifier=BS
`
stringReader := strings.NewReader(cfg)
settings, _ := quickfix.ParseSettings(stringReader)
factory, err := NewLogFactory(settings)
if err != nil {
t.Error("Did not expect error", err)
}
if factory == nil {
t.Error("Should have returned factory")
}
}
type fileLogHelper struct {
LogPath string
Prefix string
Log quickfix.Log
}
func newFileLogHelper(t *testing.T) *fileLogHelper {
prefix := "myprefix"
logPath := path.Join(os.TempDir(), fmt.Sprintf("TestLogStore-%d", os.Getpid()))
log, err := newFileLog(prefix, logPath)
if err != nil {
t.Error("Unexpected error", err)
}
return &fileLogHelper{
LogPath: logPath,
Prefix: prefix,
Log: log,
}
}
func TestNewFileLog(t *testing.T) {
helper := newFileLogHelper(t)
tests := []struct {
expectedPath string
}{
{path.Join(helper.LogPath, fmt.Sprintf("%v.messages.current.log", helper.Prefix))},
{path.Join(helper.LogPath, fmt.Sprintf("%v.event.current.log", helper.Prefix))},
}
for _, test := range tests {
if _, err := os.Stat(test.expectedPath); os.IsNotExist(err) {
t.Errorf("%v does not exist", test.expectedPath)
}
}
}
func TestFileLog_Append(t *testing.T) {
helper := newFileLogHelper(t)
messageLogFile, err := os.Open(path.Join(helper.LogPath, fmt.Sprintf("%v.messages.current.log", helper.Prefix)))
if err != nil {
t.Error("Unexpected error", err)
}
defer messageLogFile.Close()
eventLogFile, err := os.Open(path.Join(helper.LogPath, fmt.Sprintf("%v.event.current.log", helper.Prefix)))
if err != nil {
t.Error("Unexpected error", err)
}
defer eventLogFile.Close()
messageScanner := bufio.NewScanner(messageLogFile)
eventScanner := bufio.NewScanner(eventLogFile)
helper.Log.OnIncoming([]byte("incoming"))
if !messageScanner.Scan() {
t.Error("Unexpected EOF")
}
helper.Log.OnEvent("Event")
if !eventScanner.Scan() {
t.Error("Unexpected EOF")
}
newHelper := newFileLogHelper(t)
newHelper.Log.OnIncoming([]byte("incoming"))
if !messageScanner.Scan() {
t.Error("Unexpected EOF")
}
newHelper.Log.OnEvent("Event")
if !eventScanner.Scan() {
t.Error("Unexpected EOF")
}
}