Skip to content
This repository was archived by the owner on Nov 7, 2025. It is now read-only.

Commit c250a90

Browse files
authored
Remove copy paste in tests (#998)
1 parent 3551618 commit c250a90

File tree

4 files changed

+62
-202
lines changed

4 files changed

+62
-202
lines changed

quesma/quesma/search.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package quesma
44

55
import (
66
"context"
7+
"database/sql"
78
"errors"
89
"fmt"
910
"quesma/ab_testing"
@@ -24,6 +25,7 @@ import (
2425
"quesma/quesma/ui"
2526
"quesma/schema"
2627
"quesma/table_resolver"
28+
"quesma/telemetry"
2729
"quesma/tracing"
2830
"quesma/util"
2931
"strings"
@@ -92,6 +94,28 @@ func NewQueryRunner(lm *clickhouse.LogManager,
9294
}
9395
}
9496

97+
func NewQueryRunnerDefaultForTests(db *sql.DB, cfg *config.QuesmaConfiguration,
98+
tableName string, tables *clickhouse.TableMap, staticRegistry *schema.StaticRegistry) *QueryRunner {
99+
100+
lm := clickhouse.NewLogManagerWithConnection(db, tables)
101+
logChan := logger.InitOnlyChannelLoggerForTests()
102+
103+
resolver := table_resolver.NewEmptyTableResolver()
104+
resolver.Decisions[tableName] = &table_resolver.Decision{
105+
UseConnectors: []table_resolver.ConnectorDecision{
106+
&table_resolver.ConnectorDecisionClickhouse{
107+
ClickhouseTableName: tableName,
108+
ClickhouseTables: []string{tableName},
109+
},
110+
},
111+
}
112+
113+
managementConsole := ui.NewQuesmaManagementConsole(cfg, nil, nil, logChan, telemetry.NewPhoneHomeEmptyAgent(), nil, resolver)
114+
go managementConsole.RunOnlyChannelProcessor()
115+
116+
return NewQueryRunner(lm, cfg, nil, managementConsole, staticRegistry, ab_testing.NewEmptySender(), resolver)
117+
}
118+
95119
// returns -1 when table name could not be resolved
96120
func (q *QueryRunner) handleCount(ctx context.Context, indexPattern string) (int64, error) {
97121
indexes, err := q.logManager.ResolveIndexPattern(ctx, indexPattern)

quesma/quesma/search_norace_test.go

Lines changed: 5 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,9 @@ import (
1212
"context"
1313
"github.com/stretchr/testify/assert"
1414
"math/rand"
15-
"quesma/ab_testing"
16-
"quesma/clickhouse"
17-
"quesma/logger"
1815
"quesma/model"
1916
"quesma/quesma/types"
20-
"quesma/quesma/ui"
2117
"quesma/schema"
22-
"quesma/table_resolver"
23-
"quesma/telemetry"
2418
"quesma/testdata"
2519
"quesma/tracing"
2620
"quesma/util"
@@ -40,21 +34,6 @@ func TestAllUnsupportedQueryTypesAreProperlyRecorded(t *testing.T) {
4034
db, _ := util.InitSqlMockWithPrettyPrint(t, false)
4135
defer db.Close()
4236

43-
lm := clickhouse.NewLogManagerWithConnection(db, table)
44-
logChan := logger.InitOnlyChannelLoggerForTests()
45-
46-
resolver := table_resolver.NewEmptyTableResolver()
47-
resolver.Decisions[tableName] = &table_resolver.Decision{
48-
UseConnectors: []table_resolver.ConnectorDecision{
49-
&table_resolver.ConnectorDecisionClickhouse{
50-
ClickhouseTableName: tableName,
51-
ClickhouseTables: []string{tableName},
52-
},
53-
},
54-
}
55-
56-
managementConsole := ui.NewQuesmaManagementConsole(&DefaultConfig, nil, nil, logChan, telemetry.NewPhoneHomeEmptyAgent(), nil, resolver)
57-
go managementConsole.RunOnlyChannelProcessor()
5837
s := &schema.StaticRegistry{
5938
Tables: map[schema.TableName]schema.Schema{
6039
tableName: {
@@ -73,7 +52,8 @@ func TestAllUnsupportedQueryTypesAreProperlyRecorded(t *testing.T) {
7352
},
7453
}
7554

76-
queryRunner := NewQueryRunner(lm, &DefaultConfig, nil, managementConsole, s, ab_testing.NewEmptySender(), resolver)
55+
queryRunner := NewQueryRunnerDefaultForTests(db, &DefaultConfig, tableName, table, s)
56+
managementConsole := queryRunner.quesmaManagementConsole
7757
newCtx := context.WithValue(ctx, tracing.RequestIdCtxKey, tracing.GetRequestId())
7858
queryRunner.handleSearch(newCtx, tableName, types.MustJSON(tt.QueryRequestJson))
7959

@@ -118,21 +98,6 @@ func TestDifferentUnsupportedQueries(t *testing.T) {
11898
db, _ := util.InitSqlMockWithPrettyPrint(t, false)
11999
defer db.Close()
120100

121-
lm := clickhouse.NewLogManagerWithConnection(db, table)
122-
logChan := logger.InitOnlyChannelLoggerForTests()
123-
124-
resolver := table_resolver.NewEmptyTableResolver()
125-
resolver.Decisions[tableName] = &table_resolver.Decision{
126-
UseConnectors: []table_resolver.ConnectorDecision{
127-
&table_resolver.ConnectorDecisionClickhouse{
128-
ClickhouseTableName: tableName,
129-
ClickhouseTables: []string{tableName},
130-
},
131-
},
132-
}
133-
134-
managementConsole := ui.NewQuesmaManagementConsole(&DefaultConfig, nil, nil, logChan, telemetry.NewPhoneHomeEmptyAgent(), nil, resolver)
135-
go managementConsole.RunOnlyChannelProcessor()
136101
s := &schema.StaticRegistry{
137102
Tables: map[schema.TableName]schema.Schema{
138103
tableName: {
@@ -152,7 +117,7 @@ func TestDifferentUnsupportedQueries(t *testing.T) {
152117
},
153118
}
154119

155-
queryRunner := NewQueryRunner(lm, &DefaultConfig, nil, managementConsole, s, ab_testing.NewEmptySender(), resolver)
120+
queryRunner := NewQueryRunnerDefaultForTests(db, &DefaultConfig, tableName, table, s)
156121
for _, testNr := range testNrs {
157122
newCtx := context.WithValue(ctx, tracing.RequestIdCtxKey, tracing.GetRequestId())
158123
_, _ = queryRunner.handleSearch(newCtx, tableName, types.MustJSON(testdata.UnsupportedQueriesTests[testNr].QueryRequestJson))
@@ -162,10 +127,10 @@ func TestDifferentUnsupportedQueries(t *testing.T) {
162127
// Update of the count below is done asynchronously in another goroutine
163128
// (go managementConsole.RunOnlyChannelProcessor() above), so we might need to wait a bit
164129
assert.Eventually(t, func() bool {
165-
return len(managementConsole.QueriesWithUnsupportedType(tt.QueryType)) == min(testCounts[i], maxSavedQueriesPerQueryType)
130+
return len(queryRunner.quesmaManagementConsole.QueriesWithUnsupportedType(tt.QueryType)) == min(testCounts[i], maxSavedQueriesPerQueryType)
166131
}, 600*time.Millisecond, 1*time.Millisecond,
167132
tt.TestName+": wanted: %d, got: %d", min(testCounts[i], maxSavedQueriesPerQueryType),
168-
len(managementConsole.QueriesWithUnsupportedType(tt.QueryType)),
133+
len(queryRunner.quesmaManagementConsole.QueriesWithUnsupportedType(tt.QueryType)),
169134
)
170135
}
171136
}

quesma/quesma/search_opensearch_test.go

Lines changed: 11 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,12 @@ import (
66
"context"
77
"github.com/DATA-DOG/go-sqlmock"
88
"github.com/stretchr/testify/assert"
9-
"quesma/ab_testing"
109
"quesma/clickhouse"
1110
"quesma/concurrent"
12-
"quesma/logger"
1311
"quesma/model"
1412
"quesma/queryparser"
1513
"quesma/quesma/types"
16-
"quesma/quesma/ui"
1714
"quesma/schema"
18-
"quesma/table_resolver"
19-
"quesma/telemetry"
2015
"quesma/testdata"
2116
"quesma/util"
2217
"strconv"
@@ -50,19 +45,9 @@ func TestSearchOpensearch(t *testing.T) {
5045
t.Run(strconv.Itoa(i)+tt.Name, func(t *testing.T) {
5146
db, mock := util.InitSqlMockWithPrettySqlAndPrint(t, false)
5247
defer db.Close()
53-
lm := clickhouse.NewLogManagerWithConnection(db, concurrent.NewMapWith(tableName, &table))
54-
resolver := table_resolver.NewEmptyTableResolver()
55-
resolver.Decisions[tableName] = &table_resolver.Decision{
56-
UseConnectors: []table_resolver.ConnectorDecision{
57-
&table_resolver.ConnectorDecisionClickhouse{
58-
ClickhouseTableName: tableName,
59-
ClickhouseTables: []string{tableName},
60-
},
61-
},
62-
}
6348

64-
managementConsole := ui.NewQuesmaManagementConsole(&DefaultConfig, nil, nil, make(<-chan logger.LogWithLevel, 50000), telemetry.NewPhoneHomeEmptyAgent(), nil, resolver)
65-
cw := queryparser.ClickhouseQueryTranslator{ClickhouseLM: lm, Table: &table, Ctx: context.Background(), Schema: s.Tables[tableName], Config: &DefaultConfig}
49+
queryRunner := NewQueryRunnerDefaultForTests(db, &DefaultConfig, tableName, concurrent.NewMapWith(tableName, &table), s)
50+
cw := queryparser.ClickhouseQueryTranslator{ClickhouseLM: queryRunner.logManager, Table: &table, Ctx: context.Background(), Schema: s.Tables[tableName], Config: &DefaultConfig}
6651

6752
body, parseErr := types.ParseJSON(tt.QueryJson)
6853
assert.NoError(t, parseErr)
@@ -76,7 +61,7 @@ func TestSearchOpensearch(t *testing.T) {
7661
for _, wantedQuery := range tt.WantedQueries {
7762
mock.ExpectQuery(wantedQuery).WillReturnRows(sqlmock.NewRows([]string{"@timestamp", "host.name"}))
7863
}
79-
queryRunner := NewQueryRunner(lm, &DefaultConfig, nil, managementConsole, s, ab_testing.NewEmptySender(), resolver)
64+
8065
_, err2 := queryRunner.handleSearch(ctx, tableName, types.MustJSON(tt.QueryJson))
8166
assert.NoError(t, err2)
8267

@@ -203,28 +188,16 @@ func TestHighlighter(t *testing.T) {
203188
}
204189
db, mock := util.InitSqlMockWithPrettyPrint(t, true)
205190
defer db.Close()
206-
lm := clickhouse.NewLogManagerWithConnection(db, concurrent.NewMapWith(tableName, &table))
207-
208-
resolver := table_resolver.NewEmptyTableResolver()
209-
resolver.Decisions[tableName] = &table_resolver.Decision{
210-
UseConnectors: []table_resolver.ConnectorDecision{
211-
&table_resolver.ConnectorDecisionClickhouse{
212-
ClickhouseTableName: tableName,
213-
ClickhouseTables: []string{tableName},
214-
},
215-
},
216-
}
217-
218-
managementConsole := ui.NewQuesmaManagementConsole(&DefaultConfig, nil, nil, make(<-chan logger.LogWithLevel, 50000), telemetry.NewPhoneHomeEmptyAgent(), nil, resolver)
219191

220-
mock.ExpectQuery("").WillReturnRows(sqlmock.NewRows([]string{"message$*%:;", "host.name", "@timestamp"}). // careful, it's not always in this order, order is nondeterministic
221-
AddRow("abcd", "abcd", "abcd").
222-
AddRow("prefix-text-to-highlight", "prefix-text-to-highlight", "prefix-text-to-highlight").
223-
AddRow("text-to-highlight-suffix", "text-to-highlight-suffix", "text-to-highlight-suffix").
224-
AddRow("text-to-highlight", "text-to-highlight", "text-to-highlight").
225-
AddRow("text", "text", "text"))
192+
// careful, it's not always in this order, order is nondeterministic
193+
mock.ExpectQuery("").WillReturnRows(sqlmock.NewRows([]string{"message$*%:;", "host.name", "@timestamp"}).
194+
AddRow("abcd", "abcd", "abcd").
195+
AddRow("prefix-text-to-highlight", "prefix-text-to-highlight", "prefix-text-to-highlight").
196+
AddRow("text-to-highlight-suffix", "text-to-highlight-suffix", "text-to-highlight-suffix").
197+
AddRow("text-to-highlight", "text-to-highlight", "text-to-highlight").
198+
AddRow("text", "text", "text"))
226199

227-
queryRunner := NewQueryRunner(lm, &DefaultConfig, nil, managementConsole, s, ab_testing.NewEmptySender(), resolver)
200+
queryRunner := NewQueryRunnerDefaultForTests(db, &DefaultConfig, tableName, concurrent.NewMapWith(tableName, &table), s)
228201
response, err := queryRunner.handleSearch(ctx, tableName, types.MustJSON(query))
229202
assert.NoError(t, err)
230203
if err != nil {

0 commit comments

Comments
 (0)