Test Workflow

  1. Create an Account
    1. Create a new account with the following credentials:
    2. username: testacct
    3. password: password
  2. Sign In
    1. Sign In with new credentials above
    2. You should be redirected to /home after login
  3. Search Services
    1. Search for "Clowder" in the Services Pane
    2. You should see only components of the "Clowder" stack listed
    3. Open a duplicate browser window to test auto refresh?
  4. Add a New Stack of Services
    1. Add a new Clowder stack
    2. Do not specify any options
    3. Create a new volume
  5. Add Service to Stack
    1. Add "PlantCV" to new Clowder stack
    2. This should add both PlantCV and RabbitMQ
    3. RabbitMQ should not be removable
  6. Start Stack
    1. Start the Clowder stack
    2. Status Order: Stopped -> Waiting -> Starting -> Ready
    3. View Logs should be available when services are "waiting," "starting," or "ready"
    4. Endpoint Links should appear once stack is fully "started"
      1. Sign into Clowder, register for an account, and upload a file
      2. This is just to test that persisted data is preserved
  7. Stop Stack
    1. Stop the Clowder stack
    2. Status Order: Ready -> Stopping -> Stopped
  8. Remove Service from Stack
    1. Remove "PlantCV" from the Clowder stack
    2. RabbitMQ should now be removable
    3. Remove "RabbitMQ" from the Clowder stack
  9. Delete Stack
    1. Delete the Clowder stack
    2. Opt to save the volumes for later (i.e. orphan them, do not delete)
  10. Add a New Stack of Services
    1. Add another Clowder stack
    2. This time, specify options: ElasticSearch
    3. Opt to reuse the orphaned volumes from before
  11. Start Stack
    1. Start the Clowder stack
    2. Status Order: Stopped -> Waiting -> Starting -> Ready
    3. View Logs should be available when services are "waiting," "starting," or "ready"
    4. Endpoint Links should appear once stack is fully "started"
      1. Sign into Clowder and verify that our account and uploaded image are still present
  12. Stop Stack
    1. Stop the Clowder stack
    2. Status Order: Ready -> Stopping -> Stopped
  13. Delete Stack
    1. Delete the Clowder stack
    2. Once again, save its volumes (i.e. orphan them, do not delete)
  14. Delete Volume
    1. Delete the orphaned volume manually
  15. Add a New Stack of Services
    1. Add one more Clowder stack
    2. Create a new volume
  16. Delete Stack
    1. Delete the stack you just created, opting to destroy data volumes
  17. Sign Out

Use Cases

Login View

Create an Account

  • DISCLAIMER: This function is for demos and local development, and may not show up during production use
  • User is prompted to enter information about their new project:
    • username: required (aka Kubernetes namespace)
    • password: required
    • confirm password: required
    • project name: optional
    • description: optional

Sign In

  • User can enter their credentials here
    • Valid credentials should log the user in, allowing them to access the REST API functions
    • Invalid credentials will yield a special error message
    • Unknown (network/server) errors will yield a generic error message
  • After logging in, user should be automatically taken to the /home view.

Sign Out

  • At any time the user can choose to "Sign Out", which will end their session by deleting the token from their browser
  • The user's session will remain open in the backend until their token expires

Home View

Auto Refresh

  • Open 2 different browser windows to the GUI
  • Log in to the same account on both
    • This simulates simultaneous access to a single account by multiple users
  • Create a stack on one window, then switch to the other window
    • Notice that the second window does not have the new stack
  • Toggle Auto Refresh on by clicking the button at the top-right
    • You should see the new stack the was added by the other window appear like magic

Search Services

  • On the Services Pane (left-hand side for desktop, or at the top on mobile) you should see a list of services that you can add
  • The input at the top of this list allows the user to filter the list of specs.
  • Search for "Clowder" 
  • The results below should yield all components of the Clowder stack

Add a New Stack of Services

  • Click the "Add" button next to a service on the Services Pane
  • A wizard should pop up allowing the user to add and configure the new stack of services
  • Requirements Page
    • This page should display a description of the stack that will be added
    • All required services should be listed
    • Any services that require volumes should make this requirement known
    • User must enter a name for the stack before clicking "Next"
      • User cannot click "Next" without entering a name
      • Name must be between 0 and 20 characters
  • Options Page
    • If this stack contains optional services, user should be taken to the Options Page
    • This page present the user with optional services for this stack
    • Any services that require other services (dependencies) should make their requirements known.
    • User may choose any optional services before clicking "Next"
  • Configuration Page 
    • If this stack contains overridable configuration options, user should be taken to the Configuration Page
    • This page present the user with Basic and Advanced configuration options
      • Basic options include passwords , IPs and any other fields that do not / can not have a default value set.
      • Advanced options have a sensible default set, but allow the user to override them for customization
    • User must fill out all required fields (i.e. passwords)
    • User may generate any passwords using the button on the right side
  • Volumes Page
    • If this stack contains one or more services that require a Volume, user should be taken to the Volumes Page
    • User should be shown their volume storage quota
    • User should be shown how adding the necessary volumes will affect their storage quota
      • User may choose to reattach an orphaned volume, of they would like to reuse the data on it
      • Orphaned volumes do not affect projected storage quota, since the are already factored into current usage
    • User may not allocate more space than their quota
      • Quota must be >= current usage + projected usage
    • User must enter a name, size, and unit for each new volume before clicking "Next"
      • Name should be defaulted to a sensible default
      • Size should be defaulted to 10 GB
  • Confirmation Page
    • Confirmation Page lists any Services / Volumes that will be added with this operation
    • User can review the total operation before clicking "Confirm"
  • Upon clicking "Confirm" the new stack should appear in the "Stacks" tab of the Content Pane (right-side on desktop, or bottom on mobile)
    • Clicking the stack name (accordion header) will expand the accordion, showing the status of all services within the stack
    • From here, user should see options to:
      • Start / Stop a stack
      • Add / Remove optional services to/from stack
      • View the volumes attached to a stack

Add Service to Stack

  • User should see "Add Service" next to any optional services that have not been added to this stack
  • Clicking "Add Service" should add that service to the stack
  • Any services that the newly-added service requires are automatically added to the stack
  • The new service(s) will be started the with the stack

Remove Service from Stack

  • User should see "Remove Service" next to any optional services that have been added to this stack
    • User cannot delete required dependencies of optional services
    • For example: In the "Clowder" stack, user should not be able to remove "RabbitMQ" without first removing all extractors
  • Clicking "Remove Service" should remove that service from the stack

Start Stack

  • User should be able to start a stopped stack
  • Upon starting a stack, its status should change to "starting"
  • User should see GUI update with altered service statuses as they are received:
    • Expected Order: Stopped -> Waiting -> Starting -> Ready
    • Click the View Logs button allows the user to View Logs of any services that are "Starting" or "Ready"
    • Log Viewer is automatically refreshed, allowing the user to watch the logs in real-time
  • Once all services in the stack are "Ready", the stack has been fully "Started"
    • User is presented with Endpoint Links to any services that offer an interface
    • Upon clicking an endpoint link, user is directed to the web interface offered there

Stop Stack

  • User should be able to stop a started stack
  • Upon stopping a stack, its status should change to "stopping"
  • User should see GUI update with altered service statuses as they are received:
    • Expected Order: Ready -> Stopping -> Stopped
  • Once all services in the stack are "Stopped", the stack has been fully "Stopped"

Delete Stack

  • User should be able to delete a stopped stack
  • Upon removing a stack with no volumes, user should be prompted for a simple Yes / No confirmation
  • Upon removing a stack with one or more volumes, user should be prompted for confirmation
    • User should be given the option to:
      • Retain the data volumes of the stack
        • this should delete ONLY the stack, and leave the volumes in a Detached state
      • Destroy all data from the stack
        • this should delete the volumes along with the stack
  • If the user chooses one of the "Yes" options, the stack is deleted and removed from the GUI
    • If "Destroy all data" option was chosen, the volumes should also be deleted

Delete Volume

  • View the "Volumes" tab of the Content Pane (right-side on desktop or bottom on mobile)
  • User should see a list of all their allocated volumes
  • User should be able to delete a detached volume (orphan)
    • User is prompted for confirmation of this deletion
    • User is warned that this data will be UNRECOVERABLE
  • If the user chooses "Yes", the volume is deleted and removed from the GUI

 

Regression test for NDS-170

  • Configure API Server timeout to 1 minute, restart API server
  • Login to GUI
  • Wait for 3 minutes (GUI minimum refresh time) and you should be redirected to login page after timeout
  • Login to GUI
  • Open wizard
  • Open Dev console
  • Click through wizard, should see "Refreshed token" message in console
  • After 3 minutes, you will not be redirected to login page if there is activity in the wizard

 

 

  • No labels