// makeTestConfigtFromParams creates a Config from a TestServerParams. func makeTestConfigFromParams(params base.TestServerArgs) Config { cfg := makeTestConfig() cfg.TestingKnobs = params.Knobs if params.JoinAddr != "" { cfg.JoinList = []string{params.JoinAddr} } cfg.Insecure = params.Insecure cfg.SocketFile = params.SocketFile cfg.RetryOptions = params.RetryOptions if params.MetricsSampleInterval != 0 { cfg.MetricsSampleInterval = params.MetricsSampleInterval } if params.RaftTickInterval != 0 { cfg.RaftTickInterval = params.RaftTickInterval } if params.RaftElectionTimeoutTicks != 0 { cfg.RaftElectionTimeoutTicks = params.RaftElectionTimeoutTicks } if knobs := params.Knobs.Store; knobs != nil { if mo := knobs.(*storage.StoreTestingKnobs).MaxOffset; mo != 0 { cfg.MaxOffset = mo } } if params.ScanInterval != 0 { cfg.ScanInterval = params.ScanInterval } if params.ScanMaxIdleTime != 0 { cfg.ScanMaxIdleTime = params.ScanMaxIdleTime } if params.SSLCA != "" { cfg.SSLCA = params.SSLCA } if params.SSLCert != "" { cfg.SSLCert = params.SSLCert } if params.SSLCertKey != "" { cfg.SSLCertKey = params.SSLCertKey } if params.TimeSeriesQueryWorkerMax != 0 { cfg.TimeSeriesServerConfig.QueryWorkerMax = params.TimeSeriesQueryWorkerMax } if params.DisableEventLog { cfg.EventLogEnabled = false } cfg.JoinList = []string{params.JoinAddr} if cfg.Insecure { // Whenever we can (i.e. in insecure mode), use IsolatedTestAddr // to prevent issues that can occur when running a test under // stress. cfg.Addr = util.IsolatedTestAddr.String() cfg.AdvertiseAddr = util.IsolatedTestAddr.String() cfg.HTTPAddr = util.IsolatedTestAddr.String() } else { cfg.Addr = util.TestAddr.String() cfg.AdvertiseAddr = util.TestAddr.String() cfg.HTTPAddr = util.TestAddr.String() } if params.Addr != "" { cfg.Addr = params.Addr cfg.AdvertiseAddr = params.Addr } // Ensure we have the correct number of engines. Add in-memory ones where // needed. There must be at least one store/engine. if len(params.StoreSpecs) == 0 { params.StoreSpecs = []base.StoreSpec{base.DefaultTestStoreSpec} } // Validate the store specs. for _, storeSpec := range params.StoreSpecs { if storeSpec.InMemory { if storeSpec.SizePercent > 0 { panic(fmt.Sprintf("test server does not yet support in memory stores based on percentage of total memory: %s", storeSpec)) } } else { // TODO(bram): This will require some cleanup of on disk files. panic(fmt.Sprintf("test server does not yet support on disk stores: %s", storeSpec)) } } // Copy over the store specs. cfg.Stores = base.StoreSpecList{Specs: params.StoreSpecs} if cfg.TestingKnobs.Store == nil { cfg.TestingKnobs.Store = &storage.StoreTestingKnobs{} } cfg.TestingKnobs.Store.(*storage.StoreTestingKnobs).SkipMinSizeCheck = true return cfg }