reflect new replica states in unit tests (#2581)
* reflect new replica states in unit tests
This commit is contained in:
		
							parent
							
								
									08089ed4b4
								
							
						
					
					
						commit
						3ebe4ffb99
					
				|  | @ -42,28 +42,28 @@ func TestGetSwitchoverCandidate(t *testing.T) { | ||||||
| 	}{ | 	}{ | ||||||
| 		{ | 		{ | ||||||
| 			subtest:           "choose sync_standby over replica", | 			subtest:           "choose sync_standby over replica", | ||||||
| 			clusterJson:       `{"members": [{"name": "acid-test-cluster-0", "role": "leader", "state": "running", "api_url": "http://192.168.100.1:8008/patroni", "host": "192.168.100.1", "port": 5432, "timeline": 1}, {"name": "acid-test-cluster-1", "role": "sync_standby", "state": "running", "api_url": "http://192.168.100.2:8008/patroni", "host": "192.168.100.2", "port": 5432, "timeline": 1, "lag": 0}, {"name": "acid-test-cluster-2", "role": "replica", "state": "running", "api_url": "http://192.168.100.3:8008/patroni", "host": "192.168.100.3", "port": 5432, "timeline": 1, "lag": 0}]}`, | 			clusterJson:       `{"members": [{"name": "acid-test-cluster-0", "role": "leader", "state": "running", "api_url": "http://192.168.100.1:8008/patroni", "host": "192.168.100.1", "port": 5432, "timeline": 1}, {"name": "acid-test-cluster-1", "role": "sync_standby", "state": "streaming", "api_url": "http://192.168.100.2:8008/patroni", "host": "192.168.100.2", "port": 5432, "timeline": 1, "lag": 0}, {"name": "acid-test-cluster-2", "role": "replica", "state": "streaming", "api_url": "http://192.168.100.3:8008/patroni", "host": "192.168.100.3", "port": 5432, "timeline": 1, "lag": 0}]}`, | ||||||
| 			syncModeEnabled:   true, | 			syncModeEnabled:   true, | ||||||
| 			expectedCandidate: spec.NamespacedName{Namespace: namespace, Name: "acid-test-cluster-1"}, | 			expectedCandidate: spec.NamespacedName{Namespace: namespace, Name: "acid-test-cluster-1"}, | ||||||
| 			expectedError:     nil, | 			expectedError:     nil, | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			subtest:           "no running sync_standby available", | 			subtest:           "no running sync_standby available", | ||||||
| 			clusterJson:       `{"members": [{"name": "acid-test-cluster-0", "role": "leader", "state": "running", "api_url": "http://192.168.100.1:8008/patroni", "host": "192.168.100.1", "port": 5432, "timeline": 1}, {"name": "acid-test-cluster-1", "role": "replica", "state": "running", "api_url": "http://192.168.100.2:8008/patroni", "host": "192.168.100.2", "port": 5432, "timeline": 1, "lag": 0}]}`, | 			clusterJson:       `{"members": [{"name": "acid-test-cluster-0", "role": "leader", "state": "running", "api_url": "http://192.168.100.1:8008/patroni", "host": "192.168.100.1", "port": 5432, "timeline": 1}, {"name": "acid-test-cluster-1", "role": "replica", "state": "streaming", "api_url": "http://192.168.100.2:8008/patroni", "host": "192.168.100.2", "port": 5432, "timeline": 1, "lag": 0}]}`, | ||||||
| 			syncModeEnabled:   true, | 			syncModeEnabled:   true, | ||||||
| 			expectedCandidate: spec.NamespacedName{}, | 			expectedCandidate: spec.NamespacedName{}, | ||||||
| 			expectedError:     fmt.Errorf("failed to get Patroni cluster members: unexpected end of JSON input"), | 			expectedError:     fmt.Errorf("failed to get Patroni cluster members: unexpected end of JSON input"), | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			subtest:           "choose replica with lowest lag", | 			subtest:           "choose replica with lowest lag", | ||||||
| 			clusterJson:       `{"members": [{"name": "acid-test-cluster-0", "role": "leader", "state": "running", "api_url": "http://192.168.100.1:8008/patroni", "host": "192.168.100.1", "port": 5432, "timeline": 1}, {"name": "acid-test-cluster-1", "role": "replica", "state": "running", "api_url": "http://192.168.100.2:8008/patroni", "host": "192.168.100.2", "port": 5432, "timeline": 1, "lag": 5}, {"name": "acid-test-cluster-2", "role": "replica", "state": "running", "api_url": "http://192.168.100.3:8008/patroni", "host": "192.168.100.3", "port": 5432, "timeline": 1, "lag": 2}]}`, | 			clusterJson:       `{"members": [{"name": "acid-test-cluster-0", "role": "leader", "state": "running", "api_url": "http://192.168.100.1:8008/patroni", "host": "192.168.100.1", "port": 5432, "timeline": 1}, {"name": "acid-test-cluster-1", "role": "replica", "state": "streaming", "api_url": "http://192.168.100.2:8008/patroni", "host": "192.168.100.2", "port": 5432, "timeline": 1, "lag": 5}, {"name": "acid-test-cluster-2", "role": "replica", "state": "streaming", "api_url": "http://192.168.100.3:8008/patroni", "host": "192.168.100.3", "port": 5432, "timeline": 1, "lag": 2}]}`, | ||||||
| 			syncModeEnabled:   false, | 			syncModeEnabled:   false, | ||||||
| 			expectedCandidate: spec.NamespacedName{Namespace: namespace, Name: "acid-test-cluster-2"}, | 			expectedCandidate: spec.NamespacedName{Namespace: namespace, Name: "acid-test-cluster-2"}, | ||||||
| 			expectedError:     nil, | 			expectedError:     nil, | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			subtest:           "choose first replica when lag is equal evrywhere", | 			subtest:           "choose first replica when lag is equal evrywhere", | ||||||
| 			clusterJson:       `{"members": [{"name": "acid-test-cluster-0", "role": "leader", "state": "running", "api_url": "http://192.168.100.1:8008/patroni", "host": "192.168.100.1", "port": 5432, "timeline": 1}, {"name": "acid-test-cluster-1", "role": "replica", "state": "running", "api_url": "http://192.168.100.2:8008/patroni", "host": "192.168.100.2", "port": 5432, "timeline": 1, "lag": 5}, {"name": "acid-test-cluster-2", "role": "replica", "state": "running", "api_url": "http://192.168.100.3:8008/patroni", "host": "192.168.100.3", "port": 5432, "timeline": 1, "lag": 5}]}`, | 			clusterJson:       `{"members": [{"name": "acid-test-cluster-0", "role": "leader", "state": "running", "api_url": "http://192.168.100.1:8008/patroni", "host": "192.168.100.1", "port": 5432, "timeline": 1}, {"name": "acid-test-cluster-1", "role": "replica", "state": "streaming", "api_url": "http://192.168.100.2:8008/patroni", "host": "192.168.100.2", "port": 5432, "timeline": 1, "lag": 5}, {"name": "acid-test-cluster-2", "role": "replica", "state": "running", "api_url": "http://192.168.100.3:8008/patroni", "host": "192.168.100.3", "port": 5432, "timeline": 1, "lag": 5}]}`, | ||||||
| 			syncModeEnabled:   false, | 			syncModeEnabled:   false, | ||||||
| 			expectedCandidate: spec.NamespacedName{Namespace: namespace, Name: "acid-test-cluster-1"}, | 			expectedCandidate: spec.NamespacedName{Namespace: namespace, Name: "acid-test-cluster-1"}, | ||||||
| 			expectedError:     nil, | 			expectedError:     nil, | ||||||
|  | @ -76,8 +76,8 @@ func TestGetSwitchoverCandidate(t *testing.T) { | ||||||
| 			expectedError:     fmt.Errorf("no switchover candidate found"), | 			expectedError:     fmt.Errorf("no switchover candidate found"), | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			subtest:           "replicas with streaming state", | 			subtest:           "replicas with different status", | ||||||
| 			clusterJson:       `{"members": [{"name": "acid-test-cluster-0", "role": "leader", "state": "running", "api_url": "http://192.168.100.1:8008/patroni", "host": "192.168.100.1", "port": 5432, "timeline": 1}, {"name": "acid-test-cluster-1", "role": "replica", "state": "streaming", "api_url": "http://192.168.100.2:8008/patroni", "host": "192.168.100.2", "port": 5432, "timeline": 1, "lag": 5}, {"name": "acid-test-cluster-2", "role": "replica", "state": "streaming", "api_url": "http://192.168.100.3:8008/patroni", "host": "192.168.100.3", "port": 5432, "timeline": 1, "lag": 2}]}`, | 			clusterJson:       `{"members": [{"name": "acid-test-cluster-0", "role": "leader", "state": "running", "api_url": "http://192.168.100.1:8008/patroni", "host": "192.168.100.1", "port": 5432, "timeline": 1}, {"name": "acid-test-cluster-1", "role": "replica", "state": "streaming", "api_url": "http://192.168.100.2:8008/patroni", "host": "192.168.100.2", "port": 5432, "timeline": 1, "lag": 5}, {"name": "acid-test-cluster-2", "role": "replica", "state": "in archive recovery", "api_url": "http://192.168.100.3:8008/patroni", "host": "192.168.100.3", "port": 5432, "timeline": 1, "lag": 2}]}`, | ||||||
| 			syncModeEnabled:   false, | 			syncModeEnabled:   false, | ||||||
| 			expectedCandidate: spec.NamespacedName{Namespace: namespace, Name: "acid-test-cluster-2"}, | 			expectedCandidate: spec.NamespacedName{Namespace: namespace, Name: "acid-test-cluster-2"}, | ||||||
| 			expectedError:     nil, | 			expectedError:     nil, | ||||||
|  |  | ||||||
|  | @ -99,28 +99,28 @@ func TestGetClusterMembers(t *testing.T) { | ||||||
| 		}, { | 		}, { | ||||||
| 			Name:     "acid-test-cluster-1", | 			Name:     "acid-test-cluster-1", | ||||||
| 			Role:     "sync_standby", | 			Role:     "sync_standby", | ||||||
| 			State:    "running", | 			State:    "streaming", | ||||||
| 			Timeline: 1, | 			Timeline: 1, | ||||||
| 			Lag:      0, | 			Lag:      0, | ||||||
| 		}, { | 		}, { | ||||||
| 			Name:     "acid-test-cluster-2", | 			Name:     "acid-test-cluster-2", | ||||||
| 			Role:     "replica", | 			Role:     "replica", | ||||||
| 			State:    "running", | 			State:    "streaming", | ||||||
| 			Timeline: 1, | 			Timeline: 1, | ||||||
| 			Lag:      math.MaxUint64, | 			Lag:      math.MaxUint64, | ||||||
| 		}, { | 		}, { | ||||||
| 			Name:     "acid-test-cluster-3", | 			Name:     "acid-test-cluster-3", | ||||||
| 			Role:     "replica", | 			Role:     "replica", | ||||||
| 			State:    "running", | 			State:    "in archive recovery", | ||||||
| 			Timeline: 1, | 			Timeline: 1, | ||||||
| 			Lag:      3000000000, | 			Lag:      3000000000, | ||||||
| 		}} | 		}} | ||||||
| 
 | 
 | ||||||
| 	json := `{"members": [ | 	json := `{"members": [ | ||||||
| 		{"name": "acid-test-cluster-0", "role": "leader", "state": "running", "api_url": "http://192.168.100.1:8008/patroni", "host": "192.168.100.1", "port": 5432, "timeline": 1}, | 		{"name": "acid-test-cluster-0", "role": "leader", "state": "running", "api_url": "http://192.168.100.1:8008/patroni", "host": "192.168.100.1", "port": 5432, "timeline": 1}, | ||||||
| 		{"name": "acid-test-cluster-1", "role": "sync_standby", "state": "running", "api_url": "http://192.168.100.2:8008/patroni", "host": "192.168.100.2", "port": 5432, "timeline": 1, "lag": 0}, | 		{"name": "acid-test-cluster-1", "role": "sync_standby", "state": "streaming", "api_url": "http://192.168.100.2:8008/patroni", "host": "192.168.100.2", "port": 5432, "timeline": 1, "lag": 0}, | ||||||
| 		{"name": "acid-test-cluster-2", "role": "replica", "state": "running", "api_url": "http://192.168.100.3:8008/patroni", "host": "192.168.100.3", "port": 5432, "timeline": 1, "lag": "unknown"}, | 		{"name": "acid-test-cluster-2", "role": "replica", "state": "streaming", "api_url": "http://192.168.100.3:8008/patroni", "host": "192.168.100.3", "port": 5432, "timeline": 1, "lag": "unknown"}, | ||||||
| 		{"name": "acid-test-cluster-3", "role": "replica", "state": "running", "api_url": "http://192.168.100.3:8008/patroni", "host": "192.168.100.3", "port": 5432, "timeline": 1, "lag": 3000000000} | 		{"name": "acid-test-cluster-3", "role": "replica", "state": "in archive recovery", "api_url": "http://192.168.100.3:8008/patroni", "host": "192.168.100.3", "port": 5432, "timeline": 1, "lag": 3000000000} | ||||||
| 		]}` | 		]}` | ||||||
| 	r := io.NopCloser(bytes.NewReader([]byte(json))) | 	r := io.NopCloser(bytes.NewReader([]byte(json))) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue