Skip to content

Commit e946cff

Browse files
add unit test
1 parent 326c1ae commit e946cff

File tree

2 files changed

+80
-2
lines changed

2 files changed

+80
-2
lines changed

config/configuration.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,7 +1057,7 @@ const (
10571057
//
10581058
// Valid Values:
10591059
// - A valid string
1060-
SQLStoreMessagesTableName = "SQLStoreMessagesTable"
1060+
SQLStoreMessagesTableName = "SQLStoreMessagesTableName"
10611061

10621062
// SQLStoreSessionsTableName defines the table name for the messages table. Default is "sessions".
10631063
// If you use a different table name, you must set up your database accordingly.
@@ -1068,7 +1068,7 @@ const (
10681068
//
10691069
// Valid Values:
10701070
// - A valid string
1071-
SQLStoreSessionsTableName = "SQLStoreSessionsTable"
1071+
SQLStoreSessionsTableName = "SQLStoreSessionsTableName"
10721072

10731073
// MongoStoreConnection sets the MongoDB connection URL to use for message storage.
10741074
//

store/sql/sql_store_test.go

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,84 @@ func (suite *SQLStoreTestSuite) TestSqlPlaceholderReplacement() {
8181
suite.Equal("A $1 B $2 C $3", got)
8282
}
8383

84+
func (suite *SQLStoreTestSuite) TestStoreTableRenameOverride() {
85+
sqlDriver := "sqlite3"
86+
sqlDsn := path.Join(suite.sqlStoreRootPath, fmt.Sprintf("rename-override-%d.db", time.Now().UnixNano()))
87+
88+
// Create DB with original schema
89+
db, err := sql.Open(sqlDriver, sqlDsn)
90+
require.NoError(suite.T(), err)
91+
92+
ddlFnames, err := filepath.Glob(fmt.Sprintf("../../_sql/%s/*.sql", sqlDriver))
93+
require.NoError(suite.T(), err)
94+
for _, fname := range ddlFnames {
95+
sqlBytes, err := os.ReadFile(fname)
96+
require.NoError(suite.T(), err)
97+
_, err = db.Exec(string(sqlBytes))
98+
require.NoError(suite.T(), err)
99+
}
100+
101+
// Rename tables
102+
_, err = db.Exec(`ALTER TABLE sessions RENAME TO renamed_sessions`)
103+
require.NoError(suite.T(), err)
104+
_, err = db.Exec(`ALTER TABLE messages RENAME TO renamed_messages`)
105+
require.NoError(suite.T(), err)
106+
107+
// Set config to use renamed tables
108+
sessionID := quickfix.SessionID{BeginString: "FIX.4.4", SenderCompID: "SENDER", TargetCompID: "TARGET"}
109+
settings, err := quickfix.ParseSettings(strings.NewReader(fmt.Sprintf(`
110+
[DEFAULT]
111+
SQLStoreDriver=%s
112+
SQLStoreDataSourceName=%s
113+
SQLStoreSessionsTableName=renamed_sessions
114+
SQLStoreMessagesTableName=renamed_messages
115+
116+
[SESSION]
117+
BeginString=%s
118+
SenderCompID=%s
119+
TargetCompID=%s
120+
`, sqlDriver, sqlDsn, sessionID.BeginString, sessionID.SenderCompID, sessionID.TargetCompID)))
121+
require.NoError(suite.T(), err)
122+
123+
// Create store with renamed table config
124+
store, err := NewStoreFactory(settings).Create(sessionID)
125+
require.NoError(suite.T(), err)
126+
defer store.Close()
127+
128+
// SaveMessage + SetNextSenderMsgSeqNum
129+
msg := []byte("8=FIX.4.4\x019=12\x0135=0\x01")
130+
require.NoError(suite.T(), store.SaveMessage(1, msg))
131+
require.NoError(suite.T(), store.SetNextSenderMsgSeqNum(2))
132+
require.NoError(suite.T(), store.SetNextTargetMsgSeqNum(2))
133+
134+
// SaveMessageAndIncrNextSenderMsgSeqNum
135+
require.NoError(suite.T(), store.SaveMessageAndIncrNextSenderMsgSeqNum(2, msg))
136+
137+
// Get and check sequence numbers
138+
nextSender := store.NextSenderMsgSeqNum()
139+
suite.Equal(3, nextSender)
140+
nextTarget := store.NextTargetMsgSeqNum()
141+
suite.Equal(2, nextTarget)
142+
143+
// IterateMessages
144+
count := 0
145+
err = store.IterateMessages(1, 2, func(m []byte) error {
146+
count++
147+
return nil
148+
})
149+
require.NoError(suite.T(), err)
150+
suite.Equal(2, count)
151+
152+
// Reset
153+
require.NoError(suite.T(), store.Reset())
154+
155+
// After reset, sequence numbers should be 1
156+
nextSender = store.NextSenderMsgSeqNum()
157+
suite.Equal(1, nextSender)
158+
nextTarget = store.NextTargetMsgSeqNum()
159+
suite.Equal(1, nextTarget)
160+
}
161+
84162
func (suite *SQLStoreTestSuite) TearDownTest() {
85163
suite.MsgStore.Close()
86164
os.RemoveAll(suite.sqlStoreRootPath)

0 commit comments

Comments
 (0)