cmd\main.go:13: "kra/internal/conf" cmd\main.go:147: runtime := conf.NewRuntime(bc.Data, bc.Admin) cmd\main.go:148: unsubscribeLogger := runtime.Subscribe(func(_ *conf.Data, admin *conf.AdminBackend) { cmd\main_test.go:6: "kra/internal/conf" cmd\wire_gen.go:16: "kra/internal/conf" internal\app\runtime.go:30: return module.NewRuntime(contributions.Routes...) cmd\wire.go:14: "kra/internal/conf" pkg\module\module_test.go:54: runtime := NewRuntime(nil, stub) pkg\mq\mqtt.go:102: return waitToken(ctx, client.Subscribe(topic, qos, func(_ paho.Client, msg paho.Message) { pkg\module\module.go:84:func NewRuntime(routes ...RouteRegistrar) *Runtime { internal\config\runtime_test.go:63: runtime := NewRuntime(&Config{Admin: &Admin{JWT: &JWT{SigningKey: "before"}}}) internal\config\runtime_test.go:65: stop := runtime.Subscribe(func(value *Config) { internal\config\runtime_test.go:69: runtime.Replace(&Config{Admin: &Admin{JWT: &JWT{SigningKey: "after"}}}) internal\config\runtime_test.go:72: value := runtime.Snapshot() internal\config\runtime_test.go:82: runtime := NewRuntime(&Config{Data: &Data{Database: &Database{Name: "initial"}}}) internal\config\runtime_test.go:89: _ = runtime.Snapshot() internal\config\runtime_test.go:94: runtime.Replace(&Config{Data: &Data{Database: &Database{Name: "next"}}}) internal\config\runtime_test.go:111: value := runtime.Snapshot() internal\config\runtime_test.go:117: t.Fatalf("watcher did not reload configuration: %#v", runtime.Snapshot()) internal\config\runtime.go:56:func NewRuntime(config *Config) *Runtime { internal\config\runtime.go:61: runtime.Replace(config) internal\config\runtime.go:71: runtime := NewRuntime(config) internal\config\runtime.go:87: config := r.Snapshot() internal\config\runtime.go:95: config := r.Snapshot() internal\config\runtime.go:103: config := r.Snapshot() internal\config\runtime.go:111: config := r.Snapshot() internal\config\runtime.go:122: config := r.Snapshot() internal\config\runtime.go:155: if path := r.ConfigPath(); path != "" { internal\config\runtime.go:200: path := r.ConfigPath() internal\config\runtime.go:268: r.Replace(config) internal\global\resources_test.go:61: resources := registry.Snapshot() internal\global\resources_test.go:79: registry.Replace(Resources{ internal\global\resources_test.go:84: resources := registry.Snapshot() internal\global\resources_test.go:124: registry.Replace(Resources{Redis: redisClient, Storage: storage, MQ: mq, WebSocket: webSocket, Scheduler: scheduler}) internal\global\resources_test.go:125: resources := registry.Snapshot() internal\global\resources_test.go:144: _ = registry.Snapshot() internal\global\resources.go:80:func (r *ResourceRegistry) Logger() *slog.Logger { return r.Snapshot().Logger } internal\global\resources.go:86:func (r *ResourceRegistry) DB() *gorm.DB { return r.Snapshot().DB } internal\global\resources.go:98: return r.Snapshot().NamedDBs[name] internal\global\resources.go:106:func (r *ResourceRegistry) Redis() redis.UniversalClient { return r.Snapshot().Redis } internal\global\resources.go:118: return r.Snapshot().NamedRedis[name] internal\global\resources.go:126:func (r *ResourceRegistry) Mongo() *mongo.Client { return r.Snapshot().Mongo } internal\global\resources.go:132:func (r *ResourceRegistry) Storage() FileStorage { return r.Snapshot().Storage } internal\global\resources.go:138:func (r *ResourceRegistry) MQ() platformmq.Registry { return r.Snapshot().MQ } internal\global\resources.go:144:func (r *ResourceRegistry) WebSocket() platformws.Hub { return r.Snapshot().WebSocket } internal\global\resources.go:150:func (r *ResourceRegistry) Scheduler() Scheduler { return r.Snapshot().Scheduler } internal\global\resources.go:241:func ResourceSnapshot() Resources { return defaultResources.Snapshot() } internal\global\resources.go:243:func ReplaceResources(resources Resources) { defaultResources.Replace(resources) } internal\conf\runtime_test.go:9: runtime := NewRuntime(&Data{Database: &Data_Database{Name: "first"}}, &AdminBackend{RouterPrefix: "/api", Jwt: &AdminBackend_JWT{SigningKey: "secret"}}) internal\conf\runtime_test.go:25: runtime := NewRuntime(&Data{Database: &Data_Database{Name: "initial"}}, &AdminBackend{Jwt: &AdminBackend_JWT{SigningKey: "initial"}}) internal\conf\runtime_test.go:38: runtime.Replace(&Data{Database: &Data_Database{Name: "next"}}, &AdminBackend{Jwt: &AdminBackend_JWT{SigningKey: "next"}}) internal\conf\runtime.go:24:func NewRuntime(data *Data, admin *AdminBackend) *Runtime { internal\conf\runtime.go:26: runtime.Replace(data, admin) internal\conf\conf.pb.go:2216: " \x01(\tR\taccountIdB\x18Z\x16kra/internal/conf;confb\x06proto3" internal\biz\task\task.go:236: return uc.runtime.Subscribe(userID) internal\data\database.go:22: "kra/internal/config" internal\data\data.go:14: "kra/internal/config" internal\data\data.go:52: runtime *config.Runtime internal\data\data.go:79:func (d *Data) Runtime() *config.Runtime { internal\data\data.go:164:func NewData(runtime *config.Runtime, appLogger *slog.Logger, storageManager *storage.Reloadable, catalog module.Catalog) (*Data, func(), error) { internal\data\data.go:256: runtime.Replace(c, admin) internal\data\data.go:265: storageManager.Replace(activeStorage) internal\data\data.go:327: d.runtime.UpdateDatabase(config) internal\data\initialization_backend_test.go:10: "kra/internal/config" internal\data\initialization_backend_test.go:81: runtime := config.NewRuntime(&config.Data{}, &config.Admin{ConfigPath: configPath}) internal\data\config_watch_test.go:10: "kra/internal/config" internal\data\config_watch_test.go:20: runtime := config.NewRuntime(&config.Data{}, &config.Admin{ConfigPath: configPath}) internal\data\config_watch_test.go:24: stopListener := runtime.Subscribe(func(*config.Data, *config.Admin) { internal\data\initialization_backend.go:9: "kra/internal/config" internal\data\initialization_backend.go:18:func (d *Data) RuntimeValues() (*config.Data, *config.Admin) { return d.runtime.Values() } internal\data\initialization_backend.go:61: currentData, currentAdmin := d.runtime.Values() internal\data\initialization_backend.go:88: d.runtime.Replace(currentData, next) internal\data\initialization_backend.go:90: d.storage.Replace(candidateStorage) internal\data\initialization_backend.go:95: currentData, currentAdmin := d.runtime.Values() internal\data\initialization_backend.go:125: d.runtime.Replace(nextData, nextAdmin) internal\data\initialization_backend.go:127: d.storage.Replace(candidateStorage) internal\data\initialization_backend.go:218: currentData, currentAdmin := d.runtime.Values() internal\data\initialization_backend.go:228: d.runtime.Replace(currentData, currentAdmin) internal\data\initialization_backend.go:230: d.integrations.Replace(integrationConfigs) internal\data\integration_config.go:10: "kra/internal/config" internal\data\integration_config_test.go:11: "kra/internal/config" internal\data\integration_config_test.go:252: runtime: config.NewRuntime(&config.Data{}, currentAdmin), internal\data\config_helpers.go:4: "kra/internal/config" internal\data\config_store.go:12: "kra/internal/config" internal\data\config_store.go:155: dataConfig, adminConfig := d.runtime.Values() internal\data\config_store.go:214: configPath := d.runtime.ConfigPath() internal\data\config_store.go:262: configPath := d.runtime.ConfigPath() internal\data\config_store.go:313: configPath := d.runtime.ConfigPath() internal\data\config_store.go:431: d.runtime.Replace(next.Data, next.Admin) internal\data\config_store.go:433: d.integrations.Replace(integrationConfigs) internal\data\config_store.go:436: d.storage.Replace(candidateStorage) internal\data\config_watch.go:16: configPath := d.runtime.ConfigPath() internal\data\config_watch.go:91: d.runtime.Replace(next.Data, next.Admin) internal\server\gin.go:9: "kra/internal/config" internal\server\gin.go:23:func NewGinEngine(runtime *config.Runtime, access *service.AccessControlService, handlers *handler.Set, auth *service.AuthService, security *service.SecurityService, audit *service.AuditRecorder, logger *slog.Logger, version string) *gin.Engine { internal\server\gin.go:24: return NewGinEngineWithRuntime(runtime, access, auth, security, audit, logger, version, platformmodule.NewRuntime(router.NewRoutes(handlers)), nil) internal\server\gin.go:27:func NewGinEngineWithRuntime(runtime *config.Runtime, access *service.AccessControlService, auth middleware.TokenAuthenticator, security *service.SecurityService, audit *service.AuditRecorder, logger *slog.Logger, version string, routes *platformmodule.Runtime, ws *websocket.Server) *gin.Engine { internal\server\gin.go:29: runtime = config.NewRuntime(nil) internal\server\gin.go:39: snapshot := runtime.Snapshot() internal\server\gin_test.go:14: "kra/internal/config" internal\server\gin_test.go:35: engine := NewGinEngine(config.NewRuntime(&config.Config{Admin: &config.Admin{}}), nil, emptyHandlers(), nil, nil, nil, nil, "test") internal\server\gin_test.go:69: engine := NewGinEngine(config.NewRuntime(&config.Config{Admin: &config.Admin{}}), nil, emptyHandlers(), nil, nil, nil, nil, "test") internal\server\gin_test.go:89: engine := NewGinEngine(config.NewRuntime(&config.Config{Admin: &config.Admin{}}), nil, emptyHandlers(), nil, nil, nil, logger, "test") internal\server\gin_test.go:100: engine := NewGinEngine(config.NewRuntime(&config.Config{Admin: &config.Admin{}}), nil, emptyHandlers(), nil, nil, nil, nil, "v1.0.0") internal\server\gin_test.go:116: engine := NewGinEngine(config.NewRuntime(&config.Config{Admin: &config.Admin{RouterPrefix: "/admin"}}), nil, emptyHandlers(), nil, nil, nil, nil, "v1.0.0") internal\server\gin_test.go:131: engine := NewGinEngine(config.NewRuntime(&config.Config{Admin: &config.Admin{}}), nil, emptyHandlers(), nil, nil, nil, nil, "v1.0.0") internal\server\gin_test.go:140: engine := NewGinEngine(config.NewRuntime(&config.Config{Admin: &config.Admin{}}), nil, emptyHandlers(), nil, nil, nil, nil, "test") internal\server\gin_test.go:154: engine := NewGinEngine(config.NewRuntime(&config.Config{Admin: &config.Admin{}}), nil, emptyHandlers(), nil, nil, nil, nil, "test") internal\server\gin_test.go:169: runtime := config.NewRuntime(&config.Config{Admin: &config.Admin{Local: &config.Local{StorePath: root, PathPrefix: "uploads/file"}, Storage: &config.Storage{Type: "local"}}}) internal\server\gin_test.go:193: runtime := config.NewRuntime(&config.Config{Admin: &config.Admin{Local: &config.Local{StorePath: t.TempDir(), PathPrefix: "uploads/file"}}}) internal\server\gin_test.go:216: runtime := config.NewRuntime(&config.Config{Admin: &config.Admin{Local: &config.Local{StorePath: root, PathPrefix: "uploads/file"}, Storage: &config.Storage{Type: "local"}}}) internal\server\gin_test.go:218: runtime.Replace(&config.Config{Admin: &config.Admin{Local: &config.Local{StorePath: root, PathPrefix: "files"}, Storage: &config.Storage{Type: "local"}}}) internal\server\gin_test.go:233: runtime := config.NewRuntime(&config.Config{Admin: &config.Admin{Local: &config.Local{StorePath: t.TempDir(), PathPrefix: "api"}, Storage: &config.Storage{Type: "local"}}}) internal\server\gin_test.go:243: runtime := config.NewRuntime(&config.Config{Admin: &config.Admin{Local: &config.Local{StorePath: t.TempDir(), PathPrefix: "uploads/file"}, Storage: &config.Storage{Type: "s3"}}}) internal\data\integration_runtime.go:19: d.integrations.Replace(configs) internal\data\mongo.go:9: "kra/internal/config" internal\worker\task_scheduler_test.go:10: first := scheduler.Subscribe(1) internal\worker\task_scheduler_test.go:11: second := scheduler.Subscribe(1) internal\worker\task_scheduler_test.go:12: third := scheduler.Subscribe(2) internal\worker\task_scheduler_test.go:34: channels = append(channels, scheduler.Subscribe(7)) internal\worker\task_scheduler_test.go:60: ch := scheduler.Subscribe(9) internal\worker\task_registry.go:10: "kra/internal/config" internal\worker\task_registry.go:20: runtime *config.Runtime internal\worker\task_registry.go:23:func NewTaskMethods(tasks *taskbiz.TaskUsecase, maintenance *system.MaintenanceUsecase, media *system.MediaUsecase, runtime *config.Runtime) *TaskMethods { internal\worker\task_registry.go:58: if snapshot := methods.runtime.Snapshot(); snapshot != nil { internal\data\payment\payment.go:411: normalized := strings.NewReplacer(".", "_", "-", "_", " ", "_").Replace(strings.ToLower(strings.TrimSpace(value))) internal\server\middleware\access_log.go:18: "kra/internal/config" internal\server\middleware\access_log.go:28:func AccessLog(runtime *config.Runtime, logger *slog.Logger, version string) gin.HandlerFunc { internal\server\middleware\access_log.go:36: if snapshot := runtime.Snapshot(); snapshot != nil { internal\server\staticfiles\staticfiles.go:12: "kra/internal/config" internal\server\staticfiles\staticfiles.go:19:func Register(engine *gin.Engine, runtime *config.Runtime) { internal\server\staticfiles\staticfiles.go:39:func Serve(c *gin.Context, runtime *config.Runtime) bool { internal\server\staticfiles\staticfiles.go:48:func localConfig(runtime *config.Runtime) *config.Local { internal\server\staticfiles\staticfiles.go:52: snapshot := runtime.Snapshot() internal\server\staticfiles\staticfiles.go:76:func serveAt(c *gin.Context, runtime *config.Runtime, prefix string) bool { internal\server\middleware\access.go:7: "kra/internal/config" internal\server\middleware\access.go:18:func AccessControl(runtime *config.Runtime, access accessController) gin.HandlerFunc { internal\server\middleware\access.go:33: if snapshot := runtime.Snapshot(); snapshot != nil && snapshot.Admin != nil { internal\server\websocket_auth_test.go:12: "kra/internal/config" internal\server\websocket_auth_test.go:47: engine := NewGinEngineWithRuntime(config.NewRuntime(&config.Config{Admin: &config.Admin{}}), nil, auth, nil, nil, nil, "test", nil, ws) internal\integration\websocket\server.go:40: s.stop = store.Subscribe("websocket", ProviderMelody, func(config runtimeconfig.Config) { s.apply(config) }) internal\server\middleware\audit.go:15: "kra/internal/config" internal\server\middleware\audit.go:25:func OperationAudit(runtime *config.Runtime, recorder *service.AuditRecorder) gin.HandlerFunc { internal\server\middleware\audit.go:42: if snapshot := runtime.Snapshot(); snapshot != nil && snapshot.Admin != nil && snapshot.Admin.Zap != nil && snapshot.Admin.Zap.AccessLogMaxBytes > 0 { internal\server\middleware\cors_test.go:8: "kra/internal/config" internal\server\middleware\cors_test.go:16: engine.Use(CORS(config.NewRuntime(&config.Config{Admin: admin}))) internal\server\middleware\cors.go:7: "kra/internal/config" internal\server\middleware\cors.go:20:func CORS(runtime *config.Runtime) gin.HandlerFunc { internal\server\middleware\cors.go:26: snapshot := runtime.Snapshot() internal\server\middleware\access_test.go:12: "kra/internal/config" internal\server\middleware\access_test.go:39: engine.Use(AccessControl(config.NewRuntime(&config.Config{Admin: &config.Admin{}}), &accessControllerStub{scopeErr: errors.New("database unavailable")})) internal\server\middleware\access_log_test.go:12: "kra/internal/config" internal\server\middleware\access_log_test.go:21: engine.Use(AccessLog(config.NewRuntime(&config.Config{Admin: &config.Admin{}}), nil, "test")) internal\server\middleware\access_log_test.go:37: engine.Use(AccessLog(config.NewRuntime(&config.Config{Admin: &config.Admin{}}), nil, "test")) internal\server\middleware\access_log_test.go:54: engine.Use(AccessLog(config.NewRuntime(&config.Config{Admin: &config.Admin{}}), nil, "test")) internal\server\middleware\access_log_test.go:73: runtime := config.NewRuntime(&config.Config{Admin: &config.Admin{Zap: &config.Zap{AccessReqBody: true, AccessReqHeaders: true, AccessRespData: true}}}) internal\server\middleware\access_log_test.go:104: runtime := config.NewRuntime(&config.Config{Admin: &config.Admin{Zap: &config.Zap{AccessReqBody: true, AccessReqHeaders: true, AccessRespData: true}}}) internal\server\middleware\access_log_test.go:130: runtime := config.NewRuntime(&config.Config{Admin: &config.Admin{}}) internal\integration\email\email_test.go:7: "kra/internal/config" internal\integration\email\email_test.go:11: runtime := config.NewRuntime(&config.Data{}, &config.Admin{Email: &config.Email{To: " "}}) internal\integration\email\email_test.go:19: runtime := config.NewRuntime(&config.Data{}, &config.Admin{Email: &config.Email{Host: "smtp.example.com", From: "from@example.com", Secret: "secret", Port: 25}}) internal\integration\email\email.go:16: "kra/internal/config" internal\integration\email\email.go:19:type emailRepo struct{ runtime *config.Runtime } internal\integration\email\email.go:21:func NewEmailRepo(runtime *config.Runtime) system.EmailRepo { internal\integration\email\email.go:64: return strings.NewReplacer("\r", "", "\n", "").Replace(value) internal\service\task\task.go:81:func (s *TaskService) Subscribe(userID uint) chan []byte { return s.uc.Subscribe(userID) } internal\server\handler\task.go:138: events := h.service.Subscribe(claims.ID) internal\initialize\configuration_test.go:7: "kra/internal/conf" internal\integration\storage\tencent_storage.go:14: "kra/internal/config" internal\initialize\configuration.go:7: "kra/internal/conf" internal\integration\storage\s3_storage.go:12: "kra/internal/config" internal\integration\storage\reloadable_test.go:68: reloadable.Replace(&emptyStorage{}) internal\initialize\compatibility.go:9: "kra/internal/conf" internal\initialize\backend.go:7: "kra/internal/conf" internal\data\system\api_policy_test.go:9: "kra/internal/config" internal\data\system\api_policy_test.go:23: runtime: config.NewRuntime( internal\integration\storage\reloadable.go:10: "kra/internal/config" internal\integration\storage\reloadable.go:18:func NewFileStorage(runtime *config.Runtime) (*Reloadable, error) { internal\integration\storage\qiniu_storage.go:14: "kra/internal/config" internal\integration\storage\local.go:14: "kra/internal/config" internal\integration\storage\huawei_storage.go:11: "kra/internal/config" internal\data\system\authority_test.go:9: "kra/internal/config" internal\data\system\authority_test.go:17: currentData, _ := data.runtime.Values() internal\data\system\authority_test.go:18: data.runtime.Replace(currentData, &config.Admin{System: &config.System{UseStrictAuth: true}}) internal\integration\storage\aws_storage.go:11: "kra/internal/config" internal\integration\storage\aliyun_storage.go:11: "kra/internal/config" internal\integration\payment\alipay.go:439: normalized := strings.NewReplacer(".", "_", "-", "_", " ", "_").Replace(strings.ToLower(strings.TrimSpace(value))) internal\integration\runtimeconfig\store_test.go:12: stop := store.Subscribe("mq", "rabbitmq", func(config Config) { updates <- config }) internal\integration\runtimeconfig\store_test.go:36: stop := store.Subscribe("mq", "rabbitmq", func(config Config) { updates <- config }) internal\integration\runtimeconfig\store_test.go:47: store.Replace([]Config{config}) internal\integration\runtimeconfig\store_test.go:56: store.Replace([]Config{changed}) internal\integration\runtimeconfig\store_test.go:70: stop := store.Subscribe("mq", "rabbitmq", func(config Config) { updates <- config }) internal\integration\payment\allinpay.go:210: normalized := strings.NewReplacer(".", "_", "-", "_", " ", "_").Replace(strings.ToLower(strings.TrimSpace(value))) internal\integration\mq\emqx.go:71: store.Subscribe("mq", ProviderEMQX, func(config runtimeconfig.Config) { r.apply(ProviderEMQX, config) }), internal\integration\mq\emqx.go:72: store.Subscribe("mq", ProviderRabbitMQ, func(config runtimeconfig.Config) { r.apply(ProviderRabbitMQ, config) }), internal\integration\mq\emqx.go:362: if err := client.Subscribe(context.Background(), topic, qos, r.dispatcher(provider, topic)); err != nil { internal\integration\mq\emqx.go:445: if err := client.Subscribe(context.Background(), topic, qos, r.dispatcher(provider, topic)); err != nil { internal\integration\payment\lakala.go:74: return strings.NewReplacer(".", "_", "-", "_", " ", "_").Replace(strings.ToLower(strings.TrimSpace(method))) internal\integration\mq\emqx_test.go:57: if err := r.Subscribe(context.Background(), "orders/+/paid", platformmq.AtLeastOnce, handler); err != nil { internal\integration\mq\emqx_test.go:204: err := r.Subscribe(context.Background(), "events.offline", platformmq.AtLeastOnce, func(context.Context, platformmq.Message) {}) internal\integration\payment\douyin.go:113: normalized := strings.NewReplacer(".", "_", "-", "_", " ", "_").Replace(strings.ToLower(strings.TrimSpace(value))) internal\data\system\log_file_test.go:11: "kra/internal/config" internal\data\system\log_file_test.go:25: runtime := config.NewRuntime(nil, &config.Admin{Zap: &config.Zap{Director: root}}) internal\data\system\log_file_test.go:44: runtime := config.NewRuntime(nil, &config.Admin{Zap: &config.Zap{Director: t.TempDir()}}) internal\integration\payment\saobei.go:92: normalized := strings.NewReplacer(".", "_", "-", "_", " ", "_").Replace(strings.ToLower(strings.TrimSpace(value))) internal\data\system\menu_test.go:9: "kra/internal/config" internal\data\system\menu_test.go:23: runtime: config.NewRuntime(&config.Data{Database: &config.Database{Driver: "sqlite"}}, &config.Admin{}), internal\integration\payment\wechat_v3.go:123: return strings.NewReplacer(".", "", "-", "_", " ", "_").Replace(strings.ToLower(strings.TrimSpace(value))) internal\integration\payment\wechat_v2.go:189: normalized := strings.NewReplacer(".", "_", "-", "_", " ", "_").Replace(strings.ToLower(strings.TrimSpace(value))) internal\data\system\permission_test.go:8: "kra/internal/config" internal\data\system\permission_test.go:19: data := &Data{gormDB: newReloadableDB(db, nil), runtime: config.NewRuntime(&config.Data{Database: &config.Database{Driver: "sqlite"}}, &config.Admin{})} internal\data\system\permission_test.go:39: data := &Data{gormDB: newReloadableDB(db, nil), runtime: config.NewRuntime(&config.Data{Database: &config.Database{Driver: "sqlite"}}, &config.Admin{})} internal\data\system\permission_test.go:70: data := &Data{gormDB: newReloadableDB(db, nil), runtime: config.NewRuntime(&config.Data{Database: &config.Database{Driver: "sqlite"}}, &config.Admin{})} internal\data\system\provider.go:4: "kra/internal/config" internal\data\system\provider.go:15: Runtime() *config.Runtime internal\data\system\runtime.go:10: "kra/internal/config" internal\data\system\runtime.go:16:type runtimeSettings struct{ runtime *config.Runtime } internal\data\system\runtime.go:18:func NewRuntimeSettings(runtime *config.Runtime) system.RuntimeSettings { internal\data\system\testing_support_test.go:10: "kra/internal/config" internal\data\system\testing_support_test.go:19: runtime *config.Runtime internal\data\system\testing_support_test.go:32:func (d *Data) Runtime() *config.Runtime { internal\data\system\transactions_test.go:9: "kra/internal/config" internal\data\system\transactions_test.go:14: name := strings.NewReplacer("/", "_", " ", "_").Replace(t.Name()) internal\data\system\transactions_test.go:22: data := &Data{gormDB: newReloadableDB(db, nil), redis: newReloadableRedis(nil), runtime: config.NewRuntime(&config.Data{Database: &config.Database{Driver: "sqlite"}}, &config.Admin{})}