Skip to content

Commit

Permalink
Accept Settings instead of SessionSettings
Browse files Browse the repository at this point in the history
  • Loading branch information
mgatny committed Apr 18, 2016
1 parent 5fcdf50 commit daf4180
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 17 deletions.
10 changes: 7 additions & 3 deletions filestore.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ type msgDef struct {
}

type fileStoreFactory struct {
settings *SessionSettings
settings *Settings
}

type fileStore struct {
Expand All @@ -37,13 +37,17 @@ type fileStore struct {
}

// NewFileStoreFactory returns a file-based implementation of MessageStoreFactory
func NewFileStoreFactory(settings *SessionSettings) MessageStoreFactory {
func NewFileStoreFactory(settings *Settings) MessageStoreFactory {
return fileStoreFactory{settings: settings}
}

// Create creates a new FileStore implementation of the MessageStore interface
func (f fileStoreFactory) Create(sessionID SessionID) (msgStore MessageStore, err error) {
dirname, err := f.settings.Setting(config.FileStorePath)
sessionSettings, ok := f.settings.SessionSettings()[sessionID]
if !ok {
return nil, fmt.Errorf("unknown session: %v", sessionID)
}
dirname, err := sessionSettings.Setting(config.FileStorePath)
if err != nil {
return nil, err
}
Expand Down
22 changes: 17 additions & 5 deletions filestore_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ import (
"fmt"
"os"
"path"
"strings"
"testing"
"time"

"github.com/quickfixgo/quickfix/config"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
)
Expand All @@ -19,11 +19,23 @@ type FileStoreTestSuite struct {
}

func (suite *FileStoreTestSuite) SetupTest() {
var err error
settings := NewSessionSettings()
suite.fileStoreRootPath = path.Join(os.TempDir(), fmt.Sprintf("FileStoreTestSuite-%d", os.Getpid()))
settings.Set(config.FileStorePath, path.Join(suite.fileStoreRootPath, fmt.Sprintf("%d", time.Now().UnixNano())))
suite.msgStore, err = NewFileStoreFactory(settings).Create(SessionID{BeginString: "FIX.4.4", SenderCompID: "SENDER", TargetCompID: "TARGET"})
fileStorePath := path.Join(suite.fileStoreRootPath, fmt.Sprintf("%d", time.Now().UnixNano()))
sessionID := SessionID{BeginString: "FIX.4.4", SenderCompID: "SENDER", TargetCompID: "TARGET"}

// create settings
settings, err := ParseSettings(strings.NewReader(fmt.Sprintf(`
[DEFAULT]
FileStorePath=%s
[SESSION]
BeginString=%s
SenderCompID=%s
TargetCompID=%s`, fileStorePath, sessionID.BeginString, sessionID.SenderCompID, sessionID.TargetCompID)))
require.Nil(suite.T(), err)

// create store
suite.msgStore, err = NewFileStoreFactory(settings).Create(sessionID)
require.Nil(suite.T(), err)
}

Expand Down
13 changes: 9 additions & 4 deletions sqlstore.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@ package quickfix

import (
"database/sql"
"fmt"
"time"

"github.com/quickfixgo/quickfix/config"
)

type sqlStoreFactory struct {
settings *SessionSettings
settings *Settings
}

type sqlStore struct {
Expand All @@ -20,17 +21,21 @@ type sqlStore struct {
}

// NewSQLStoreFactory returns a sql-based implementation of MessageStoreFactory
func NewSQLStoreFactory(settings *SessionSettings) MessageStoreFactory {
func NewSQLStoreFactory(settings *Settings) MessageStoreFactory {
return sqlStoreFactory{settings: settings}
}

// Create creates a new SQLStore implementation of the MessageStore interface
func (f sqlStoreFactory) Create(sessionID SessionID) (msgStore MessageStore, err error) {
sqlDriver, err := f.settings.Setting(config.SQLDriver)
sessionSettings, ok := f.settings.SessionSettings()[sessionID]
if !ok {
return nil, fmt.Errorf("unknown session: %v", sessionID)
}
sqlDriver, err := sessionSettings.Setting(config.SQLDriver)
if err != nil {
return nil, err
}
sqlDataSourceName, err := f.settings.Setting(config.SQLDataSourceName)
sqlDataSourceName, err := sessionSettings.Setting(config.SQLDataSourceName)
if err != nil {
return nil, err
}
Expand Down
20 changes: 15 additions & 5 deletions sqlstore_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import (
"os"
"path"
"path/filepath"
"strings"
"testing"
"time"

_ "github.com/mattn/go-sqlite3"
"github.com/quickfixgo/quickfix/config"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
)
Expand Down Expand Up @@ -41,11 +41,21 @@ func (suite *SQLStoreTestSuite) SetupTest() {
require.Nil(suite.T(), err)
}

// create settings
sessionID := SessionID{BeginString: "FIX.4.4", SenderCompID: "SENDER", TargetCompID: "TARGET"}
settings, err := ParseSettings(strings.NewReader(fmt.Sprintf(`
[DEFAULT]
SQLDriver=%s
SQLDataSourceName=%s
[SESSION]
BeginString=%s
SenderCompID=%s
TargetCompID=%s`, sqlDriver, sqlDsn, sessionID.BeginString, sessionID.SenderCompID, sessionID.TargetCompID)))
require.Nil(suite.T(), err)

// create store
settings := NewSessionSettings()
settings.Set(config.SQLDataSourceName, sqlDsn)
settings.Set(config.SQLDriver, sqlDriver)
suite.msgStore, err = NewSQLStoreFactory(settings).Create(SessionID{BeginString: "FIX.4.4", SenderCompID: "SENDER", TargetCompID: "TARGET"})
suite.msgStore, err = NewSQLStoreFactory(settings).Create(sessionID)
require.Nil(suite.T(), err)
}

Expand Down

0 comments on commit daf4180

Please sign in to comment.