dubbo.apache.org/dubbo-go/v3@v3.1.1/xds/balancer/ringhash/config_test.go (about) 1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. 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 * 20 * Copyright 2021 gRPC authors. 21 * 22 */ 23 24 package ringhash 25 26 import ( 27 "testing" 28 ) 29 30 import ( 31 "github.com/google/go-cmp/cmp" 32 ) 33 34 func TestParseConfig(t *testing.T) { 35 tests := []struct { 36 name string 37 js string 38 want *LBConfig 39 wantErr bool 40 }{ 41 { 42 name: "OK", 43 js: `{"minRingSize": 1, "maxRingSize": 2}`, 44 want: &LBConfig{MinRingSize: 1, MaxRingSize: 2}, 45 }, 46 { 47 name: "OK with default min", 48 js: `{"maxRingSize": 2000}`, 49 want: &LBConfig{MinRingSize: defaultMinSize, MaxRingSize: 2000}, 50 }, 51 { 52 name: "OK with default max", 53 js: `{"minRingSize": 2000}`, 54 want: &LBConfig{MinRingSize: 2000, MaxRingSize: defaultMaxSize}, 55 }, 56 { 57 name: "min greater than max", 58 js: `{"minRingSize": 10, "maxRingSize": 2}`, 59 want: nil, 60 wantErr: true, 61 }, 62 } 63 for _, tt := range tests { 64 t.Run(tt.name, func(t *testing.T) { 65 got, err := parseConfig([]byte(tt.js)) 66 if (err != nil) != tt.wantErr { 67 t.Errorf("parseConfig() error = %v, wantErr %v", err, tt.wantErr) 68 return 69 } 70 if diff := cmp.Diff(got, tt.want); diff != "" { 71 t.Errorf("parseConfig() got unexpected output, diff (-got +want): %v", diff) 72 } 73 }) 74 } 75 }