@@ -33,7 +33,7 @@ func (a *DualWriteAndCommonTableTestcase) SetupContainers(ctx context.Context) e
3333func (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
52116func (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