Kaynağa Gözat

[bitnami/rabbitmq] Revisit tests (#12733)

* [bitnami/rabbitmq] Revisit tests

Signed-off-by: FraPazGal <fdepaz@vmware.com>

* Update publish pipeline

Signed-off-by: FraPazGal <fdepaz@vmware.com>

* Remove unused vars

Signed-off-by: FraPazGal <fdepaz@vmware.com>

* Apply suggestions

Signed-off-by: FraPazGal <fdepaz@vmware.com>

Signed-off-by: FraPazGal <fdepaz@vmware.com>
Francisco de Paz Galan 3 yıl önce
ebeveyn
işleme
1af4f7062d

+ 1 - 3
.vib/rabbitmq/cypress/cypress.json

@@ -1,9 +1,7 @@
 {
   "baseUrl": "http://localhost",
-  "pageLoadTimeout": 500000,
-  "defaultCommandTimeout": 90000,
   "env": {
-    "username": "user",
+    "username": "test_user",
     "password": "ComplicatedPassword123!4"
   }
 }

+ 0 - 7
.vib/rabbitmq/cypress/cypress/fixtures/admins.json

@@ -1,7 +0,0 @@
-{
-  "newAdmin": {
-    "userName": "Jane Doe Dev",
-    "password": "JanesSecurePassword",
-    "tags": "administrator"
-  }
-}

+ 0 - 7
.vib/rabbitmq/cypress/cypress/fixtures/queues.json

@@ -1,7 +0,0 @@
-{
-  "newQueue": {
-    "name": "testQue",
-    "argument1": "A",
-    "argument2": "B"
-  }
-}

+ 9 - 85
.vib/rabbitmq/cypress/cypress/integration/rabbitmq_spec.js

@@ -1,109 +1,33 @@
 /// <reference types="cypress" />
 import { random } from '../support/utils';
 
-it('allows login/logout', () => {
-  cy.login();
-  cy.get('#versions')
-    .invoke('text')
-    .should('match', /RabbitMQ.*\d+\.\d+\.\d+/);
-  cy.contains('RabbitMQ Management');
-  cy.contains('Log out').click();
-  cy.contains('#login', 'Username');
-});
-
 it('allows uploading broker definitions', () => {
   cy.login();
   cy.contains('Import definitions').click();
-  cy.get('input[type="file"]').selectFile(
+  cy.get('[type="file"]').selectFile(
     'cypress/fixtures/broker-definitions.json'
   );
-  cy.contains('Upload broker definitions').click();
+  cy.contains('input', 'Upload').click();
   cy.get('.form-popup-warn').should('not.exist');
-  cy.contains('Your definitions were imported successfully');
+  cy.contains('imported successfully');
 });
 
 it('allows publishing a message to a created exchange', () => {
   cy.login();
-  cy.visit('#/exchanges');
+  cy.visit('/#/exchanges');
   cy.contains('Add a new exchange').click();
   cy.fixture('exchanges').then((exchange) => {
-    cy.get('[name="name"]')
-      .scrollIntoView()
-      .type(`${exchange.newExchange.name}${random}`);
+    cy.get('[name="name"]').type(`${exchange.newExchange.name}${random}`);
     cy.get('#arguments_1_mfkey').type(exchange.newExchange.argument1);
     cy.get('#arguments_1_mfvalue').type(exchange.newExchange.argument2);
-    cy.contains('Add exchange')
-      .scrollIntoView()
-      .should('be.enabled')
-      .click({ force: true });
+    cy.contains('Add exchange').click({ force: true });
     cy.reload();
-    cy.get('table[class="list"]').should(
-      'contain',
-      `${exchange.newExchange.name}${random}`
-    );
     cy.contains('a', `${exchange.newExchange.name}${random}`).click();
   });
-  cy.contains('Publish message').click();
+  cy.contains('h2', 'Publish').click();
   cy.fixture('messages').then((message) => {
-    cy.get('textarea')
-      .should('not.be.disabled')
-      .type(message.newMessage.payload);
+    cy.get('textarea').type(message.newMessage.payload);
   });
-  cy.contains('input', 'Publish message').click();
+  cy.contains('input', 'Publish').click();
   cy.contains('Message published');
 });
-
-it('allows adding a new queue and binding/unbinding it to the exchange', () => {
-  cy.login();
-  cy.visit('#/queues');
-  cy.contains('Add a new queue').click();
-  cy.fixture('queues').then((queue) => {
-    cy.get('[name="name"]').type(`${queue.newQueue.name}${random}`);
-    cy.get('#arguments_1_mfkey').type(queue.newQueue.argument1);
-    cy.get('#arguments_1_mfvalue').type(queue.newQueue.argument2);
-    cy.contains('Add queue')
-      .scrollIntoView()
-      .should('be.enabled')
-      .click({ force: true });
-    cy.reload();
-    cy.contains('table', `${queue.newQueue.name}${random}`);
-  });
-  cy.visit('#/exchanges');
-  cy.contains('amq.direct').click();
-  cy.contains('Bindings').click();
-  cy.fixture('queues').then((queue) => {
-    cy.get('[name="destination"]').type(`${queue.newQueue.name}${random}`);
-    cy.contains('[type="submit"]', 'Bind').click();
-    cy.contains('.bindings-wrapper', `${queue.newQueue.name}${random}`);
-  });
-  cy.contains('Unbind').click();
-  cy.contains('no bindings');
-});
-
-it('allows adding a new admin and logging in as such', () => {
-  cy.login();
-  cy.visit('/#/users');
-  cy.contains('Add a user').click();
-  cy.fixture('admins').then((admin) => {
-    cy.get('[name="username"').type(`${admin.newAdmin.userName}${random}`);
-    cy.get('[name="password"]').type(`${admin.newAdmin.password}${random}`);
-    cy.get('[name="password_confirm"]').type(
-      `${admin.newAdmin.password}${random}`
-    );
-    cy.get('#tags').type(admin.newAdmin.tags);
-    cy.contains('input[type="submit"]', 'Add user').click();
-    cy.get('[class="updatable"]').should(
-      'contain',
-      `${admin.newAdmin.userName}${random}`
-    );
-    cy.contains('Log out').click();
-    cy.get('[alt="RabbitMQ logo"]');
-    cy.get('[name="username"]').type(`${admin.newAdmin.userName}${random}`);
-    cy.get('[name="password"]').type(`${admin.newAdmin.password}${random}`);
-    cy.contains('Login').click();
-    cy.get('#versions')
-      .invoke('text')
-      .should('match', /RabbitMQ\s\d+\.\d+\.\d+/);
-    cy.contains('Log out');
-  });
-});

+ 0 - 11
.vib/rabbitmq/cypress/cypress/support/commands.js

@@ -16,19 +16,8 @@ Cypress.Commands.add(
   'login',
   (username = Cypress.env('username'), password = Cypress.env('password')) => {
     cy.visit('/');
-    cy.get('[alt="RabbitMQ logo"]');
     cy.get('[name="username"]').type(username);
     cy.get('[name="password"]').type(password);
     cy.contains('Login').click();
   }
 );
-
-Cypress.on('uncaught:exception', (err, runnable) => {
-  // we expect a 3rd party library error with message 'list not defined'
-  // and don't want to fail the test so we return false
-  if (err.message.includes('Cannot read properties of undefined')) {
-    return false;
-  }
-  // we still want to ensure there are no other unexpected
-  // errors, so we let them fail the test
-});

+ 40 - 25
.vib/rabbitmq/goss/goss.yaml

@@ -1,31 +1,46 @@
+addr:
+  tcp://rabbitmq:{{ .Vars.service.ports.amqp }}:
+    reachable: true
+  tcp://rabbitmq:{{ .Vars.service.ports.epmd }}:
+    reachable: true
+  tcp://rabbitmq:{{ .Vars.service.ports.dist }}:
+    reachable: true
+file:
+  {{ .Vars.persistence.mountPath }}:
+    exists: true
+    filetype: symlink
+    mode: "0777"
+    owner: root
+  /bitnami/rabbitmq/conf:
+    exists: true
+    filetype: directory
+    mode: "3777"
+    owner: root
+  /var/run/secrets/kubernetes.io/serviceaccount:
+    exists: {{ .Vars.serviceAccount.automountServiceAccountToken }}
+    filetype: directory
+    mode: "3777"
 command:
-  rabbmitmqctl-version:
-    exec: rabbitmqctl version | grep --quiet $APP_VERSION
-    exit-status: 0
-    stderr: [ ]
-    timeout: 20000
-  rabbitmqctl-add-vhost:
-    exec: rabbitmqctl add_vhost test-host
+  {{- $nodes := .Vars.replicaCount }}
+  rabbitmqctl-cluster-status:
+    exec: rabbitmqctl cluster_status
     exit-status: 0
-    stderr: [ ]
     stdout:
-      - 'Adding vhost'
-    timeout: 20000  
-  rabbitmqctl-list-global-params:
-    exec: rabbitmqctl list_global_parameters
+    {{ range $e, $i := until $nodes }}
+      - /rabbitmq-{{ $i }}.rabbitmq-headless/
+    {{ end }}
+  rabbitmqctl-replication-check:
+    {{- $vhost := printf "vhost_%s" (randAlpha 5) }}
+    exec: rabbitmqctl add_vhost {{ $vhost }} && sleep 2 {{ range $e, $i := until $nodes }} && rabbitmqctl --node rabbit@rabbitmq-{{ $i }} list_vhosts | grep -q {{ $vhost }} {{ end }}
+    exit-status: 0
+  rabbitmq-plugins-enabled:
+    exec: rabbitmq-plugins list --enabled
     exit-status: 0
-    stderr: [ ]
     stdout:
-      - 'Listing global runtime parameters'
-    timeout: 20000
-  user-id-test:
-    exec: if [ "$(id -u)" -eq 0 ]; then exit 1; fi
+      - {{ .Vars.extraPlugins }}
+  check-user-info:
+    exec: id
     exit-status: 0
-    stdout: []
-    stderr: []    
-file:
-  /opt/bitnami/rabbitmq/etc/rabbitmq/rabbitmq.conf:
-    mode: "0644"
-    filetype: file
-    exists: true
-    group: root
+    stdout:
+    - uid={{ .Vars.containerSecurityContext.runAsUser }}
+    - /groups=.*{{ .Vars.podSecurityContext.fsGroup }}/

+ 15 - 0
.vib/rabbitmq/goss/vars.yaml

@@ -0,0 +1,15 @@
+extraPlugins: rabbitmq_top
+replicaCount: 2
+podSecurityContext:
+  fsGroup: 1002
+containerSecurityContext:
+  runAsUser: 1002
+serviceAccount:
+  automountServiceAccountToken: true
+persistence:
+  mountPath: /bitnami/rabbitmq/mnesia
+service:
+  ports:
+    amqp: 5673
+    dist: 25673
+    epmd: 4370

+ 5 - 4
.vib/rabbitmq/vib-publish.json

@@ -22,11 +22,11 @@
           "url": "{SHA_ARCHIVE}",
           "path": "/bitnami/rabbitmq"
         },
-        "runtime_parameters": "YXV0aDoKICBlcmxhbmdDb29raWU6IFJqc3BDQzNubTRrTHY0TGpXRk5mRkhXM3hMeGI3elRDCiAgcGFzc3dvcmQ6IENvbXBsaWNhdGVkUGFzc3dvcmQxMjMhNAogIHVzZXJuYW1lOiB1c2VyCnNlcnZpY2U6CiAgcG9ydHM6CiAgICBtYW5hZ2VyOiA4MAogIHR5cGU6IExvYWRCYWxhbmNlcg==",
+        "runtime_parameters": "YXV0aDoKICB1c2VybmFtZTogdGVzdF91c2VyCiAgcGFzc3dvcmQ6IENvbXBsaWNhdGVkUGFzc3dvcmQxMjMhNAogIGVybGFuZ0Nvb2tpZTogUmpzcENDM25tNGtMdjRMaldGTmZGSFczeEx4Yjd6VEMKcGx1Z2luczogInJhYmJpdG1xX21hbmFnZW1lbnQgcmFiYml0bXFfcGVlcl9kaXNjb3ZlcnlfazhzIgpleHRyYVBsdWdpbnM6ICJyYWJiaXRtcV9hdXRoX2JhY2tlbmRfbGRhcCByYWJiaXRtcV90b3AiCmNsdXN0ZXJpbmc6CiAgZW5hYmxlZDogdHJ1ZQpjb250YWluZXJQb3J0czoKICBhbXFwOiA1NjcyCiAgZGlzdDogMjU2NzIKICBtYW5hZ2VyOiAxNTY3MgogIGVwbWQ6IDQzNjkKcmVwbGljYUNvdW50OiAyCnBvZFNlY3VyaXR5Q29udGV4dDoKICBlbmFibGVkOiB0cnVlCiAgZnNHcm91cDogMTAwMgpjb250YWluZXJTZWN1cml0eUNvbnRleHQ6CiAgZW5hYmxlZDogdHJ1ZQogIHJ1bkFzVXNlcjogMTAwMgpzZXJ2aWNlQWNjb3VudDoKICBjcmVhdGU6IHRydWUKICBhdXRvbW91bnRTZXJ2aWNlQWNjb3VudFRva2VuOiB0cnVlCnJiYWM6CiAgY3JlYXRlOiB0cnVlCnBlcnNpc3RlbmNlOgogIGVuYWJsZWQ6IHRydWUKICBtb3VudFBhdGg6IC9iaXRuYW1pL3JhYmJpdG1xL21uZXNpYQpzZXJ2aWNlOgogIHBvcnRzOgogICAgYW1xcDogNTY3MwogICAgZGlzdDogMjU2NzMKICAgIG1hbmFnZXI6IDgwCiAgICBlcG1kOiA0MzcwCiAgdHlwZTogTG9hZEJhbGFuY2Vy",
         "target_platform": {
           "target_platform_id": "{VIB_ENV_TARGET_PLATFORM}",
           "size": {
-            "name": "M8"
+            "name": "M4"
           }
         }
       },
@@ -47,7 +47,7 @@
             "endpoint": "lb-rabbitmq-http-stats",
             "app_protocol": "HTTP",
             "env": {
-              "username": "user",
+              "username": "test_user",
               "password": "ComplicatedPassword123!4"
             }
           }
@@ -60,7 +60,8 @@
             },
             "remote": {
               "workload": "sts-rabbitmq"
-            }
+            },
+            "vars_file": "vars.yaml"
           }
         }
       ]

+ 5 - 4
.vib/rabbitmq/vib-verify.json

@@ -22,11 +22,11 @@
           "url": "{SHA_ARCHIVE}",
           "path": "/bitnami/rabbitmq"
         },
-        "runtime_parameters": "YXV0aDoKICBlcmxhbmdDb29raWU6IFJqc3BDQzNubTRrTHY0TGpXRk5mRkhXM3hMeGI3elRDCiAgcGFzc3dvcmQ6IENvbXBsaWNhdGVkUGFzc3dvcmQxMjMhNAogIHVzZXJuYW1lOiB1c2VyCnNlcnZpY2U6CiAgcG9ydHM6CiAgICBtYW5hZ2VyOiA4MAogIHR5cGU6IExvYWRCYWxhbmNlcg==",
+        "runtime_parameters": "YXV0aDoKICB1c2VybmFtZTogdGVzdF91c2VyCiAgcGFzc3dvcmQ6IENvbXBsaWNhdGVkUGFzc3dvcmQxMjMhNAogIGVybGFuZ0Nvb2tpZTogUmpzcENDM25tNGtMdjRMaldGTmZGSFczeEx4Yjd6VEMKcGx1Z2luczogInJhYmJpdG1xX21hbmFnZW1lbnQgcmFiYml0bXFfcGVlcl9kaXNjb3ZlcnlfazhzIgpleHRyYVBsdWdpbnM6ICJyYWJiaXRtcV9hdXRoX2JhY2tlbmRfbGRhcCByYWJiaXRtcV90b3AiCmNsdXN0ZXJpbmc6CiAgZW5hYmxlZDogdHJ1ZQpjb250YWluZXJQb3J0czoKICBhbXFwOiA1NjcyCiAgZGlzdDogMjU2NzIKICBtYW5hZ2VyOiAxNTY3MgogIGVwbWQ6IDQzNjkKcmVwbGljYUNvdW50OiAyCnBvZFNlY3VyaXR5Q29udGV4dDoKICBlbmFibGVkOiB0cnVlCiAgZnNHcm91cDogMTAwMgpjb250YWluZXJTZWN1cml0eUNvbnRleHQ6CiAgZW5hYmxlZDogdHJ1ZQogIHJ1bkFzVXNlcjogMTAwMgpzZXJ2aWNlQWNjb3VudDoKICBjcmVhdGU6IHRydWUKICBhdXRvbW91bnRTZXJ2aWNlQWNjb3VudFRva2VuOiB0cnVlCnJiYWM6CiAgY3JlYXRlOiB0cnVlCnBlcnNpc3RlbmNlOgogIGVuYWJsZWQ6IHRydWUKICBtb3VudFBhdGg6IC9iaXRuYW1pL3JhYmJpdG1xL21uZXNpYQpzZXJ2aWNlOgogIHBvcnRzOgogICAgYW1xcDogNTY3MwogICAgZGlzdDogMjU2NzMKICAgIG1hbmFnZXI6IDgwCiAgICBlcG1kOiA0MzcwCiAgdHlwZTogTG9hZEJhbGFuY2Vy",
         "target_platform": {
           "target_platform_id": "{VIB_ENV_TARGET_PLATFORM}",
           "size": {
-            "name": "M8"
+            "name": "M4"
           }
         }
       },
@@ -46,7 +46,8 @@
             },
             "remote": {
               "workload": "sts-rabbitmq"
-            }
+            },
+            "vars_file": "vars.yaml"
           }
         },
         {
@@ -58,7 +59,7 @@
             "endpoint": "lb-rabbitmq-http-stats",
             "app_protocol": "HTTP",
             "env": {
-              "username": "user",
+              "username": "test_user",
               "password": "ComplicatedPassword123!4"
             }
           }