(t *testing.T)
| 2961 | } |
| 2962 | |
| 2963 | func TestConfigsIncludeDefaults(t *testing.T) { |
| 2964 | base.ResetGlobalTestLogging(t) |
| 2965 | base.RequireNumTestBuckets(t, 2) |
| 2966 | base.SetUpTestLogging(t, base.LevelInfo, base.KeyHTTP) |
| 2967 | |
| 2968 | ctx := base.TestCtx(t) |
| 2969 | // Get a test bucket, to use to create the database. |
| 2970 | tb := base.GetTestBucket(t) |
| 2971 | defer tb.Close(ctx) |
| 2972 | |
| 2973 | // Start SG with no databases |
| 2974 | config := rest.BootstrapStartupConfigForTest(t) |
| 2975 | config.Logging.Console.LogKeys = []string{base.KeyDCP.String()} |
| 2976 | config.Logging.Console.LogLevel.Set(base.LevelDebug) |
| 2977 | config.Logging.Console.Enabled = base.Ptr(true) // only necessary for tests since they avoid InitLogging, normally this is inferred by InitLogging |
| 2978 | |
| 2979 | sc, closeFn := rest.StartServerWithConfig(t, &config) |
| 2980 | defer closeFn() |
| 2981 | |
| 2982 | resp := rest.BootstrapAdminRequest(t, sc, http.MethodPut, "/db/", |
| 2983 | fmt.Sprintf( |
| 2984 | `{"bucket": "%s", "num_index_replicas": 0, "enable_shared_bucket_access": %t, "use_views": %t}`, |
| 2985 | tb.GetName(), base.TestUseXattrs(), base.TestsDisableGSI(), |
| 2986 | ), |
| 2987 | ) |
| 2988 | resp.RequireStatus(http.StatusCreated) |
| 2989 | |
| 2990 | var dbConfig rest.DatabaseConfig |
| 2991 | resp = rest.BootstrapAdminRequest(t, sc, http.MethodGet, "/db/_config?include_runtime=true", "") |
| 2992 | resp.RequireStatus(http.StatusOK) |
| 2993 | err := base.JSONUnmarshal([]byte(resp.Body), &dbConfig) |
| 2994 | assert.NoError(t, err) |
| 2995 | |
| 2996 | // Validate a few default values to ensure they are set |
| 2997 | assert.Equal(t, channels.DocChannelsSyncFunction, *dbConfig.Sync) |
| 2998 | assert.Equal(t, db.DefaultChannelCacheMaxNumber, *dbConfig.CacheConfig.ChannelCacheConfig.MaxNumber) |
| 2999 | assert.Equal(t, base.DefaultOldRevExpirySeconds, *dbConfig.OldRevExpirySeconds) |
| 3000 | assert.Equal(t, false, *dbConfig.StartOffline) |
| 3001 | assert.Equal(t, db.DefaultCompactInterval, time.Duration(*dbConfig.CompactIntervalDays)*24*time.Hour) |
| 3002 | |
| 3003 | assert.Equal(t, dbConfig.Logging.Console.LogLevel.String(), base.LevelDebug.String()) |
| 3004 | assert.Equal(t, dbConfig.Logging.Console.LogKeys, []string{base.KeyDCP.String()}) |
| 3005 | |
| 3006 | var runtimeServerConfigResponse rest.RunTimeServerConfigResponse |
| 3007 | resp = rest.BootstrapAdminRequest(t, sc, http.MethodGet, "/_config?include_runtime=true", "") |
| 3008 | resp.RequireStatus(http.StatusOK) |
| 3009 | err = base.JSONUnmarshal([]byte(resp.Body), &runtimeServerConfigResponse) |
| 3010 | assert.NoError(t, err) |
| 3011 | |
| 3012 | require.Contains(t, runtimeServerConfigResponse.Databases, "db") |
| 3013 | runtimeServerConfigDatabase := runtimeServerConfigResponse.Databases["db"] |
| 3014 | assert.Equal(t, channels.DocChannelsSyncFunction, *runtimeServerConfigDatabase.Sync) |
| 3015 | assert.Equal(t, db.DefaultChannelCacheMaxNumber, *runtimeServerConfigDatabase.CacheConfig.ChannelCacheConfig.MaxNumber) |
| 3016 | assert.Equal(t, base.DefaultOldRevExpirySeconds, *runtimeServerConfigDatabase.OldRevExpirySeconds) |
| 3017 | assert.Equal(t, false, *runtimeServerConfigDatabase.StartOffline) |
| 3018 | assert.Equal(t, db.DefaultCompactInterval, time.Duration(*runtimeServerConfigDatabase.CompactIntervalDays)*24*time.Hour) |
| 3019 | |
| 3020 | // Test unsupported options |
nothing calls this directly
no test coverage detected