2025-01-30 15:51:55 +05:30
|
|
|
package telemetrystoretest
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"github.com/ClickHouse/clickhouse-go/v2"
|
2025-03-31 19:41:11 +05:30
|
|
|
"github.com/DATA-DOG/go-sqlmock"
|
2025-03-20 21:01:41 +05:30
|
|
|
"github.com/SigNoz/signoz/pkg/telemetrystore"
|
2025-01-30 15:51:55 +05:30
|
|
|
cmock "github.com/srikanthccv/ClickHouse-go-mock"
|
|
|
|
|
)
|
|
|
|
|
|
2025-02-04 14:53:36 +05:30
|
|
|
var _ telemetrystore.TelemetryStore = (*Provider)(nil)
|
|
|
|
|
|
2025-01-30 15:51:55 +05:30
|
|
|
// Provider represents a mock telemetry store provider for testing
|
|
|
|
|
type Provider struct {
|
2025-03-31 19:41:11 +05:30
|
|
|
clickhouseDB cmock.ClickConnMockCommon
|
2025-01-30 15:51:55 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// New creates a new mock telemetry store provider
|
2025-03-31 19:41:11 +05:30
|
|
|
func New(_ telemetrystore.Config, matcher sqlmock.QueryMatcher) *Provider {
|
|
|
|
|
clickhouseDB, err := cmock.NewClickHouseWithQueryMatcher(&clickhouse.Options{}, matcher)
|
2025-01-30 15:51:55 +05:30
|
|
|
if err != nil {
|
2025-03-31 19:41:11 +05:30
|
|
|
panic(err)
|
2025-01-30 15:51:55 +05:30
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return &Provider{
|
2025-03-31 19:41:11 +05:30
|
|
|
clickhouseDB: clickhouseDB,
|
|
|
|
|
}
|
2025-01-30 15:51:55 +05:30
|
|
|
}
|
|
|
|
|
|
2025-02-04 14:53:36 +05:30
|
|
|
// ClickhouseDB returns the mock Clickhouse connection
|
2025-03-31 19:41:11 +05:30
|
|
|
func (p *Provider) ClickhouseDB() clickhouse.Conn {
|
|
|
|
|
return p.clickhouseDB.(clickhouse.Conn)
|
2025-01-30 15:51:55 +05:30
|
|
|
}
|
|
|
|
|
|
2025-06-21 00:55:38 +05:30
|
|
|
// Cluster returns the cluster name
|
|
|
|
|
func (p *Provider) Cluster() string {
|
|
|
|
|
return "cluster"
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-30 15:51:55 +05:30
|
|
|
// Mock returns the underlying Clickhouse mock instance for setting expectations
|
|
|
|
|
func (p *Provider) Mock() cmock.ClickConnMockCommon {
|
2025-03-31 19:41:11 +05:30
|
|
|
return p.clickhouseDB
|
2025-01-30 15:51:55 +05:30
|
|
|
}
|