Added Daemonset and statefulset e2e test

This commit is contained in:
faizanahmad055
2018-07-23 18:31:33 +05:00
parent 034d2dcd93
commit effc40cab1
4 changed files with 703 additions and 113 deletions

View File

@@ -18,6 +18,9 @@ var (
namespace = "test-reloader"
configmapNamePrefix = "testconfigmap-reloader"
secretNamePrefix = "testsecret-reloader"
data = "dGVzdFNlY3JldEVuY29kaW5nRm9yUmVsb2FkZXI="
newData = "dGVzdE5ld1NlY3JldEVuY29kaW5nRm9yUmVsb2FkZXI="
updatedData = "dGVzdFVwZGF0ZWRTZWNyZXRFbmNvZGluZ0ZvclJlbG9hZGVy"
)
func TestMain(m *testing.M) {
@@ -55,7 +58,7 @@ func TestControllerUpdatingConfigmapShouldCreateEnvInDeployment(t *testing.T) {
defer close(stop)
logrus.Infof("Starting controller")
go controller.Run(1, stop)
time.Sleep(10 * time.Second)
time.Sleep(5 * time.Second)
// Creating configmap
configmapName := configmapNamePrefix + "-update-" + common.RandSeq(5)
@@ -87,7 +90,7 @@ func TestControllerUpdatingConfigmapShouldCreateEnvInDeployment(t *testing.T) {
if !updated {
t.Errorf("Deployment was not updated")
}
time.Sleep(10 * time.Second)
time.Sleep(5 * time.Second)
// Deleting deployment
err = testutil.DeleteDeployment(client, namespace, configmapName)
@@ -116,7 +119,7 @@ func TestControllerForUpdatingConfigmapShouldUpdateDeployment(t *testing.T) {
defer close(stop)
logrus.Infof("Starting controller")
go controller.Run(1, stop)
time.Sleep(10 * time.Second)
time.Sleep(5 * time.Second)
// Creating secret
configmapName := configmapNamePrefix + "-update-" + common.RandSeq(5)
@@ -141,15 +144,6 @@ func TestControllerForUpdatingConfigmapShouldUpdateDeployment(t *testing.T) {
t.Errorf("Configmap was not updated")
}
// Verifying deployment update
logrus.Infof("Verifying env var has been created")
shaData := testutil.ConvertResourceToSHA(testutil.ConfigmapResourceType, namespace, configmapName, "www.stakater.com")
updated := testutil.VerifyDeploymentUpdate(client, namespace, configmapName, common.ConfigmapEnvarPostfix, shaData, common.ConfigmapUpdateOnChangeAnnotation)
if !updated {
t.Errorf("Deployment was not updated")
}
time.Sleep(10 * time.Second)
// Updating configmap for second time
updateErr = testutil.UpdateConfigMap(configmapClient, namespace, configmapName, "", "aurorasolutions.io")
if updateErr != nil {
@@ -162,12 +156,12 @@ func TestControllerForUpdatingConfigmapShouldUpdateDeployment(t *testing.T) {
// Verifying deployment update
logrus.Infof("Verifying env var has been updated")
shaData = testutil.ConvertResourceToSHA(testutil.ConfigmapResourceType, namespace, configmapName, "aurorasolutions.io")
updated = testutil.VerifyDeploymentUpdate(client, namespace, configmapName, common.ConfigmapEnvarPostfix, shaData, common.ConfigmapUpdateOnChangeAnnotation)
shaData := testutil.ConvertResourceToSHA(testutil.ConfigmapResourceType, namespace, configmapName, "aurorasolutions.io")
updated := testutil.VerifyDeploymentUpdate(client, namespace, configmapName, common.ConfigmapEnvarPostfix, shaData, common.ConfigmapUpdateOnChangeAnnotation)
if !updated {
t.Errorf("Deployment was not updated")
}
time.Sleep(10 * time.Second)
time.Sleep(5 * time.Second)
// Deleting deployment
err = testutil.DeleteDeployment(client, namespace, configmapName)
@@ -196,7 +190,7 @@ func TestControllerUpdatingConfigmapLabelsShouldNotCreateorUpdateEnvInDeployment
defer close(stop)
logrus.Infof("Starting controller")
go controller.Run(1, stop)
time.Sleep(10 * time.Second)
time.Sleep(5 * time.Second)
// Creating configmap
configmapName := configmapNamePrefix + "-update-" + common.RandSeq(5)
@@ -228,7 +222,7 @@ func TestControllerUpdatingConfigmapLabelsShouldNotCreateorUpdateEnvInDeployment
if updated {
t.Errorf("Deployment should not be updated by changing label")
}
time.Sleep(10 * time.Second)
time.Sleep(5 * time.Second)
// Deleting deployment
err = testutil.DeleteDeployment(client, namespace, configmapName)
@@ -255,11 +249,10 @@ func TestControllerUpdatingSecretShouldCreateEnvInDeployment(t *testing.T) {
stop := make(chan struct{})
defer close(stop)
go controller.Run(1, stop)
time.Sleep(10 * time.Second)
time.Sleep(5 * time.Second)
// Creating secret
secretName := secretNamePrefix + "-update-" + common.RandSeq(5)
data := "dGVzdFNlY3JldEVuY29kaW5nRm9yUmVsb2FkZXI="
secretClient, err := testutil.CreateSecret(client, namespace, secretName, data)
if err != nil {
t.Errorf("Error in secret creation: %v", err)
@@ -272,20 +265,19 @@ func TestControllerUpdatingSecretShouldCreateEnvInDeployment(t *testing.T) {
}
// Updating Secret
data = "dGVzdFVwZGF0ZWRTZWNyZXRFbmNvZGluZ0ZvclJlbG9hZGVy"
err = testutil.UpdateSecret(secretClient, namespace, secretName, "", data)
err = testutil.UpdateSecret(secretClient, namespace, secretName, "", newData)
if err != nil {
t.Errorf("Error while updating secret %v", err)
}
// Verifying Upgrade
logrus.Infof("Verifying env var has been created")
shaData := testutil.ConvertResourceToSHA(testutil.SecretResourceType, namespace, secretName, data)
shaData := testutil.ConvertResourceToSHA(testutil.SecretResourceType, namespace, secretName, newData)
updated := testutil.VerifyDeploymentUpdate(client, namespace, secretName, common.SecretEnvarPostfix, shaData, common.SecretUpdateOnChangeAnnotation)
if !updated {
t.Errorf("Deployment was not updated")
}
time.Sleep(10 * time.Second)
//time.Sleep(5 * time.Second)
// Deleting Deployment
err = testutil.DeleteDeployment(client, namespace, secretName)
@@ -312,11 +304,10 @@ func TestControllerUpdatingSecretShouldUpdateEnvInDeployment(t *testing.T) {
stop := make(chan struct{})
defer close(stop)
go controller.Run(1, stop)
time.Sleep(10 * time.Second)
time.Sleep(5 * time.Second)
// Creating secret
secretName := secretNamePrefix + "-update-" + common.RandSeq(5)
data := "dGVzdFNlY3JldEVuY29kaW5nRm9yUmVsb2FkZXI="
secretClient, err := testutil.CreateSecret(client, namespace, secretName, data)
if err != nil {
t.Errorf("Error in secret creation: %v", err)
@@ -329,36 +320,25 @@ func TestControllerUpdatingSecretShouldUpdateEnvInDeployment(t *testing.T) {
}
// Updating Secret
data = "dGVzdFVwZGF0ZWRTZWNyZXRFbmNvZGluZ0ZvclJlbG9hZGVy"
err = testutil.UpdateSecret(secretClient, namespace, secretName, "", data)
err = testutil.UpdateSecret(secretClient, namespace, secretName, "", newData)
if err != nil {
t.Errorf("Error while updating secret %v", err)
}
// Verifying Upgrade
logrus.Infof("Verifying env var has been created")
shaData := testutil.ConvertResourceToSHA(testutil.SecretResourceType, namespace, secretName, data)
updated := testutil.VerifyDeploymentUpdate(client, namespace, secretName, common.SecretEnvarPostfix, shaData, common.SecretUpdateOnChangeAnnotation)
if !updated {
t.Errorf("Deployment was not updated")
}
time.Sleep(10 * time.Second)
// Updating Secret
data = "dGVzdFVwZGF0ZWRTZWNyZXRFbmNvZGluZ0ZvclJlbG9hZGVy"
err = testutil.UpdateSecret(secretClient, namespace, secretName, "", data)
err = testutil.UpdateSecret(secretClient, namespace, secretName, "", updatedData)
if err != nil {
t.Errorf("Error while updating secret %v", err)
}
// Verifying Upgrade
logrus.Infof("Verifying env var has been updated")
shaData = testutil.ConvertResourceToSHA(testutil.SecretResourceType, namespace, secretName, data)
updated = testutil.VerifyDeploymentUpdate(client, namespace, secretName, common.SecretEnvarPostfix, shaData, common.SecretUpdateOnChangeAnnotation)
shaData := testutil.ConvertResourceToSHA(testutil.SecretResourceType, namespace, secretName, updatedData)
updated := testutil.VerifyDeploymentUpdate(client, namespace, secretName, common.SecretEnvarPostfix, shaData, common.SecretUpdateOnChangeAnnotation)
if !updated {
t.Errorf("Deployment was not updated")
}
time.Sleep(10 * time.Second)
//time.Sleep(5 * time.Second)
// Deleting Deployment
err = testutil.DeleteDeployment(client, namespace, secretName)
@@ -385,11 +365,10 @@ func TestControllerUpdatingSecretLabelsShouldNotCreateorUpdateEnvInDeployment(t
stop := make(chan struct{})
defer close(stop)
go controller.Run(1, stop)
time.Sleep(10 * time.Second)
time.Sleep(5 * time.Second)
// Creating secret
secretName := secretNamePrefix + "-update-" + common.RandSeq(5)
data := "dGVzdFNlY3JldEVuY29kaW5nRm9yUmVsb2FkZXI="
secretClient, err := testutil.CreateSecret(client, namespace, secretName, data)
if err != nil {
t.Errorf("Error in secret creation: %v", err)
@@ -413,7 +392,7 @@ func TestControllerUpdatingSecretLabelsShouldNotCreateorUpdateEnvInDeployment(t
if updated {
t.Errorf("Deployment should not be updated by changing label in secret")
}
time.Sleep(10 * time.Second)
//time.Sleep(5 * time.Second)
// Deleting Deployment
err = testutil.DeleteDeployment(client, namespace, secretName)
@@ -428,3 +407,614 @@ func TestControllerUpdatingSecretLabelsShouldNotCreateorUpdateEnvInDeployment(t
}
time.Sleep(5 * time.Second)
}
// Perform rolling upgrade on DaemonSet and create env var upon updating the configmap
func TestControllerUpdatingConfigmapShouldCreateEnvInDaemonSet(t *testing.T) {
// Creating Controller
logrus.Infof("Creating controller")
controller, err := NewController(client, testutil.ConfigmapResourceType, namespace)
if err != nil {
logrus.Errorf("Unable to create NewController error = %v", err)
return
}
stop := make(chan struct{})
defer close(stop)
logrus.Infof("Starting controller")
go controller.Run(1, stop)
time.Sleep(5 * time.Second)
// Creating configmap
configmapName := configmapNamePrefix + "-update-" + common.RandSeq(5)
configmapClient, err := testutil.CreateConfigMap(client, namespace, configmapName, "www.google.com")
if err != nil {
t.Errorf("Error while creating the configmap %v", err)
}
// Creating DaemonSet
_, err = testutil.CreateDaemonSet(client, configmapName, namespace)
if err != nil {
t.Errorf("Error in DaemonSet creation: %v", err)
}
// Updating configmap for first time
updateErr := testutil.UpdateConfigMap(configmapClient, namespace, configmapName, "", "www.stakater.com")
if updateErr != nil {
err = controller.client.CoreV1().ConfigMaps(namespace).Delete(configmapName, &metav1.DeleteOptions{})
if err != nil {
logrus.Errorf("Error while deleting the configmap %v", err)
}
t.Errorf("Configmap was not updated")
}
// Verifying DaemonSet update
logrus.Infof("Verifying env var has been created")
shaData := testutil.ConvertResourceToSHA(testutil.ConfigmapResourceType, namespace, configmapName, "www.stakater.com")
updated := testutil.VerifyDaemonSetUpdate(client, namespace, configmapName, common.ConfigmapEnvarPostfix, shaData, common.ConfigmapUpdateOnChangeAnnotation)
if !updated {
t.Errorf("DaemonSet was not updated")
}
time.Sleep(5 * time.Second)
// Deleting DaemonSet
err = testutil.DeleteDaemonSet(client, namespace, configmapName)
if err != nil {
logrus.Errorf("Error while deleting the DaemonSet %v", err)
}
// Deleting configmap
err = testutil.DeleteConfigMap(client, namespace, configmapName)
if err != nil {
logrus.Errorf("Error while deleting the configmap %v", err)
}
time.Sleep(5 * time.Second)
}
// Perform rolling upgrade on DaemonSet and update env var upon updating the configmap
func TestControllerForUpdatingConfigmapShouldUpdateDaemonSet(t *testing.T) {
// Creating controller
logrus.Infof("Creating controller")
controller, err := NewController(client, testutil.ConfigmapResourceType, namespace)
if err != nil {
logrus.Errorf("Unable to create NewController error = %v", err)
return
}
stop := make(chan struct{})
defer close(stop)
logrus.Infof("Starting controller")
go controller.Run(1, stop)
time.Sleep(5 * time.Second)
// Creating secret
configmapName := configmapNamePrefix + "-update-" + common.RandSeq(5)
configmapClient, err := testutil.CreateConfigMap(client, namespace, configmapName, "www.google.com")
if err != nil {
t.Errorf("Error while creating the configmap %v", err)
}
// Creating DaemonSet
_, err = testutil.CreateDaemonSet(client, configmapName, namespace)
if err != nil {
t.Errorf("Error in DaemonSet creation: %v", err)
}
// Updating configmap for first time
updateErr := testutil.UpdateConfigMap(configmapClient, namespace, configmapName, "", "www.stakater.com")
if updateErr != nil {
err = controller.client.CoreV1().ConfigMaps(namespace).Delete(configmapName, &metav1.DeleteOptions{})
if err != nil {
logrus.Errorf("Error while deleting the configmap %v", err)
}
t.Errorf("Configmap was not updated")
}
// Updating configmap for second time
updateErr = testutil.UpdateConfigMap(configmapClient, namespace, configmapName, "", "aurorasolutions.io")
if updateErr != nil {
err = controller.client.CoreV1().ConfigMaps(namespace).Delete(configmapName, &metav1.DeleteOptions{})
if err != nil {
logrus.Errorf("Error while deleting the configmap %v", err)
}
t.Errorf("Configmap was not updated")
}
// Verifying DaemonSet update
logrus.Infof("Verifying env var has been updated")
shaData := testutil.ConvertResourceToSHA(testutil.ConfigmapResourceType, namespace, configmapName, "aurorasolutions.io")
updated := testutil.VerifyDaemonSetUpdate(client, namespace, configmapName, common.ConfigmapEnvarPostfix, shaData, common.ConfigmapUpdateOnChangeAnnotation)
if !updated {
t.Errorf("DaemonSet was not updated")
}
time.Sleep(5 * time.Second)
// Deleting DaemonSet
err = testutil.DeleteDaemonSet(client, namespace, configmapName)
if err != nil {
logrus.Errorf("Error while deleting the DaemonSet %v", err)
}
// Deleting configmap
err = testutil.DeleteConfigMap(client, namespace, configmapName)
if err != nil {
logrus.Errorf("Error while deleting the configmap %v", err)
}
time.Sleep(5 * time.Second)
}
// Perform rolling upgrade on secret and create a env var upon updating the secret
func TestControllerUpdatingSecretShouldCreateEnvInDaemonSet(t *testing.T) {
// Creating controller
controller, err := NewController(client, testutil.SecretResourceType, namespace)
if err != nil {
logrus.Errorf("Unable to create NewController error = %v", err)
return
}
stop := make(chan struct{})
defer close(stop)
go controller.Run(1, stop)
time.Sleep(5 * time.Second)
// Creating secret
secretName := secretNamePrefix + "-update-" + common.RandSeq(5)
secretClient, err := testutil.CreateSecret(client, namespace, secretName, data)
if err != nil {
t.Errorf("Error in secret creation: %v", err)
}
// Creating DaemonSet
_, err = testutil.CreateDaemonSet(client, secretName, namespace)
if err != nil {
t.Errorf("Error in DaemonSet creation: %v", err)
}
// Updating Secret
err = testutil.UpdateSecret(secretClient, namespace, secretName, "", newData)
if err != nil {
t.Errorf("Error while updating secret %v", err)
}
// Verifying Upgrade
logrus.Infof("Verifying env var has been created")
shaData := testutil.ConvertResourceToSHA(testutil.SecretResourceType, namespace, secretName, newData)
updated := testutil.VerifyDaemonSetUpdate(client, namespace, secretName, common.SecretEnvarPostfix, shaData, common.SecretUpdateOnChangeAnnotation)
if !updated {
t.Errorf("DaemonSet was not updated")
}
//time.Sleep(5 * time.Second)
// Deleting DaemonSet
err = testutil.DeleteDaemonSet(client, namespace, secretName)
if err != nil {
logrus.Errorf("Error while deleting the DaemonSet %v", err)
}
//Deleting Secret
err = testutil.DeleteSecret(client, namespace, secretName)
if err != nil {
logrus.Errorf("Error while deleting the secret %v", err)
}
time.Sleep(5 * time.Second)
}
// Perform rolling upgrade on DaemonSet and update env var upon updating the secret
func TestControllerUpdatingSecretShouldUpdateEnvInDaemonSet(t *testing.T) {
// Creating controller
controller, err := NewController(client, testutil.SecretResourceType, namespace)
if err != nil {
logrus.Errorf("Unable to create NewController error = %v", err)
return
}
stop := make(chan struct{})
defer close(stop)
go controller.Run(1, stop)
time.Sleep(5 * time.Second)
// Creating secret
secretName := secretNamePrefix + "-update-" + common.RandSeq(5)
secretClient, err := testutil.CreateSecret(client, namespace, secretName, data)
if err != nil {
t.Errorf("Error in secret creation: %v", err)
}
// Creating DaemonSet
_, err = testutil.CreateDaemonSet(client, secretName, namespace)
if err != nil {
t.Errorf("Error in DaemonSet creation: %v", err)
}
// Updating Secret
err = testutil.UpdateSecret(secretClient, namespace, secretName, "", newData)
if err != nil {
t.Errorf("Error while updating secret %v", err)
}
// Updating Secret
err = testutil.UpdateSecret(secretClient, namespace, secretName, "", updatedData)
if err != nil {
t.Errorf("Error while updating secret %v", err)
}
// Verifying Upgrade
logrus.Infof("Verifying env var has been updated")
shaData := testutil.ConvertResourceToSHA(testutil.SecretResourceType, namespace, secretName, updatedData)
updated := testutil.VerifyDaemonSetUpdate(client, namespace, secretName, common.SecretEnvarPostfix, shaData, common.SecretUpdateOnChangeAnnotation)
if !updated {
t.Errorf("DaemonSet was not updated")
}
//time.Sleep(5 * time.Second)
// Deleting DaemonSet
err = testutil.DeleteDaemonSet(client, namespace, secretName)
if err != nil {
logrus.Errorf("Error while deleting the DaemonSet %v", err)
}
//Deleting Secret
err = testutil.DeleteSecret(client, namespace, secretName)
if err != nil {
logrus.Errorf("Error while deleting the secret %v", err)
}
time.Sleep(5 * time.Second)
}
// Do not Perform rolling upgrade on secret and create or update a env var upon updating the label in secret
func TestControllerUpdatingSecretLabelsShouldNotCreateorUpdateEnvInDaemonSet(t *testing.T) {
// Creating controller
controller, err := NewController(client, testutil.SecretResourceType, namespace)
if err != nil {
logrus.Errorf("Unable to create NewController error = %v", err)
return
}
stop := make(chan struct{})
defer close(stop)
go controller.Run(1, stop)
time.Sleep(5 * time.Second)
// Creating secret
secretName := secretNamePrefix + "-update-" + common.RandSeq(5)
secretClient, err := testutil.CreateSecret(client, namespace, secretName, data)
if err != nil {
t.Errorf("Error in secret creation: %v", err)
}
// Creating DaemonSet
_, err = testutil.CreateDaemonSet(client, secretName, namespace)
if err != nil {
t.Errorf("Error in DaemonSet creation: %v", err)
}
err = testutil.UpdateSecret(secretClient, namespace, secretName, "test", data)
if err != nil {
t.Errorf("Error while updating secret %v", err)
}
// Verifying Upgrade
logrus.Infof("Verifying env var has been created")
shaData := testutil.ConvertResourceToSHA(testutil.SecretResourceType, namespace, secretName, data)
updated := testutil.VerifyDaemonSetUpdate(client, namespace, secretName, common.SecretEnvarPostfix, shaData, common.SecretUpdateOnChangeAnnotation)
if updated {
t.Errorf("DaemonSet should not be updated by changing label in secret")
}
//time.Sleep(5 * time.Second)
// Deleting DaemonSet
err = testutil.DeleteDaemonSet(client, namespace, secretName)
if err != nil {
logrus.Errorf("Error while deleting the DaemonSet %v", err)
}
//Deleting Secret
err = testutil.DeleteSecret(client, namespace, secretName)
if err != nil {
logrus.Errorf("Error while deleting the secret %v", err)
}
time.Sleep(5 * time.Second)
}
// Perform rolling upgrade on StatefulSet and create env var upon updating the configmap
func TestControllerUpdatingConfigmapShouldCreateEnvInStatefulSet(t *testing.T) {
// Creating Controller
logrus.Infof("Creating controller")
controller, err := NewController(client, testutil.ConfigmapResourceType, namespace)
if err != nil {
logrus.Errorf("Unable to create NewController error = %v", err)
return
}
stop := make(chan struct{})
defer close(stop)
logrus.Infof("Starting controller")
go controller.Run(1, stop)
time.Sleep(5 * time.Second)
// Creating configmap
configmapName := configmapNamePrefix + "-update-" + common.RandSeq(5)
configmapClient, err := testutil.CreateConfigMap(client, namespace, configmapName, "www.google.com")
if err != nil {
t.Errorf("Error while creating the configmap %v", err)
}
// Creating StatefulSet
_, err = testutil.CreateStatefulSet(client, configmapName, namespace)
if err != nil {
t.Errorf("Error in StatefulSet creation: %v", err)
}
// Updating configmap for first time
updateErr := testutil.UpdateConfigMap(configmapClient, namespace, configmapName, "", "www.stakater.com")
if updateErr != nil {
err = controller.client.CoreV1().ConfigMaps(namespace).Delete(configmapName, &metav1.DeleteOptions{})
if err != nil {
logrus.Errorf("Error while deleting the configmap %v", err)
}
t.Errorf("Configmap was not updated")
}
// Verifying StatefulSet update
logrus.Infof("Verifying env var has been created")
shaData := testutil.ConvertResourceToSHA(testutil.ConfigmapResourceType, namespace, configmapName, "www.stakater.com")
updated := testutil.VerifyStatefulSetUpdate(client, namespace, configmapName, common.ConfigmapEnvarPostfix, shaData, common.ConfigmapUpdateOnChangeAnnotation)
if !updated {
t.Errorf("StatefulSet was not updated")
}
time.Sleep(5 * time.Second)
// Deleting StatefulSet
err = testutil.DeleteStatefulSet(client, namespace, configmapName)
if err != nil {
logrus.Errorf("Error while deleting the StatefulSet %v", err)
}
// Deleting configmap
err = testutil.DeleteConfigMap(client, namespace, configmapName)
if err != nil {
logrus.Errorf("Error while deleting the configmap %v", err)
}
time.Sleep(5 * time.Second)
}
// Perform rolling upgrade on StatefulSet and update env var upon updating the configmap
func TestControllerForUpdatingConfigmapShouldUpdateStatefulSet(t *testing.T) {
// Creating controller
logrus.Infof("Creating controller")
controller, err := NewController(client, testutil.ConfigmapResourceType, namespace)
if err != nil {
logrus.Errorf("Unable to create NewController error = %v", err)
return
}
stop := make(chan struct{})
defer close(stop)
logrus.Infof("Starting controller")
go controller.Run(1, stop)
time.Sleep(5 * time.Second)
// Creating secret
configmapName := configmapNamePrefix + "-update-" + common.RandSeq(5)
configmapClient, err := testutil.CreateConfigMap(client, namespace, configmapName, "www.google.com")
if err != nil {
t.Errorf("Error while creating the configmap %v", err)
}
// Creating StatefulSet
_, err = testutil.CreateStatefulSet(client, configmapName, namespace)
if err != nil {
t.Errorf("Error in StatefulSet creation: %v", err)
}
// Updating configmap for first time
updateErr := testutil.UpdateConfigMap(configmapClient, namespace, configmapName, "", "www.stakater.com")
if updateErr != nil {
err = controller.client.CoreV1().ConfigMaps(namespace).Delete(configmapName, &metav1.DeleteOptions{})
if err != nil {
logrus.Errorf("Error while deleting the configmap %v", err)
}
t.Errorf("Configmap was not updated")
}
// Updating configmap for second time
updateErr = testutil.UpdateConfigMap(configmapClient, namespace, configmapName, "", "aurorasolutions.io")
if updateErr != nil {
err = controller.client.CoreV1().ConfigMaps(namespace).Delete(configmapName, &metav1.DeleteOptions{})
if err != nil {
logrus.Errorf("Error while deleting the configmap %v", err)
}
t.Errorf("Configmap was not updated")
}
// Verifying StatefulSet update
logrus.Infof("Verifying env var has been updated")
shaData := testutil.ConvertResourceToSHA(testutil.ConfigmapResourceType, namespace, configmapName, "aurorasolutions.io")
updated := testutil.VerifyStatefulSetUpdate(client, namespace, configmapName, common.ConfigmapEnvarPostfix, shaData, common.ConfigmapUpdateOnChangeAnnotation)
if !updated {
t.Errorf("StatefulSet was not updated")
}
time.Sleep(5 * time.Second)
// Deleting StatefulSet
err = testutil.DeleteStatefulSet(client, namespace, configmapName)
if err != nil {
logrus.Errorf("Error while deleting the StatefulSet %v", err)
}
// Deleting configmap
err = testutil.DeleteConfigMap(client, namespace, configmapName)
if err != nil {
logrus.Errorf("Error while deleting the configmap %v", err)
}
time.Sleep(5 * time.Second)
}
// Do not Perform rolling upgrade on StatefulSet and create env var upon updating the labels configmap
func TestControllerUpdatingConfigmapLabelsShouldNotCreateorUpdateEnvInStatefulSet(t *testing.T) {
// Creating Controller
logrus.Infof("Creating controller")
controller, err := NewController(client, testutil.ConfigmapResourceType, namespace)
if err != nil {
logrus.Errorf("Unable to create NewController error = %v", err)
return
}
stop := make(chan struct{})
defer close(stop)
logrus.Infof("Starting controller")
go controller.Run(1, stop)
time.Sleep(5 * time.Second)
// Creating configmap
configmapName := configmapNamePrefix + "-update-" + common.RandSeq(5)
configmapClient, err := testutil.CreateConfigMap(client, namespace, configmapName, "www.google.com")
if err != nil {
t.Errorf("Error while creating the configmap %v", err)
}
// Creating StatefulSet
_, err = testutil.CreateStatefulSet(client, configmapName, namespace)
if err != nil {
t.Errorf("Error in StatefulSet creation: %v", err)
}
// Updating configmap for first time
updateErr := testutil.UpdateConfigMap(configmapClient, namespace, configmapName, "test", "www.google.com")
if updateErr != nil {
err = controller.client.CoreV1().ConfigMaps(namespace).Delete(configmapName, &metav1.DeleteOptions{})
if err != nil {
logrus.Errorf("Error while deleting the configmap %v", err)
}
t.Errorf("Configmap was not updated")
}
// Verifying StatefulSet update
logrus.Infof("Verifying env var has been created")
shaData := testutil.ConvertResourceToSHA(testutil.ConfigmapResourceType, namespace, configmapName, "www.google.com")
updated := testutil.VerifyStatefulSetUpdate(client, namespace, configmapName, common.ConfigmapEnvarPostfix, shaData, common.ConfigmapUpdateOnChangeAnnotation)
if updated {
t.Errorf("StatefulSet should not be updated by changing label")
}
time.Sleep(5 * time.Second)
// Deleting StatefulSet
err = testutil.DeleteStatefulSet(client, namespace, configmapName)
if err != nil {
logrus.Errorf("Error while deleting the StatefulSet %v", err)
}
// Deleting configmap
err = testutil.DeleteConfigMap(client, namespace, configmapName)
if err != nil {
logrus.Errorf("Error while deleting the configmap %v", err)
}
time.Sleep(5 * time.Second)
}
// Perform rolling upgrade on secret and create a env var upon updating the secret
func TestControllerUpdatingSecretShouldCreateEnvInStatefulSet(t *testing.T) {
// Creating controller
controller, err := NewController(client, testutil.SecretResourceType, namespace)
if err != nil {
logrus.Errorf("Unable to create NewController error = %v", err)
return
}
stop := make(chan struct{})
defer close(stop)
go controller.Run(1, stop)
time.Sleep(5 * time.Second)
// Creating secret
secretName := secretNamePrefix + "-update-" + common.RandSeq(5)
secretClient, err := testutil.CreateSecret(client, namespace, secretName, data)
if err != nil {
t.Errorf("Error in secret creation: %v", err)
}
// Creating StatefulSet
_, err = testutil.CreateStatefulSet(client, secretName, namespace)
if err != nil {
t.Errorf("Error in StatefulSet creation: %v", err)
}
// Updating Secret
err = testutil.UpdateSecret(secretClient, namespace, secretName, "", newData)
if err != nil {
t.Errorf("Error while updating secret %v", err)
}
// Verifying Upgrade
logrus.Infof("Verifying env var has been created")
shaData := testutil.ConvertResourceToSHA(testutil.SecretResourceType, namespace, secretName, newData)
updated := testutil.VerifyStatefulSetUpdate(client, namespace, secretName, common.SecretEnvarPostfix, shaData, common.SecretUpdateOnChangeAnnotation)
if !updated {
t.Errorf("StatefulSet was not updated")
}
//time.Sleep(5 * time.Second)
// Deleting StatefulSet
err = testutil.DeleteStatefulSet(client, namespace, secretName)
if err != nil {
logrus.Errorf("Error while deleting the StatefulSet %v", err)
}
//Deleting Secret
err = testutil.DeleteSecret(client, namespace, secretName)
if err != nil {
logrus.Errorf("Error while deleting the secret %v", err)
}
time.Sleep(5 * time.Second)
}
// Perform rolling upgrade on StatefulSet and update env var upon updating the secret
func TestControllerUpdatingSecretShouldUpdateEnvInStatefulSet(t *testing.T) {
// Creating controller
controller, err := NewController(client, testutil.SecretResourceType, namespace)
if err != nil {
logrus.Errorf("Unable to create NewController error = %v", err)
return
}
stop := make(chan struct{})
defer close(stop)
go controller.Run(1, stop)
time.Sleep(5 * time.Second)
// Creating secret
secretName := secretNamePrefix + "-update-" + common.RandSeq(5)
secretClient, err := testutil.CreateSecret(client, namespace, secretName, data)
if err != nil {
t.Errorf("Error in secret creation: %v", err)
}
// Creating StatefulSet
_, err = testutil.CreateStatefulSet(client, secretName, namespace)
if err != nil {
t.Errorf("Error in StatefulSet creation: %v", err)
}
// Updating Secret
err = testutil.UpdateSecret(secretClient, namespace, secretName, "", newData)
if err != nil {
t.Errorf("Error while updating secret %v", err)
}
// Updating Secret
err = testutil.UpdateSecret(secretClient, namespace, secretName, "", updatedData)
if err != nil {
t.Errorf("Error while updating secret %v", err)
}
// Verifying Upgrade
logrus.Infof("Verifying env var has been updated")
shaData := testutil.ConvertResourceToSHA(testutil.SecretResourceType, namespace, secretName, updatedData)
updated := testutil.VerifyStatefulSetUpdate(client, namespace, secretName, common.SecretEnvarPostfix, shaData, common.SecretUpdateOnChangeAnnotation)
if !updated {
t.Errorf("StatefulSet was not updated")
}
//time.Sleep(5 * time.Second)
// Deleting StatefulSet
err = testutil.DeleteStatefulSet(client, namespace, secretName)
if err != nil {
logrus.Errorf("Error while deleting the StatefulSet %v", err)
}
//Deleting Secret
err = testutil.DeleteSecret(client, namespace, secretName)
if err != nil {
logrus.Errorf("Error while deleting the secret %v", err)
}
time.Sleep(5 * time.Second)
}

View File

@@ -59,7 +59,7 @@ func rollingUpgrade(r ResourceUpdatedHandler, rollingUpgradeType string) {
} else {
logrus.Warnf("Invalid resource: Resource should be 'Secret' or 'Configmap' but found, %v", r.Resource)
}
if rollingUpgradeType == "deployments" {
err = RollingUpgradeDeployment(client, namespace, resourceName, shaData, envarPostfix, annotation)
} else if rollingUpgradeType == "daemonsets" {
@@ -216,7 +216,7 @@ func getSHAfromData(resource interface{}) string {
for k, v := range resource.(*v1.ConfigMap).Data {
values = append(values, k+"="+v)
}
} else if _, ok := resource.(*v1.Secret); ok{
} else if _, ok := resource.(*v1.Secret); ok {
logrus.Infof("Generating SHA for secret data")
for k, v := range resource.(*v1.Secret).Data {
values = append(values, k+"="+string(v[:]))
@@ -224,4 +224,4 @@ func getSHAfromData(resource interface{}) string {
}
sort.Strings(values)
return crypto.GenerateSHA(strings.Join(values, ";"))
}
}

View File

@@ -70,28 +70,28 @@ func setup() {
logrus.Errorf("Error in Deployment with secret creation: %v", err)
}
// Creating Daemonset with configmap
_, err = testutil.CreateDaemonset(client, configmapName, namespace)
// Creating DaemonSet with configmap
_, err = testutil.CreateDaemonSet(client, configmapName, namespace)
if err != nil {
logrus.Errorf("Error in Daemonset with configmap creation: %v", err)
logrus.Errorf("Error in DaemonSet with configmap creation: %v", err)
}
// Creating Daemonset with secret
_, err = testutil.CreateDaemonset(client, secretName, namespace)
// Creating DaemonSet with secret
_, err = testutil.CreateDaemonSet(client, secretName, namespace)
if err != nil {
logrus.Errorf("Error in Daemonset with secret creation: %v", err)
logrus.Errorf("Error in DaemonSet with secret creation: %v", err)
}
// Creating Statefulset with configmap
_, err = testutil.CreateStatefulset(client, configmapName, namespace)
// Creating StatefulSet with configmap
_, err = testutil.CreateStatefulSet(client, configmapName, namespace)
if err != nil {
logrus.Errorf("Error in Statefulset with configmap creation: %v", err)
logrus.Errorf("Error in StatefulSet with configmap creation: %v", err)
}
// Creating Statefulset with secret
_, err = testutil.CreateStatefulset(client, secretName, namespace)
// Creating StatefulSet with secret
_, err = testutil.CreateStatefulSet(client, secretName, namespace)
if err != nil {
logrus.Errorf("Error in Statefulset with secret creation: %v", err)
logrus.Errorf("Error in StatefulSet with secret creation: %v", err)
}
}
@@ -109,28 +109,28 @@ func teardown() {
logrus.Errorf("Error while deleting deployment with secret %v", deploymentError)
}
// Deleting Daemonset with configmap
daemonsetError := testutil.DeleteDaemonset(client, namespace, configmapName)
if daemonsetError != nil {
logrus.Errorf("Error while deleting daemonset with configmap %v", daemonsetError)
// Deleting DaemonSet with configmap
daemonSetError := testutil.DeleteDaemonSet(client, namespace, configmapName)
if daemonSetError != nil {
logrus.Errorf("Error while deleting daemonSet with configmap %v", daemonSetError)
}
// Deleting Deployment with secret
daemonsetError = testutil.DeleteDaemonset(client, namespace, secretName)
if daemonsetError != nil {
logrus.Errorf("Error while deleting daemonset with secret %v", daemonsetError)
daemonSetError = testutil.DeleteDaemonSet(client, namespace, secretName)
if daemonSetError != nil {
logrus.Errorf("Error while deleting daemonSet with secret %v", daemonSetError)
}
// Deleting Statefulset with configmap
statefulsetError := testutil.DeleteStatefulset(client, namespace, configmapName)
if statefulsetError != nil {
logrus.Errorf("Error while deleting statefulset with configmap %v", statefulsetError)
// Deleting StatefulSet with configmap
statefulSetError := testutil.DeleteStatefulSet(client, namespace, configmapName)
if statefulSetError != nil {
logrus.Errorf("Error while deleting statefulSet with configmap %v", statefulSetError)
}
// Deleting Deployment with secret
statefulsetError = testutil.DeleteStatefulset(client, namespace, secretName)
if statefulsetError != nil {
logrus.Errorf("Error while deleting statefulset with secret %v", statefulsetError)
statefulSetError = testutil.DeleteStatefulSet(client, namespace, secretName)
if statefulSetError != nil {
logrus.Errorf("Error while deleting statefulSet with secret %v", statefulSetError)
}
// Deleting Configmap
@@ -180,7 +180,7 @@ func TestRollingUpgradeForDeploymentWithSecret(t *testing.T) {
}
}
func TestRollingUpgradeForDaemonsetWithConfigmap(t *testing.T) {
func TestRollingUpgradeForDaemonSetWithConfigmap(t *testing.T) {
shaData := testutil.ConvertResourceToSHA(testutil.ConfigmapResourceType, namespace, configmapName, "www.facebook.com")
err := RollingUpgradeDaemonSets(client, namespace, configmapName, shaData, common.ConfigmapEnvarPostfix, common.ConfigmapUpdateOnChangeAnnotation)
time.Sleep(5 * time.Second)
@@ -188,14 +188,14 @@ func TestRollingUpgradeForDaemonsetWithConfigmap(t *testing.T) {
t.Errorf("Rolling upgrade failed for DaemonSet with configmap")
}
logrus.Infof("Verifying daemonset update")
updated := testutil.VerifyDaemonsetUpdate(client, namespace, configmapName, common.ConfigmapEnvarPostfix, shaData, common.ConfigmapUpdateOnChangeAnnotation)
logrus.Infof("Verifying daemonSet update")
updated := testutil.VerifyDaemonSetUpdate(client, namespace, configmapName, common.ConfigmapEnvarPostfix, shaData, common.ConfigmapUpdateOnChangeAnnotation)
if !updated {
t.Errorf("Daemonset was not updated")
t.Errorf("DaemonSet was not updated")
}
}
func TestRollingUpgradeForDaemonsetWithSecret(t *testing.T) {
func TestRollingUpgradeForDaemonSetWithSecret(t *testing.T) {
shaData := testutil.ConvertResourceToSHA(testutil.SecretResourceType, namespace, secretName, "d3d3LmZhY2Vib29rLmNvbQ==")
err := RollingUpgradeDaemonSets(client, namespace, secretName, shaData, common.SecretEnvarPostfix, common.SecretUpdateOnChangeAnnotation)
time.Sleep(5 * time.Second)
@@ -203,14 +203,14 @@ func TestRollingUpgradeForDaemonsetWithSecret(t *testing.T) {
t.Errorf("Rolling upgrade failed for DaemonSet with secret")
}
logrus.Infof("Verifying daemonset update")
updated := testutil.VerifyDaemonsetUpdate(client, namespace, secretName, common.SecretEnvarPostfix, shaData, common.SecretUpdateOnChangeAnnotation)
logrus.Infof("Verifying daemonSet update")
updated := testutil.VerifyDaemonSetUpdate(client, namespace, secretName, common.SecretEnvarPostfix, shaData, common.SecretUpdateOnChangeAnnotation)
if !updated {
t.Errorf("Daemonset was not updated")
t.Errorf("DaemonSet was not updated")
}
}
func TestRollingUpgradeForStatefulsetWithConfigmap(t *testing.T) {
func TestRollingUpgradeForStatefulSetWithConfigmap(t *testing.T) {
shaData := testutil.ConvertResourceToSHA(testutil.ConfigmapResourceType, namespace, configmapName, "www.twitter.com")
err := RollingUpgradeStatefulSets(client, namespace, configmapName, shaData, common.ConfigmapEnvarPostfix, common.ConfigmapUpdateOnChangeAnnotation)
time.Sleep(5 * time.Second)
@@ -218,14 +218,14 @@ func TestRollingUpgradeForStatefulsetWithConfigmap(t *testing.T) {
t.Errorf("Rolling upgrade failed for StatefulSet with configmap")
}
logrus.Infof("Verifying statefulset update")
updated := testutil.VerifyStatefulsetUpdate(client, namespace, configmapName, common.ConfigmapEnvarPostfix, shaData, common.ConfigmapUpdateOnChangeAnnotation)
logrus.Infof("Verifying statefulSet update")
updated := testutil.VerifyStatefulSetUpdate(client, namespace, configmapName, common.ConfigmapEnvarPostfix, shaData, common.ConfigmapUpdateOnChangeAnnotation)
if !updated {
t.Errorf("Statefulset was not updated")
t.Errorf("StatefulSet was not updated")
}
}
func TestRollingUpgradeForStatefulsetWithSecret(t *testing.T) {
func TestRollingUpgradeForStatefulSetWithSecret(t *testing.T) {
shaData := testutil.ConvertResourceToSHA(testutil.SecretResourceType, namespace, secretName, "d3d3LnR3aXR0ZXIuY29t")
err := RollingUpgradeStatefulSets(client, namespace, secretName, shaData, common.SecretEnvarPostfix, common.SecretUpdateOnChangeAnnotation)
time.Sleep(5 * time.Second)
@@ -233,9 +233,9 @@ func TestRollingUpgradeForStatefulsetWithSecret(t *testing.T) {
t.Errorf("Rolling upgrade failed for StatefulSet with secret")
}
logrus.Infof("Verifying statefulset update")
updated := testutil.VerifyStatefulsetUpdate(client, namespace, secretName, common.SecretEnvarPostfix, shaData, common.SecretUpdateOnChangeAnnotation)
logrus.Infof("Verifying statefulSet update")
updated := testutil.VerifyStatefulSetUpdate(client, namespace, secretName, common.SecretEnvarPostfix, shaData, common.SecretUpdateOnChangeAnnotation)
if !updated {
t.Errorf("Statefulset was not updated")
t.Errorf("StatefulSet was not updated")
}
}

View File

@@ -83,8 +83,8 @@ func GetDeployment(namespace string, deploymentName string) *v1beta1.Deployment
}
}
// GetDaemonset provides daemonset for testing
func GetDaemonset(namespace string, daemonsetName string) *v1beta1.DaemonSet {
// GetDaemonSet provides daemonset for testing
func GetDaemonSet(namespace string, daemonsetName string) *v1beta1.DaemonSet {
return &v1beta1.DaemonSet{
ObjectMeta: metav1.ObjectMeta{
Name: daemonsetName,
@@ -121,8 +121,8 @@ func GetDaemonset(namespace string, daemonsetName string) *v1beta1.DaemonSet {
}
}
// GetStatefulset provides statefulset for testing
func GetStatefulset(namespace string, statefulsetName string) *v1_beta1.StatefulSet {
// GetStatefulSet provides statefulset for testing
func GetStatefulSet(namespace string, statefulsetName string) *v1_beta1.StatefulSet {
return &v1_beta1.StatefulSet{
ObjectMeta: metav1.ObjectMeta{
Name: statefulsetName,
@@ -238,8 +238,8 @@ func VerifyDeploymentUpdate(client kubernetes.Interface, namespace string, name
return false
}
// VerifyDaemonsetUpdate verifies whether daemonset has been updated with environment variable or not
func VerifyDaemonsetUpdate(client kubernetes.Interface, namespace string, name string, resourceType string, shaData string, annotation string) bool {
// VerifyDaemonSetUpdate verifies whether daemonset has been updated with environment variable or not
func VerifyDaemonSetUpdate(client kubernetes.Interface, namespace string, name string, resourceType string, shaData string, annotation string) bool {
daemonsets, err := client.ExtensionsV1beta1().DaemonSets(namespace).List(metav1.ListOptions{})
if err != nil {
logrus.Errorf("Failed to list daemonsets %v", err)
@@ -270,8 +270,8 @@ func VerifyDaemonsetUpdate(client kubernetes.Interface, namespace string, name s
return false
}
// VerifyStatefulsetUpdate verifies whether statefulset has been updated with environment variable or not
func VerifyStatefulsetUpdate(client kubernetes.Interface, namespace string, name string, resourceType string, shaData string, annotation string) bool {
// VerifyStatefulSetUpdate verifies whether statefulset has been updated with environment variable or not
func VerifyStatefulSetUpdate(client kubernetes.Interface, namespace string, name string, resourceType string, shaData string, annotation string) bool {
statefulsets, err := client.AppsV1beta1().StatefulSets(namespace).List(metav1.ListOptions{})
if err != nil {
logrus.Errorf("Failed to list statefulsets %v", err)
@@ -338,7 +338,7 @@ func CreateConfigMap(client kubernetes.Interface, namespace string, configmapNam
logrus.Infof("Creating configmap")
configmapClient := client.CoreV1().ConfigMaps(namespace)
_, err := configmapClient.Create(GetConfigmap(namespace, configmapName, data))
time.Sleep(10 * time.Second)
time.Sleep(5 * time.Second)
return configmapClient, err
}
@@ -347,7 +347,7 @@ func CreateSecret(client kubernetes.Interface, namespace string, secretName stri
logrus.Infof("Creating secret")
secretClient := client.CoreV1().Secrets(namespace)
_, err := secretClient.Create(GetSecret(namespace, secretName, data))
time.Sleep(10 * time.Second)
time.Sleep(5 * time.Second)
return secretClient, err
}
@@ -360,20 +360,20 @@ func CreateDeployment(client kubernetes.Interface, deploymentName string, namesp
return deployment, err
}
// CreateDaemonset creates a deployment in given namespace and returns the DaemonSet
func CreateDaemonset(client kubernetes.Interface, daemonsetName string, namespace string) (*v1beta1.DaemonSet, error) {
logrus.Infof("Creating Daemonset")
// CreateDaemonSet creates a deployment in given namespace and returns the DaemonSet
func CreateDaemonSet(client kubernetes.Interface, daemonsetName string, namespace string) (*v1beta1.DaemonSet, error) {
logrus.Infof("Creating DaemonSet")
daemonsetClient := client.ExtensionsV1beta1().DaemonSets(namespace)
daemonset, err := daemonsetClient.Create(GetDaemonset(namespace, daemonsetName))
daemonset, err := daemonsetClient.Create(GetDaemonSet(namespace, daemonsetName))
time.Sleep(5 * time.Second)
return daemonset, err
}
// CreateStatefulset creates a deployment in given namespace and returns the StatefulSet
func CreateStatefulset(client kubernetes.Interface, statefulsetName string, namespace string) (*v1_beta1.StatefulSet, error) {
logrus.Infof("Creating Statefulset")
// CreateStatefulSet creates a deployment in given namespace and returns the StatefulSet
func CreateStatefulSet(client kubernetes.Interface, statefulsetName string, namespace string) (*v1_beta1.StatefulSet, error) {
logrus.Infof("Creating StatefulSet")
statefulsetClient := client.AppsV1beta1().StatefulSets(namespace)
statefulset, err := statefulsetClient.Create(GetStatefulset(namespace, statefulsetName))
statefulset, err := statefulsetClient.Create(GetStatefulSet(namespace, statefulsetName))
time.Sleep(5 * time.Second)
return statefulset, err
}
@@ -386,17 +386,17 @@ func DeleteDeployment(client kubernetes.Interface, namespace string, deploymentN
return deploymentError
}
// DeleteDaemonset creates a daemonset in given namespace and returns the error if any
func DeleteDaemonset(client kubernetes.Interface, namespace string, daemonsetName string) error {
logrus.Infof("Deleting Daemonset %s", daemonsetName)
// DeleteDaemonSet creates a daemonset in given namespace and returns the error if any
func DeleteDaemonSet(client kubernetes.Interface, namespace string, daemonsetName string) error {
logrus.Infof("Deleting DaemonSet %s", daemonsetName)
daemonsetError := client.ExtensionsV1beta1().DaemonSets(namespace).Delete(daemonsetName, &metav1.DeleteOptions{})
time.Sleep(5 * time.Second)
return daemonsetError
}
// DeleteStatefulset creates a statefulset in given namespace and returns the error if any
func DeleteStatefulset(client kubernetes.Interface, namespace string, statefulsetName string) error {
logrus.Infof("Deleting Statefulset %s", statefulsetName)
// DeleteStatefulSet creates a statefulset in given namespace and returns the error if any
func DeleteStatefulSet(client kubernetes.Interface, namespace string, statefulsetName string) error {
logrus.Infof("Deleting StatefulSet %s", statefulsetName)
statefulsetError := client.AppsV1beta1().StatefulSets(namespace).Delete(statefulsetName, &metav1.DeleteOptions{})
time.Sleep(5 * time.Second)
return statefulsetError