mirror of
https://github.com/arangodb/kube-arangodb.git
synced 2024-12-14 11:57:37 +00:00
Various test improvements
This commit is contained in:
parent
d12ad72fdb
commit
32b3a738eb
5 changed files with 38 additions and 46 deletions
|
@ -20,3 +20,5 @@ if [ "${REQUIRE_LOCAL_STORAGE}" = "1" ]; then
|
|||
else
|
||||
echo "No local storage needed for this cluster"
|
||||
fi
|
||||
echo "Found $(kubectl get pv | wc -l) PersistentVolumes"
|
||||
echo "Found $(kubectl get pv | grep Available | wc -l) available PersistentVolumes"
|
||||
|
|
|
@ -29,7 +29,7 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/dchest/uniuri"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
driver "github.com/arangodb/go-driver"
|
||||
api "github.com/arangodb/kube-arangodb/pkg/apis/deployment/v1alpha"
|
||||
|
@ -71,10 +71,7 @@ func TestCursorSingle(t *testing.T) {
|
|||
}
|
||||
|
||||
// Check server role
|
||||
assert.NoError(t, client.SynchronizeEndpoints(ctx))
|
||||
role, err := client.ServerRole(ctx)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, driver.ServerRoleSingle, role)
|
||||
require.NoError(t, testServerRole(ctx, client, driver.ServerRoleSingle))
|
||||
|
||||
// Run cursor tests
|
||||
runCursorTests(t, client)
|
||||
|
@ -118,10 +115,7 @@ func TestCursorActiveFailover(t *testing.T) {
|
|||
}
|
||||
|
||||
// Check server role
|
||||
assert.NoError(t, client.SynchronizeEndpoints(ctx))
|
||||
role, err := client.ServerRole(ctx)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, driver.ServerRoleSingleActive, role)
|
||||
require.NoError(t, testServerRole(ctx, client, driver.ServerRoleSingleActive))
|
||||
|
||||
// Run cursor tests
|
||||
runCursorTests(t, client)
|
||||
|
@ -165,10 +159,7 @@ func TestCursorCluster(t *testing.T) {
|
|||
}
|
||||
|
||||
// Check server role
|
||||
assert.NoError(t, client.SynchronizeEndpoints(ctx))
|
||||
role, err := client.ServerRole(ctx)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, driver.ServerRoleCoordinator, role)
|
||||
require.NoError(t, testServerRole(ctx, client, driver.ServerRoleCoordinator))
|
||||
|
||||
// Run cursor tests
|
||||
runCursorTests(t, client)
|
||||
|
|
|
@ -84,10 +84,7 @@ func TestServiceAccountSingle(t *testing.T) {
|
|||
checkMembersUsingServiceAccount(kubecli, ns, apiObject.Status.Members.Single, saName, t)
|
||||
|
||||
// Check server role
|
||||
assert.NoError(t, client.SynchronizeEndpoints(ctx))
|
||||
role, err := client.ServerRole(ctx)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, driver.ServerRoleSingle, role)
|
||||
assert.NoError(t, testServerRole(ctx, client, driver.ServerRoleSingle))
|
||||
}
|
||||
|
||||
// TestServiceAccountActiveFailover tests the creating of a ActiveFailover server deployment
|
||||
|
@ -137,10 +134,7 @@ func TestServiceAccountActiveFailover(t *testing.T) {
|
|||
checkMembersUsingServiceAccount(kubecli, ns, apiObject.Status.Members.Agents, saName, t)
|
||||
|
||||
// Check server role
|
||||
assert.NoError(t, client.SynchronizeEndpoints(ctx))
|
||||
role, err := client.ServerRole(ctx)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, driver.ServerRoleSingleActive, role)
|
||||
assert.NoError(t, testServerRole(ctx, client, driver.ServerRoleSingleActive))
|
||||
}
|
||||
|
||||
// TestServiceAccountCluster tests the creating of a cluster deployment
|
||||
|
@ -192,10 +186,7 @@ func TestServiceAccountCluster(t *testing.T) {
|
|||
checkMembersUsingServiceAccount(kubecli, ns, apiObject.Status.Members.DBServers, saName, t)
|
||||
|
||||
// Check server role
|
||||
assert.NoError(t, client.SynchronizeEndpoints(ctx))
|
||||
role, err := client.ServerRole(ctx)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, driver.ServerRoleCoordinator, role)
|
||||
assert.NoError(t, testServerRole(ctx, client, driver.ServerRoleCoordinator))
|
||||
}
|
||||
|
||||
// TestServiceAccountClusterWithSync tests the creating of a cluster deployment
|
||||
|
@ -262,10 +253,7 @@ func TestServiceAccountClusterWithSync(t *testing.T) {
|
|||
checkMembersUsingServiceAccount(kubecli, ns, apiObject.Status.Members.SyncWorkers, saName, t)
|
||||
|
||||
// Check server role
|
||||
assert.NoError(t, client.SynchronizeEndpoints(ctx))
|
||||
role, err := client.ServerRole(ctx)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, driver.ServerRoleCoordinator, role)
|
||||
assert.NoError(t, testServerRole(ctx, client, driver.ServerRoleCoordinator))
|
||||
}
|
||||
|
||||
// mustCreateServiceAccount creates an empty service account with random name and returns
|
||||
|
|
|
@ -70,10 +70,7 @@ func TestSimpleSingle(t *testing.T) {
|
|||
}
|
||||
|
||||
// Check server role
|
||||
assert.NoError(t, client.SynchronizeEndpoints(ctx))
|
||||
role, err := client.ServerRole(ctx)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, driver.ServerRoleSingle, role)
|
||||
assert.NoError(t, testServerRole(ctx, client, driver.ServerRoleSingle))
|
||||
}
|
||||
|
||||
// TestSimpleActiveFailover tests the creating of a ActiveFailover server deployment
|
||||
|
@ -111,10 +108,7 @@ func TestSimpleActiveFailover(t *testing.T) {
|
|||
}
|
||||
|
||||
// Check server role
|
||||
assert.NoError(t, client.SynchronizeEndpoints(ctx))
|
||||
role, err := client.ServerRole(ctx)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, driver.ServerRoleSingleActive, role)
|
||||
assert.NoError(t, testServerRole(ctx, client, driver.ServerRoleSingleActive))
|
||||
}
|
||||
|
||||
// TestSimpleCluster tests the creating of a cluster deployment
|
||||
|
@ -152,10 +146,7 @@ func TestSimpleCluster(t *testing.T) {
|
|||
}
|
||||
|
||||
// Check server role
|
||||
assert.NoError(t, client.SynchronizeEndpoints(ctx))
|
||||
role, err := client.ServerRole(ctx)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, driver.ServerRoleCoordinator, role)
|
||||
assert.NoError(t, testServerRole(ctx, client, driver.ServerRoleCoordinator))
|
||||
}
|
||||
|
||||
// TestSimpleClusterWithSync tests the creating of a cluster deployment
|
||||
|
@ -204,8 +195,5 @@ func TestSimpleClusterWithSync(t *testing.T) {
|
|||
}
|
||||
|
||||
// Check server role
|
||||
assert.NoError(t, client.SynchronizeEndpoints(ctx))
|
||||
role, err := client.ServerRole(ctx)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, driver.ServerRoleCoordinator, role)
|
||||
assert.NoError(t, testServerRole(ctx, client, driver.ServerRoleCoordinator))
|
||||
}
|
||||
|
|
|
@ -506,7 +506,30 @@ func waitUntilArangoDeploymentHealthy(deployment *api.ArangoDeployment, DBClient
|
|||
}
|
||||
}
|
||||
default:
|
||||
return maskAny(fmt.Errorf("DeploymentMode %s is not supported!", mode))
|
||||
return maskAny(fmt.Errorf("DeploymentMode %s is not supported", mode))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// testServerRole performs a synchronize endpoints and then requests the server role.
|
||||
// On success, the role is compared with the given expected role.
|
||||
// When the requests fail or the role is not equal to the expected role, an error is returned.
|
||||
func testServerRole(ctx context.Context, client driver.Client, expectedRole driver.ServerRole) error {
|
||||
op := func(ctx context.Context) error {
|
||||
if err := client.SynchronizeEndpoints(ctx); err != nil {
|
||||
return maskAny(err)
|
||||
}
|
||||
role, err := client.ServerRole(ctx)
|
||||
if err != nil {
|
||||
return maskAny(err)
|
||||
}
|
||||
if role != expectedRole {
|
||||
return retry.Permanent(fmt.Errorf("Unexpected server role: Expected '%s', got '%s'", expectedRole, role))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
if err := retry.RetryWithContext(ctx, op, time.Second*20); err != nil {
|
||||
return maskAny(err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue