auth/rpc: Make auth rpc client retry configurable. (#3695)
Currently the auth rpc client defaults to to a maximum cap of 30seconds timeout. Make this to be configurable by the caller of authRPCClient during initialization, if no such config is provided then default to 30 seconds.master
parent
a170e44689
commit
310bf5bd36
@ -0,0 +1,82 @@ |
||||
/* |
||||
* Minio Cloud Storage, (C) 2016 Minio, Inc. |
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package cmd |
||||
|
||||
import ( |
||||
"testing" |
||||
"time" |
||||
) |
||||
|
||||
// Tests for retry timer.
|
||||
func TestRetryTimerSimple(t *testing.T) { |
||||
doneCh := make(chan struct{}) |
||||
attemptCh := newRetryTimerSimple(doneCh) |
||||
i := <-attemptCh |
||||
if i != 0 { |
||||
close(doneCh) |
||||
t.Fatalf("Invalid attempt counter returned should be 0, found %d instead", i) |
||||
} |
||||
i = <-attemptCh |
||||
if i <= 0 { |
||||
close(doneCh) |
||||
t.Fatalf("Invalid attempt counter returned should be greater than 0, found %d instead", i) |
||||
} |
||||
close(doneCh) |
||||
_, ok := <-attemptCh |
||||
if ok { |
||||
t.Fatal("Attempt counter should be closed") |
||||
} |
||||
} |
||||
|
||||
// Test retry time with no jitter.
|
||||
func TestRetryTimerWithNoJitter(t *testing.T) { |
||||
doneCh := make(chan struct{}) |
||||
// No jitter
|
||||
attemptCh := newRetryTimerWithJitter(time.Millisecond, 5*time.Millisecond, NoJitter, doneCh) |
||||
i := <-attemptCh |
||||
if i != 0 { |
||||
close(doneCh) |
||||
t.Fatalf("Invalid attempt counter returned should be 0, found %d instead", i) |
||||
} |
||||
// Loop through the maximum possible attempt.
|
||||
for i = range attemptCh { |
||||
if i == 30 { |
||||
close(doneCh) |
||||
} |
||||
} |
||||
_, ok := <-attemptCh |
||||
if ok { |
||||
t.Fatal("Attempt counter should be closed") |
||||
} |
||||
} |
||||
|
||||
// Test retry time with Jitter greater than MaxJitter.
|
||||
func TestRetryTimerWithJitter(t *testing.T) { |
||||
doneCh := make(chan struct{}) |
||||
// Jitter will be set back to 1.0
|
||||
attemptCh := newRetryTimerWithJitter(defaultRetryUnit, defaultRetryCap, 2.0, doneCh) |
||||
i := <-attemptCh |
||||
if i != 0 { |
||||
close(doneCh) |
||||
t.Fatalf("Invalid attempt counter returned should be 0, found %d instead", i) |
||||
} |
||||
close(doneCh) |
||||
_, ok := <-attemptCh |
||||
if ok { |
||||
t.Fatal("Attempt counter should be closed") |
||||
} |
||||
} |
Loading…
Reference in new issue