MCPcopy Index your code
hub / github.com/bytebase/bytebase / TestGetQuerySpan

Function TestGetQuerySpan

backend/plugin/parser/mysql/query_span_test.go:21–83  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

19)
20
21func TestGetQuerySpan(t *testing.T) {
22 type testCase struct {
23 Description string `yaml:"description,omitempty"`
24 Statement string `yaml:"statement,omitempty"`
25 DefaultDatabase string `yaml:"defaultDatabase,omitempty"`
26 IgnoreCaseSensitve bool `yaml:"ignoreCaseSensitive,omitempty"`
27 // Metadata is the protojson encoded storepb.DatabaseSchemaMetadata,
28 // if it's empty, we will use the defaultDatabaseMetadata.
29 Metadata string `yaml:"metadata,omitempty"`
30 QuerySpan *base.YamlQuerySpan `yaml:"querySpan,omitempty"`
31 }
32
33 var (
34 record = false
35 testDataPaths = []string{
36 "test-data/query-span/query_type.yaml",
37 "test-data/query-span/standard.yaml",
38 "test-data/query-span/case_insensitive.yaml",
39 "test-data/query-span/starrocks.yaml",
40 }
41 )
42
43 a := require.New(t)
44 for _, testDataPath := range testDataPaths {
45 engine := storepb.Engine_MYSQL
46 if strings.Contains(testDataPath, "starrocks") {
47 engine = storepb.Engine_STARROCKS
48 }
49
50 testDataPath := testDataPath
51
52 yamlFile, err := os.Open(testDataPath)
53 a.NoError(err)
54
55 var testCases []testCase
56 byteValue, err := io.ReadAll(yamlFile)
57 a.NoError(err)
58 a.NoError(yamlFile.Close())
59 a.NoError(yaml.Unmarshal(byteValue, &testCases))
60
61 for i, tc := range testCases {
62 metadata := &storepb.DatabaseSchemaMetadata{}
63 a.NoErrorf(common.ProtojsonUnmarshaler.Unmarshal([]byte(tc.Metadata), metadata), "cases %d", i+1)
64 databaseMetadataGetter, databaseNameLister := buildMockDatabaseMetadataGetter([]*storepb.DatabaseSchemaMetadata{metadata})
65 result, err := GetQuerySpan(context.TODO(), base.GetQuerySpanContext{
66 GetDatabaseMetadataFunc: databaseMetadataGetter,
67 ListDatabaseNamesFunc: databaseNameLister,
68 Engine: engine,
69 }, base.Statement{Text: tc.Statement}, tc.DefaultDatabase, "", tc.IgnoreCaseSensitve)
70 a.NoErrorf(err, "statement: %s", tc.Statement)
71 resultYaml := result.ToYaml()
72 if record {
73 testCases[i].QuerySpan = resultYaml
74 } else {
75 a.Equalf(tc.QuerySpan, resultYaml, "statement: %s", tc.Statement)
76 }
77 }
78

Callers

nothing calls this directly

Calls 7

RecordFunction · 0.92
UnmarshalMethod · 0.80
ToYamlMethod · 0.80
GetQuerySpanFunction · 0.70
OpenMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected