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

Commit e72b4aa

Browse files
committed
COMPLETE SET
1 parent b4132ed commit e72b4aa

File tree

1 file changed

+65
-1
lines changed

1 file changed

+65
-1
lines changed

ci/it/testcases/test_dual_write_and_common_table.go

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func (a *DualWriteAndCommonTableTestcase) SetupContainers(ctx context.Context) e
3333
func (a *DualWriteAndCommonTableTestcase) RunTests(ctx context.Context, t *testing.T) error {
3434
a.testBasicRequest(ctx, t)
3535
a.testIngestToClickHouseWorks(ctx, t)
36-
//a.testIngestToCommonTableWorks(ctx, t)
36+
a.testIngestToCommonTableWorks(ctx, t)
3737
a.testDualQueryReturnsDataFromClickHouse(ctx, t)
3838
a.testDualWritesWork(ctx, t)
3939
a.testWildcardGoesToElastic(ctx, t)
@@ -48,6 +48,70 @@ func (a *DualWriteAndCommonTableTestcase) testBasicRequest(ctx context.Context,
4848
defer resp.Body.Close()
4949
assert.Equal(t, http.StatusOK, resp.StatusCode)
5050
}
51+
func (a *DualWriteAndCommonTableTestcase) testIngestToCommonTableWorks(ctx context.Context, t *testing.T) {
52+
resp, err := a.RequestToQuesma(ctx, "POST", "/logs-4/_doc", []byte(`{"name": "Przemyslaw", "age": 31337}`))
53+
if err != nil {
54+
t.Fatalf("Failed to insert document: %s", err)
55+
}
56+
defer resp.Body.Close()
57+
assert.Equal(t, http.StatusOK, resp.StatusCode)
58+
59+
chQuery := "SELECT * FROM 'quesma_common_table'"
60+
rows, err := a.ExecuteClickHouseQuery(ctx, chQuery)
61+
if err != nil {
62+
t.Fatalf("Failed to execute query: %s", err)
63+
}
64+
columnTypes, err := rows.ColumnTypes()
65+
values := make([]interface{}, len(columnTypes))
66+
valuePtrs := make([]interface{}, len(columnTypes))
67+
for i := range values {
68+
valuePtrs[i] = &values[i]
69+
}
70+
var name string
71+
var age int
72+
var quesmaIndexName string
73+
for rows.Next() {
74+
if err := rows.Scan(valuePtrs...); err != nil {
75+
t.Fatalf("Failed to scan row: %s", err)
76+
}
77+
for i, col := range values {
78+
switch columnTypes[i].Name() {
79+
case "__quesma_index_name":
80+
if v, ok := col.(string); ok {
81+
quesmaIndexName = v
82+
}
83+
case "name":
84+
if v, ok := col.(*string); ok {
85+
name = *v
86+
}
87+
case "age":
88+
if v, ok := col.(*int64); ok {
89+
age = int(*v)
90+
}
91+
}
92+
}
93+
if name == "Przemyslaw" && age == 31337 && quesmaIndexName == "logs-4" {
94+
break
95+
}
96+
}
97+
assert.Equal(t, "Przemyslaw", name)
98+
assert.Equal(t, 31337, age)
99+
assert.Equal(t, "logs-4", quesmaIndexName)
100+
101+
resp, err = a.RequestToQuesma(ctx, "GET", "/logs-4/_search", []byte(`{"query": {"match_all": {}}}`))
102+
if err != nil {
103+
t.Fatalf("Failed to make GET request: %s", err)
104+
}
105+
defer resp.Body.Close()
106+
bodyBytes, err := io.ReadAll(resp.Body)
107+
if err != nil {
108+
t.Fatalf("Failed to read response body: %s", err)
109+
}
110+
111+
assert.Equal(t, http.StatusOK, resp.StatusCode)
112+
assert.Contains(t, string(bodyBytes), "Przemyslaw")
113+
assert.Contains(t, "Clickhouse", resp.Header.Get("X-Quesma-Source"))
114+
}
51115

52116
func (a *DualWriteAndCommonTableTestcase) testDualQueryReturnsDataFromClickHouse(ctx context.Context, t *testing.T) {
53117
resp, err := a.RequestToQuesma(ctx, "POST", "/logs-dual-query/_doc", []byte(`{"name": "Przemyslaw", "age": 31337}`))

0 commit comments

Comments
 (0)