| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | package sql | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"testing" | 
					
						
							|  |  |  | 	"text/template" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/grafana/grafana/pkg/storage/unified/resource" | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/storage/unified/sql/sqltemplate/mocks" | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-27 18:22:40 +08:00
										 |  |  | func TestUnifiedStorageQueries(t *testing.T) { | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 	mocks.CheckQuerySnapshots(t, mocks.TemplateTestSetup{ | 
					
						
							|  |  |  | 		RootDir: "testdata", | 
					
						
							|  |  |  | 		Templates: map[*template.Template][]mocks.TemplateTestCase{ | 
					
						
							|  |  |  | 			sqlResourceDelete: { | 
					
						
							|  |  |  | 				{ | 
					
						
							|  |  |  | 					Name: "simple", | 
					
						
							|  |  |  | 					Data: &sqlResourceRequest{ | 
					
						
							| 
									
										
										
										
											2024-08-16 20:12:37 +08:00
										 |  |  | 						SQLTemplate: mocks.NewTestingSQLTemplate(), | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 						WriteEvent: resource.WriteEvent{ | 
					
						
							|  |  |  | 							Key: &resource.ResourceKey{ | 
					
						
							|  |  |  | 								Namespace: "nn", | 
					
						
							|  |  |  | 								Group:     "gg", | 
					
						
							|  |  |  | 								Resource:  "rr", | 
					
						
							|  |  |  | 								Name:      "name", | 
					
						
							|  |  |  | 							}, | 
					
						
							|  |  |  | 						}, | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 			sqlResourceInsert: { | 
					
						
							|  |  |  | 				{ | 
					
						
							|  |  |  | 					Name: "simple", | 
					
						
							|  |  |  | 					Data: &sqlResourceRequest{ | 
					
						
							| 
									
										
										
										
											2024-08-16 20:12:37 +08:00
										 |  |  | 						SQLTemplate: mocks.NewTestingSQLTemplate(), | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 						WriteEvent: resource.WriteEvent{ | 
					
						
							|  |  |  | 							Key: &resource.ResourceKey{ | 
					
						
							|  |  |  | 								Namespace: "nn", | 
					
						
							|  |  |  | 								Group:     "gg", | 
					
						
							|  |  |  | 								Resource:  "rr", | 
					
						
							|  |  |  | 								Name:      "name", | 
					
						
							|  |  |  | 							}, | 
					
						
							|  |  |  | 							Type:       resource.WatchEvent_ADDED, | 
					
						
							|  |  |  | 							PreviousRV: 123, | 
					
						
							|  |  |  | 						}, | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 			sqlResourceUpdate: { | 
					
						
							|  |  |  | 				{ | 
					
						
							|  |  |  | 					Name: "single path", | 
					
						
							|  |  |  | 					Data: &sqlResourceRequest{ | 
					
						
							| 
									
										
										
										
											2024-08-16 20:12:37 +08:00
										 |  |  | 						SQLTemplate: mocks.NewTestingSQLTemplate(), | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 						WriteEvent: resource.WriteEvent{ | 
					
						
							| 
									
										
										
										
											2024-10-11 17:11:33 +08:00
										 |  |  | 							Key: &resource.ResourceKey{ | 
					
						
							|  |  |  | 								Namespace: "nn", | 
					
						
							|  |  |  | 								Group:     "gg", | 
					
						
							|  |  |  | 								Resource:  "rr", | 
					
						
							|  |  |  | 								Name:      "name", | 
					
						
							|  |  |  | 							}, | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 						}, | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 			sqlResourceRead: { | 
					
						
							|  |  |  | 				{ | 
					
						
							|  |  |  | 					Name: "without_resource_version", | 
					
						
							|  |  |  | 					Data: &sqlResourceReadRequest{ | 
					
						
							| 
									
										
										
										
											2024-08-16 20:12:37 +08:00
										 |  |  | 						SQLTemplate: mocks.NewTestingSQLTemplate(), | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 						Request: &resource.ReadRequest{ | 
					
						
							| 
									
										
										
										
											2024-10-11 17:11:33 +08:00
										 |  |  | 							Key: &resource.ResourceKey{ | 
					
						
							|  |  |  | 								Namespace: "nn", | 
					
						
							|  |  |  | 								Group:     "gg", | 
					
						
							|  |  |  | 								Resource:  "rr", | 
					
						
							|  |  |  | 								Name:      "name", | 
					
						
							|  |  |  | 							}, | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 						}, | 
					
						
							| 
									
										
										
										
											2024-11-06 23:04:57 +08:00
										 |  |  | 						readResponse: new(readResponse), | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							| 
									
										
										
										
											2024-07-23 01:08:30 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 			sqlResourceList: { | 
					
						
							|  |  |  | 				{ | 
					
						
							|  |  |  | 					Name: "filter_on_namespace", | 
					
						
							|  |  |  | 					Data: &sqlResourceListRequest{ | 
					
						
							| 
									
										
										
										
											2024-08-16 20:12:37 +08:00
										 |  |  | 						SQLTemplate: mocks.NewTestingSQLTemplate(), | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 						Request: &resource.ListRequest{ | 
					
						
							|  |  |  | 							Limit: 10, | 
					
						
							|  |  |  | 							Options: &resource.ListOptions{ | 
					
						
							|  |  |  | 								Key: &resource.ResourceKey{ | 
					
						
							|  |  |  | 									Namespace: "ns", | 
					
						
							|  |  |  | 								}, | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | 							}, | 
					
						
							|  |  |  | 						}, | 
					
						
							|  |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							| 
									
										
										
										
											2024-07-23 01:08:30 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 			sqlResourceHistoryList: { | 
					
						
							|  |  |  | 				{ | 
					
						
							|  |  |  | 					Name: "single path", | 
					
						
							|  |  |  | 					Data: &sqlResourceHistoryListRequest{ | 
					
						
							| 
									
										
										
										
											2024-08-16 20:12:37 +08:00
										 |  |  | 						SQLTemplate: mocks.NewTestingSQLTemplate(), | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 						Request: &historyListRequest{ | 
					
						
							|  |  |  | 							Limit: 10, | 
					
						
							|  |  |  | 							Options: &resource.ListOptions{ | 
					
						
							|  |  |  | 								Key: &resource.ResourceKey{ | 
					
						
							|  |  |  | 									Namespace: "ns", | 
					
						
							|  |  |  | 								}, | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | 							}, | 
					
						
							|  |  |  | 						}, | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 						Response: new(resource.ResourceWrapper), | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							| 
									
										
										
										
											2024-10-07 16:01:53 +08:00
										 |  |  | 			sqlResourceHistoryPoll: { | 
					
						
							|  |  |  | 				{ | 
					
						
							|  |  |  | 					Name: "single path", | 
					
						
							|  |  |  | 					Data: &sqlResourceHistoryPollRequest{ | 
					
						
							|  |  |  | 						SQLTemplate:          mocks.NewTestingSQLTemplate(), | 
					
						
							|  |  |  | 						Resource:             "res", | 
					
						
							|  |  |  | 						Group:                "group", | 
					
						
							|  |  |  | 						SinceResourceVersion: 1234, | 
					
						
							|  |  |  | 						Response:             new(historyPollResponse), | 
					
						
							|  |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							| 
									
										
										
										
											2024-07-23 01:08:30 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 			sqlResourceUpdateRV: { | 
					
						
							|  |  |  | 				{ | 
					
						
							|  |  |  | 					Name: "single path", | 
					
						
							|  |  |  | 					Data: &sqlResourceUpdateRVRequest{ | 
					
						
							| 
									
										
										
										
											2024-08-16 20:12:37 +08:00
										 |  |  | 						SQLTemplate: mocks.NewTestingSQLTemplate(), | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							| 
									
										
										
										
											2024-07-23 01:08:30 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 			sqlResourceHistoryRead: { | 
					
						
							|  |  |  | 				{ | 
					
						
							|  |  |  | 					Name: "single path", | 
					
						
							|  |  |  | 					Data: &sqlResourceReadRequest{ | 
					
						
							| 
									
										
										
										
											2024-08-16 20:12:37 +08:00
										 |  |  | 						SQLTemplate: mocks.NewTestingSQLTemplate(), | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 						Request: &resource.ReadRequest{ | 
					
						
							|  |  |  | 							ResourceVersion: 123, | 
					
						
							| 
									
										
										
										
											2024-11-06 23:04:57 +08:00
										 |  |  | 							Key:             &resource.ResourceKey{}, | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 						}, | 
					
						
							| 
									
										
										
										
											2024-11-06 23:04:57 +08:00
										 |  |  | 						readResponse: new(readResponse), | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							| 
									
										
										
										
											2024-07-23 01:08:30 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 			sqlResourceHistoryUpdateRV: { | 
					
						
							|  |  |  | 				{ | 
					
						
							|  |  |  | 					Name: "single path", | 
					
						
							|  |  |  | 					Data: &sqlResourceUpdateRVRequest{ | 
					
						
							| 
									
										
										
										
											2024-08-16 20:12:37 +08:00
										 |  |  | 						SQLTemplate: mocks.NewTestingSQLTemplate(), | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							| 
									
										
										
										
											2024-07-23 01:08:30 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 			sqlResourceHistoryInsert: { | 
					
						
							|  |  |  | 				{ | 
					
						
							|  |  |  | 					Name: "insert into resource_history", | 
					
						
							|  |  |  | 					Data: &sqlResourceRequest{ | 
					
						
							| 
									
										
										
										
											2024-08-16 20:12:37 +08:00
										 |  |  | 						SQLTemplate: mocks.NewTestingSQLTemplate(), | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 						WriteEvent: resource.WriteEvent{ | 
					
						
							| 
									
										
										
										
											2024-10-11 17:11:33 +08:00
										 |  |  | 							Key: &resource.ResourceKey{ | 
					
						
							|  |  |  | 								Namespace: "nn", | 
					
						
							|  |  |  | 								Group:     "gg", | 
					
						
							|  |  |  | 								Resource:  "rr", | 
					
						
							|  |  |  | 								Name:      "name", | 
					
						
							|  |  |  | 							}, | 
					
						
							| 
									
										
										
										
											2024-10-07 16:01:53 +08:00
										 |  |  | 							PreviousRV: 1234, | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 						}, | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 			sqlResourceVersionGet: { | 
					
						
							|  |  |  | 				{ | 
					
						
							|  |  |  | 					Name: "single path", | 
					
						
							| 
									
										
										
										
											2024-10-11 17:11:33 +08:00
										 |  |  | 					Data: &sqlResourceVersionGetRequest{ | 
					
						
							|  |  |  | 						SQLTemplate: mocks.NewTestingSQLTemplate(), | 
					
						
							|  |  |  | 						Resource:    "resource", | 
					
						
							|  |  |  | 						Group:       "group", | 
					
						
							|  |  |  | 						Response:    new(resourceVersionResponse), | 
					
						
							|  |  |  | 						ReadOnly:    false, | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-10-11 17:11:33 +08:00
										 |  |  | 			sqlResourceVersionUpdate: { | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 				{ | 
					
						
							|  |  |  | 					Name: "increment resource version", | 
					
						
							| 
									
										
										
										
											2024-10-11 17:11:33 +08:00
										 |  |  | 					Data: &sqlResourceVersionUpsertRequest{ | 
					
						
							|  |  |  | 						SQLTemplate:     mocks.NewTestingSQLTemplate(), | 
					
						
							|  |  |  | 						Resource:        "resource", | 
					
						
							|  |  |  | 						Group:           "group", | 
					
						
							|  |  |  | 						ResourceVersion: int64(12354), | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 			sqlResourceVersionInsert: { | 
					
						
							|  |  |  | 				{ | 
					
						
							|  |  |  | 					Name: "single path", | 
					
						
							| 
									
										
										
										
											2024-10-11 17:11:33 +08:00
										 |  |  | 					Data: &sqlResourceVersionUpsertRequest{ | 
					
						
							|  |  |  | 						SQLTemplate:     mocks.NewTestingSQLTemplate(), | 
					
						
							|  |  |  | 						ResourceVersion: int64(12354), | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | 					}, | 
					
						
							|  |  |  | 				}, | 
					
						
							|  |  |  | 			}, | 
					
						
							| 
									
										
										
										
											2024-08-16 19:36:56 +08:00
										 |  |  | 		}}) | 
					
						
							| 
									
										
										
										
											2024-07-18 23:03:18 +08:00
										 |  |  | } |