Challenge Overview

Submission Timeline: 3 Days only!

Challenge Objectives
  • Bug hunts for app Functionalities and layout issues
  • Meteor Javascript application: https://www.meteor.com/
  • Must testing as Native App on Windows 7 and Windows 10

About the Application
Thor PDU Mass Commissioning - Overview
A PDU (Power Distribution Unit) is a device fitted with multiple outputs designed to distribute electric power, especially to racks of computers and networking equipment located within a data center.  The PDU Mass Commissioning tool that we are designing will allow users to create configuration files and networking capabilities for PDUs in a system.  The app will allow for the necessary configuration parameters needed for operation within the system.  Once all of the configuration parameters have been set within the app, users will be able to "export" the files to a USB drive, which will be plugged into the PDUs to be commissioned.

The PDU Mass Commissioning tool will be a simple user interface that allows customers to create all of the necessary configuration files to configure all of their PDUs. The app will have a variable number of input fields for all the configuration parameters in which users will enter their desired configurations. Once they have entered all of the configuration parameters they will click "export" and the application will build the configuration file hierarchy into a chosen USB drive.

About PDU Mass Commissioning App
- PDUs (Power Distribution Units) equipment have several parameters which need to be configured before the first use
- The Mass commissioning application to be developed aims at expediting  the commissioning process in case of large amounts of PDUs to be configured (from 20 to several hundreds of units)
- Targeted audience: industrial users

Basic process flow
- The user defines the value of the configuration parameters he wants to apply to the PDU in the PDU mass deployment Software tool (to be developed during the Topcoder challenge)
- The different parameters are exported to a standard USB key in the form of pre-defined configuration files (the files naming convention and file hierarchy must be respected)
- The user plugs the USB flash drive into the PDU(s) to be commissioned
- The PDU automatically detects the correctly formatted USB flash drive and reconfigures itself with settings found on the USB flash drive

Technology Stack
- Meteor Javascript
- Angular Meteor Integration
- Meteor desktop (https://github.com/wojtkowiak/meteor-desktop)

Deployment environment requirements
IMPORTANT: Your submission need build as desktop native app that will working on these required OS:
- Windows 7
- Windows 10

Challenge Assets
IMPORTANT:
  • Repo access and downloadable assets will be provided after 24hr registration phase. Keep watch our challenge forum!
  • You may only log the issue once Registration phase closed

Thor PDU Mass Commissioning Tool Application Functionalities
General Information

- Current application built as desktop native application using https://www.meteor.com/
- A Meteor application is a mix of JavaScript that runs inside a client web browser, JavaScript that runs on the Meteor server inside a Node.js container, and all the supporting HTML fragments, CSS rules, and static assets.
- Application Material Design Styling on this desktop app. Feel free to suggest any good library as long they are open source.
- Current application need support BASIC vs EXPERT view. You can see complete fields on this file:
- Please check this application Technical documentation https://drive.google.com/open?id=1AB1jeYU0C0EB4ZLxUYIXuL5ktSlV5nZI

Data Model Descriptor
- Application need support data model render before specified JSON Schema file
- All pages, navigation, label, input, logic, rules need taken from JSON Schema file
- Application need detect the structure and then render the application layout/elements/rules etc based on the values.
- This is web reference about Dynamic JSON form to build the application:
https://codeburst.io/reactjs-a-quick-tutorial-to-build-dynamic-json-based-form-a4768b3151c0
http://brutusin.org/json-forms/
- Current Data Model Descriptor placed on our repo: public/Data-model-descriptor.json

1). Welcome
- The welcome screen gives an introduction to the application and gives an overview of the app functionalities.
- Click video need load the modal, you can link with HTML5 video player
- General Settings and After Commissioning need take to the related screens
- Click Help button need load the hidden sidebar
- Need able to expand and collapse the row. Click outside or Help button on the bottom need hide the modal.
- Click Start from existing CSV need able to upload data from CSV file. You can use csv file from our repo: public/Mock-device-data.csv  & public/Mock-device-data-50row.csv
- Use ‘topcodertopcoder’ as password for CSV
- Then you can see data loaded on Asset Management table after click Save Changes button
- Change to different languages need change the language

2). General Settings
Screenshot: 04_general_settings_basic.png
- There’s Expert mode toggle on the top right.
- When expert mode turn on need display hidden fields. You can see complete fields for Basic VS Expert here: https://docs.google.com/spreadsheets/d/1-hRjswJ-_mbxEevogFPnaRZJkKoAvl8EMFieB0CZHRk/edit?usp=sharing
- On this General Settings all values will be stored inside C:\Users\win10\thor-general\general.csv

3). Asset Management
- This is Assets Management page, system
- On the right side display Export Mode toggle.
- All devices need present on all tabs
- If user not select any device, parameters on the right sidebar will applied as generic values to all devices
- If user select the checkboxes, it will apply specific values for those devices
- Apply to selected devices will show up if user select some rows and made some edits.
- Save Changes will save data for Generic changes.
- Saving status for success and error need display on the text before Save Changes button
- There’s the information of latest updated date.
- Devices need displayed total and selected value.
- Add device button placed on top to allow user add new row on the table
- Update the arrow button size on left and right side to follow storyboard
- When sidebar collapsed need make the logo smaller
- The Add device function design updated
- Add cancel button and confirm button on the last column
- Cancel button need cancel add device function
- The last modified feature/field on table looks need implemented when add or edit the table (the date need change when a line is updated)
- Delete feature need able to remove the data
- Table and wizard need updated with a new column each time a new parameter on the right sidebar is edited or configured.
- You can see the blue colored scrollbar on the bottom
- Each time a new parameter on the right sidebar is edited or configured, need add to the filter.
- Checked on/off the fields need show up on the table
- Done button need hide the Show/Hide filter
- Note: after select row and then change the value of Firmware Upgrade on the right sidebar content. Need able to modify the corresponding upgrade.txt text file.     

3).1). System Settings
Screenshot: 06_system settings.png
- System Settings tab displayed by default on this Asset Management page
- Important: Table columns need affected when user change Expert vs Basic Mode
-- Expert mode:  Rack/Row/MAC/SerialNumber/PDU Type/IP address
-- Basic mode: Rack/Row/MAC/SerialNumber/IP
- The PDU type information will be used in the expert mode to select only the relevant parameters that we want to be available to the user
- System settings need display devices table with somes predefined rows based on configuration
- Need able to scrolling the content area
- Need able to filter from input on top and return table data
- Click Add Device button need add new row on top
- Each cell need to be editable with inline text-input
- Click 3 dots on the row need display Edit and Delete button
- Notice click 3 dots on the table header need load modal window that allow user display that column on table
- When user change parameter on the right sidebar need add the updated column on Hide/Show Columns Modal Window

3).2). Network Infrastructure
- This is Network Infrastructure tab
- Notice the layout changes when expand/collapse the sidebar to show up the device table. Follow storyboard structure
- User can change each devices network infrastructure
- Need able to expand the and collapse by click the + or - button

3).3). Protocols
- This is the expanded right sidebar look for Protocol tab

3).4). Power / Environment
- This is the expanded right sidebar look for Power/Environment tab
- This is Basic mode look
- Match fields based on storyboard.

4). Export
- Export page will be the area to export the configuration files based on what the user filled out in Asset management page
- When the user plugs in a USB drive, there should be some type of indication showing that that either the USB is ok or an error message showing that it is not properly formatted
- Shows a list of the PDUs being configured and commissioned
- Create some expandable by click the + or - buttons
- Show same table format for each row
- Export only create folder and xml files structure based on fields updated on the Asset Management page
- This is the exported Folder Hierarchy on USB drive:
  • /eNMC/massConfig/ // Folder dedicated to the Mass commissioning
    • Log.csv // MANAGED BY PDU: Appended by each PDU during the commissioning concerning the matching between the PDU to upgrade with the USB folders
      • MAC_{MAC address 1}/ // we could decide to use the serialNumber as folder or Mac address or both ?
        • ConfigurationData.xml // Optional: To apply for commissioning)
        • ConfigurationPDU.xml // Optional: To apply for commissioning)
        • ConfigurationPrivateData.xml // Optional: To apply for commissioning)
        • Upgrade.txt // Optional: Contains the name of the firmware upgrade image: Image_ePDUG3_FW_03_00_0001.bin
        • old/   // Folder will be filled by ePDU to save the old (before the commissioning)  configuration backup and log of commissioning
          • ConfigurationData_{TIMESTAMP}.xml.old // MANAGED BY PDU: Optional
          • ConfigurationPDU_{TIMESTAMP}.xml.old // MANAGED BY PDU: Optional
          • ConfigurationPrivateData_{TIMESTAMP}.xml.old // MANAGED BY PDU: Optional
          • ConfigurationData_{TIMESTAMP}.xml //
          • ConfigurationPDU_{TIMESTAMP}.xml //
          • ConfigurationPrivateData_{TIMESTAMP}.xml //
          • Log_{TIMESTAMP}.csv // MANAGED BY PDU: Log saved by the PDU during the commissioning concerning the upgrade using the files including in this main folder
          • Identification.xml // MANAGED BY PDU:
      • SN_{SerialNumber 2}/
        • ConfigurationData.xml
        • ConfigurationPDU.xml
        • ConfigurationPrivateData.xml
        • Upgrade.txt
        • old/
          • ConfigurationData_{TIMESTAMP}.xml
          • ConfigurationPDU_{TIMESTAMP}.xml
          • ConfigurationPrivateData_{TIMESTAMP}.xml
          • Log_{TIMESTAMP}.csv
      • upgrade/
        • Image_ePDUG3_FW_03_00_0001.bin
        • Image_ePDUG3_FW_02_00_0054.bin

Technical Specification Requirements

a). Data Validation
- Before exporting the files, the app performs some basic consistency checks to detect potential errors on this data validation:
- The same PDU SN and/or MAC address cannot have different configuration settings but the same IP can be used on different PDUs in case of separated networks (however, the same IP configured on different PDUs should rise some warning)
- The app is able to detect any error in the field format or type (Check whether the IPv4 or IPv6 field is correct)
- a MAC address should be XX:XX:XX:XX:XX where X is a character, etc…
- After validation, user can change the value on Asset Management page
- We no need display dummy lorem ipsum text. Need able to capture actual data

b). Hardware Security Key
At least one device has never been configured
- This option if at least one device has never been configured.
- User need set new key and confirm new key

All my device have already been configured
- This option if all devices have been configured.
- This option allow user to set current key and confirm current key
- Also need allow to change to new key and confirm new key

I wish to opt out
- Selecting this option need use existing Authentication

IMPORTANT NOTES:
- Need able to click section title area to go back to the previous screen (for instance moving back from the Hardware security key screen to the Data Validation screen)
- Only the parameters which differs from the data model (ie explicitly modified by the app) , only THOSE changed should be exported and rest of the fields that is not changed MUST not be in the exported XML.

c). Select the USB
Screenshot: 11 Export Steps – 3@2x.png
- When export to USB, formatting the USB need remove the old content.
- There is problem before when there are duplicate folder after user export data
- Need use export and path data model. For example:
"export":
{
"file": "ConfigurationData",
"path": "System.Ethernet.MacAddress"
}
- This file path ("file": "ConfigurationData", "file": "ConfigurationPDU", "file": "ConfigurationPrivate",) will be used to saved to correct 3 xml files of each Mac Address when user Export to USB.
- Check the the old reference of Data Model Descriptor: https://drive.google.com/open?id=1Zal3qOhWXpgBoZZjd_8lxbr5PrcOOq_p

5). After Commissioning
- All rows should not be editable on this page
- Create different status color for emergency, info, notice and warning based on storyboard
- Need able to restore the old config
- Click Delete button need load the confirmation modal window
- Make sure all parameters captured when expand the right sidebar
- After commissioning we will interpret the generated log.csv file by the PDU and this log file will include the status code whether the commissioning went fine or went bad etc and after commissioning in the app will capture this status from the log file and display just the status code and description.
- Refer the log.csv placement as mentioned on folder hierarchy above
- The PDU is reporting codes in the log.csv file which is at the root of the folder hierarchy (please refer to the files description). Here is the code description:
Priority handling
Value  Severity        Keyword       Mass commissioning Thor (SW) display
0        Emergency    emerg          Error (Red)
1        Alert             alert             Error (Red)
2        Critical          crit               Error (Red)
3        Error             err               Error (Red)
4        Warning        warning         Warning (Orange)
5        Notice           notice           Good (Green)
6        Informational info              Good (Green)
7        Debug debug Not shown
- Here is an example of Log.csv file: https://drive.google.com/file/d/1XH7adQPnloeMOCi0Ve2YQZL0PaK-M_jf/view

6). Application Encryption
- Encryption/Signature methods details can be found in below specification document:
https://drive.google.com/file/d/1mC0Gb3-ZE71kCUBIhhLKDiQyQsj23xPT/view?usp=sharing
- Check and make sure encryption follow client specification

What to Test (Scope)
In this challenge, we need to find any performances/functionalities/layout issues of the application across required browsers
  • Primary target device(s): Desktop Native App
  • OS Requirements
    • Windows 7
    • Windows 10
  • Bugs are IN SCOPE:
    • Functionalities,
    • Layout
  • Bugs are OUT OF SCOPE:
    • Spelling and Grammar,
    • Text spacing issues inside a paragraph,
    • Tooltips,
    • Missing/Broken Images
    • Font mismatch,
    • Broken links
    • Also other minor UI, Usability, Content issues, Tooltip, Broken Link issues that are not affecting to the core functionality of the application are likely to be REJECTED.
    • DON'T test the functions in the Login menu and also functionality of the login and registration. They are out of scope.
    • An edge case would be anything that does not reflect typical user behavior. They are accepted accordance to the impact to the end-user and based on the workarounds available.

How to Create New Bug Report
  1. Create an account on GitLab (if you do not already have one): https://gitlab.com
  2. You can get access to the GitLab repo using ‘Ragnar’ tool specified in the challenge forum thread to create new bugs OR If you are still getting 404 error, request access to the repo using correct forum thread.
  3.  There is an issue template whenever you click New Issue in GitLab. Please use these template to report your issues.
  4. Issues/Bugs found in this application/App must create here: (URL for creating Bugs) https://gitlab.com/thor-pducomm/meteor-app/issues DON'T use any other link to create new issues OR submit a document, they won't be counted and won't be paid.
  5. Please label issues with the appropriate OS type, bug type, and platform type. The labels can be viewed here: https://gitlab.com/thor-pducomm/meteor-app/labels

Issue Reporting Guidelines
  • For each report of a limitation or bug, we need the following information:
  • Steps to reproduce, including any needed information (Must list all the steps that need to reproduce the bug, DON'T list only the URL without test data)
  • Current results before the bug is fixed
  • Expected results, after the bug, is fixed
  • If it is a UI bug attach a Screenshots (Mark the area where the bug is) | Functional Bug - Videos (You can attach videos directly on GitLab, if not use services like www.screencast.com Don’t use www.youtube.com to host the videos) | Crash - Console/Crash Logs.
  • Attach the high-level labels. If you are selecting multiple labels (Platform/Device); You have to provide screenshots for each and every Device/Platform you have selected; If not Bug will be REJECTED. [Eg: If you select labels Browser: Safari, Chrome, Firefox, etc you have to provide screenshots of all the device types you have selected]. Same applies to Platform
  • Attach detailed version, operating system (Window 7 64 bit), Frequency in the issue detail. The high-level labels aren’t sufficient for issue replication and diagnosis.  
  • If it is a comparison, you must provide the URL and Screenshot/video of that location.

IMPORTANT NOTE:
Missing or Incorrect details to ANY of the above fields will mark the bug report as INCOMPLETE.
For example, Incorrect Steps, Missing Screenshot/Screencast (If it is a UI issue, you have to mark it on the screenshot), Incorrect Actual and Expected results etc.

Be careful when you are providing only the direct URL and not listing the steps to go to that particular page in 'Steps to reproduce' section. Sometimes the Provided URL with parameters won't load the page to the reviewer and the bug may be get closed as 'CAN'T REPRODUCE'. So better to list all the steps till the end or double check the URL is loading or not

Issue Weights and Scoring
  • Scoring will be based on the number of bugs by weight.  Be sure to correctly attach a weight to your bug.  The delivery team has the right to change a severity at their discretion.
  • Only verified issues will be counted.  Tickets created for enhancements or that are not bugs will not be counted. Duplicate issues will be closed and not counted. Log issues according to the guidelines above issues that do not follow these guidelines may reject due to lack of information.
  • For challenge scoring, the user with the most verified issues will be selected as the winner. If two users submit the same issue, the user that submitted the issue first will receive credit.
  • Please focus on functionality/UI testing based on the requirements, all bug reports based on your own assumptions will be rejected.
  • Functionalities Issues - 5 Points
  • Layout Issues - 2 Point
  • Prizes:
    • 1st Place: $500
    • 2nd Place: $300
    • 3rd Place: $200
  • Submitters that do not take 1st, 2nd or 3rd place will be paid $5 for each non-duplicate and verified issue up to a maximum of the 3rd place prize.

Important Notice
  • Follow the standard Topcoder Bug Hunt Rules
  • If you do not properly document your bug reports, they will likely be rejected due to lack of information or documentation. If you submit the same bug in multiple areas/pages, (for instance, Same validation issue of a form can be found in different pages/sections) you will likely get credit for the original bug report only. The others will all be closed as duplicates.
  • If you duplicate an issue on a platform or browser that hasn’t been tested yet, you should create a new issue and add a link/reference in the issue description to the existing issue number. Our copilot will review these items and consolidate them later. Please don’t make adjustments or change labels of existing issues logged by other competitors.
  • DON'T RE-OPEN the issues in the review phase and anyone who RE-OPENS a ticket will be disqualified from the challenge.
  • If you see multiple broken links on the same page combine them into one ticket. Others will be marked as DUPLICATE.
  • You must not edit the bug report once created, so make sure you enter all the details at the time you create the issue, otherwise, your issue will be moved to the end of the queue. If you really need to edit an issue you must use the comments section for this (i.e. add a comment to describe any changes you want to make to the issue), and we'll decide whether the changes are major enough to move the issue to the end of the queue. You are allowed to add screen shots in the comments section though, assuming your issue report contains all the details when created.
  • You must specify the test data you have used in the 'Reproduction Steps', All the issues will be marked as 'Incomplete', if the correct test data is not provided.
  • Keep an eye on the issues being submitted by other participants to minimize the time you may be spending on duplicate efforts. Knowing what has already been reported will allow you to better focus your time on finding yet undiscovered issues.
  • There will be no appeals phase. The decision of PM/Copilot for validity and severity of each filled issue will be final.


Final Submission Guidelines

Final Deliverables
Submit all your bugs directly to GitLab. When you are done with your submissions please submit a .txt file to Topcoder Online Review using the Submit to this Challenge button BEFORE the Submission phase ends. In this file include:
  • Your name
  • topcoder handle (The one displayed in the top right corner near the Profile picture)
  • GitLab handle used to raise the issues. (Login to Gitlab and click on the Profile picture > Your Profile. Check the URL https://gitlab.com/[Your Username]
- ALL THE SUBMISSIONS WITHOUT ABOVE INFORMATION WILL BE REJECTED AND WONT BE PAID.
- IMPORTANT: Submit the above details before the Submission Phase ends. If you can't submit due to technical difficulties within the Submission Phase please email your submission with above details to support@topcoder.com
- Participants who haven't submitted will not be paid
- DON'T use any other link to create new issues OR submit as document, they won't count and won't be paid.
 

ELIGIBLE EVENTS:

Topcoder Open 2019

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30084648