1 /* 2 * 3 * Copyright 2023 gRPC authors. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 */ 18 19 // Package internal allows for easier testing of the weightedroundrobin 20 // package. 21 package internal 22 23 import ( 24 "time" 25 ) 26 27 // AllowAnyWeightUpdatePeriod permits any setting of WeightUpdatePeriod for 28 // testing. Normally a minimum of 100ms is applied. 29 var AllowAnyWeightUpdatePeriod bool 30 31 // LBConfig allows tests to produce a JSON form of the config from the struct 32 // instead of using a string. 33 type LBConfig struct { 34 EnableOOBLoadReport *bool `json:"enableOobLoadReport,omitempty"` 35 OOBReportingPeriod *string `json:"oobReportingPeriod,omitempty"` 36 BlackoutPeriod *string `json:"blackoutPeriod,omitempty"` 37 WeightExpirationPeriod *string `json:"weightExpirationPeriod,omitempty"` 38 WeightUpdatePeriod *string `json:"weightUpdatePeriod,omitempty"` 39 ErrorUtilizationPenalty *float64 `json:"errorUtilizationPenalty,omitempty"` 40 } 41 42 // TimeNow can be overridden by tests to return a different value for the 43 // current iserviceconfig. 44 var TimeNow = time.Now 45