(b *testing.B)
| 926 | } |
| 927 | |
| 928 | func BenchmarkReparse(b *testing.B) { |
| 929 | ctx := context.Background() |
| 930 | files := map[string]string{ |
| 931 | // rill.yaml |
| 932 | `rill.yaml`: ``, |
| 933 | // model m1 |
| 934 | `models/m1.sql`: ` |
| 935 | SELECT 1 |
| 936 | `, |
| 937 | // model m2 |
| 938 | `models/m2.sql`: ` |
| 939 | SELECT * FROM m1 |
| 940 | `, |
| 941 | `models/m2.yaml`: ` |
| 942 | materialize: true |
| 943 | `, |
| 944 | } |
| 945 | resources := []*Resource{ |
| 946 | // m1 |
| 947 | { |
| 948 | Name: ResourceName{Kind: ResourceKindModel, Name: "m1"}, |
| 949 | Paths: []string{"/models/m1.sql"}, |
| 950 | ModelSpec: &runtimev1.ModelSpec{ |
| 951 | RefreshSchedule: &runtimev1.Schedule{RefUpdate: true}, |
| 952 | InputConnector: "duckdb", |
| 953 | InputProperties: must(structpb.NewStruct(map[string]any{"sql": strings.TrimSpace(files["models/m1.sql"])})), |
| 954 | OutputConnector: "duckdb", |
| 955 | ChangeMode: runtimev1.ModelChangeMode_MODEL_CHANGE_MODE_RESET, |
| 956 | }, |
| 957 | }, |
| 958 | // m2 |
| 959 | { |
| 960 | Name: ResourceName{Kind: ResourceKindModel, Name: "m2"}, |
| 961 | Refs: []ResourceName{{Kind: ResourceKindModel, Name: "m1"}}, |
| 962 | Paths: []string{"/models/m2.sql", "/models/m2.yaml"}, |
| 963 | ModelSpec: &runtimev1.ModelSpec{ |
| 964 | RefreshSchedule: &runtimev1.Schedule{RefUpdate: true}, |
| 965 | InputConnector: "duckdb", |
| 966 | InputProperties: must(structpb.NewStruct(map[string]any{"sql": strings.TrimSpace(files["models/m2.sql"])})), |
| 967 | OutputConnector: "duckdb", |
| 968 | OutputProperties: must(structpb.NewStruct(map[string]any{"materialize": true})), |
| 969 | ChangeMode: runtimev1.ModelChangeMode_MODEL_CHANGE_MODE_RESET, |
| 970 | }, |
| 971 | }, |
| 972 | } |
| 973 | repo := makeRepo(b, files) |
| 974 | p, err := Parse(ctx, repo, "", "", "duckdb", true) |
| 975 | require.NoError(b, err) |
| 976 | requireResourcesAndErrors(b, p, resources, nil) |
| 977 | |
| 978 | b.ResetTimer() |
| 979 | for i := 0; i < b.N; i++ { |
| 980 | files[`models/m2.sql`] = fmt.Sprintf(`SELECT * FROM m1 LIMIT %d`, i) |
| 981 | _, err = p.Reparse(ctx, []string{`models/m2.sql`}) |
| 982 | require.NoError(b, err) |
| 983 | require.Empty(b, p.Errors) |
| 984 | } |
| 985 | } |
nothing calls this directly
no test coverage detected