Summary:
        This test suite consists of generic NETCONF protocol testing within ONOS
        using OF-Config to translate NETCONF requests for OVSDB.
        The following is an overview of how the NETCONF protocol is tested
        Steps:
            - Start NETCONF App in all currently running nodes
            - Start OF-Config server on device to be configured
            - Create configuration file
            - Upload the configuration file to the device to be configured
            - Verify that the device was configured successfully

Required:
        Make sure that OF-Config, https://github.com/openvswitch/of-config, is
        installed on the device that is to be configured, the test assumes this
        device is the machine running TestON.
        Ensure that <cfgName> and <cfgPass> in the params file are the username
        and password required to ssh into the desired machine and account that
        of-config is to be run on.
        The netconfConfig.json file contains the configuration that was
        generated by the test.  The test also relies on the existence of this
        file and will missbehave if it is removed entirely.  The contents of the
        file are overwritten everytime the test suite runs through Test Case 200

TODO:
Extend configuration to allow for specification of
    - Vendor name
    - Hardware version
    - Software version
    - Serial Number