b0b57588d1
* Implement leader routine manager Switch over the following to use it for go routine management: • Config entry Replication • ACL replication - tokens, policies, roles and legacy tokens • ACL legacy token upgrade • ACL token reaping • Intention Replication • Secondary CA Roots Watching • CA Root Pruning Also added the StopAll call into the Server Shutdown method to ensure all leader routines get killed off when shutting down. This should be mostly unnecessary as `revokeLeadership` should manually stop each one but just in case we really want these to go away (eventually).
33 lines
628 B
Go
33 lines
628 B
Go
package consul
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/hashicorp/consul/sdk/testutil"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestReplicationRestart(t *testing.T) {
|
|
mgr := NewLeaderRoutineManager(testutil.TestLogger(t))
|
|
|
|
config := ReplicatorConfig{
|
|
Name: "mock",
|
|
ReplicateFn: func(ctx context.Context, lastRemoteIndex uint64) (uint64, bool, error) {
|
|
return 1, false, nil
|
|
},
|
|
|
|
Rate: 1,
|
|
Burst: 1,
|
|
}
|
|
|
|
repl, err := NewReplicator(&config)
|
|
require.NoError(t, err)
|
|
|
|
mgr.Start("mock", repl.Run)
|
|
mgr.Stop("mock")
|
|
mgr.Start("mock", repl.Run)
|
|
// Previously this would have segfaulted
|
|
mgr.Stop("mock")
|
|
}
|