edu.internet2.ndt

## Class Tcpbw100

- java.lang.Object
- - com.vuze.plugins.mlab.tools.ndt.swingemu.Component
  - - com.vuze.plugins.mlab.tools.ndt.swingemu.JFrame
    - - com.vuze.plugins.mlab.tools.ndt.swingemu.JApplet
      - - edu.internet2.ndt.Tcpbw100

- All Implemented Interfaces:
    ActionListener

      public class Tcpbw100
      extends JApplet
      implements ActionListener

  Main Applet class that creates UI, defines tests and interprets results from the tests.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `(package private) class` | `Tcpbw100.TestWorker` Class to start tests in a thread.

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `(package private) boolean` | `_bFailed`
    `(package private) boolean` | `_bIsApplication`
    `(package private) JButton` | `_buttonDetails`
    `(package private) JButton` | `_buttonStartTest`
    `(package private) JButton` | `_buttonStatistics`
    `(package private) int` | `_c2sspdUpdateTime`
    `(package private) JCheckBox` | `_chkboxDefaultTest`
    `(package private) JCheckBox` | `_chkboxPreferIPv6`
    `(package private) double` | `_dC2sspd`
    `(package private) double` | `_dS2cspd`
    `(package private) double` | `_dSbytes`
    `(package private) double` | `_dSc2sspd`
    `(package private) double` | `_dSs2cspd`
    `(package private) double` | `_dTime`
    `(package private) NewFrame` | `_frameDetailedStats`
    `(package private) NewFrame` | `_frameOptions`
    `(package private) NewFrame` | `_frameWeb100Vars`
    `(package private) int` | `_iAckPktsIn`
    `(package private) int` | `_iAckPktsOut`
    `(package private) int` | `_iC2sAck`
    `(package private) int` | `_iC2sData`
    `(package private) int` | `_iC2sSFWResult`
    `(package private) int` | `_iCongestionSignals`
    `(package private) int` | `_iCountRTT`
    `(package private) int` | `_iCurrentCwnd`
    `(package private) int` | `_iCurrentMSS`
    `(package private) int` | `_iCurrentRTO`
    `(package private) long` | `_iDataBytesOut`
    `(package private) int` | `_iDataPktsOut`
    `(package private) int` | `_iDupAcksIn`
    `(package private) int` | `_iECNEnabled`
    `(package private) int` | `_iFastRetran`
    `(package private) int` | `_iLength`
    `(package private) int` | `_iMaxCwnd`
    `(package private) int` | `_iMaxRwinRcvd`
    `(package private) int` | `_iMaxRwinSent`
    `(package private) int` | `_iMaxSsthresh`
    `(package private) int` | `_iNagleEnabled`
    `(package private) int` | `_iPkts`
    `(package private) int` | `_iPktsOut`
    `(package private) int` | `_iPktsRetrans`
    `(package private) int` | `_iRcvbuf`
    `(package private) int` | `_iRcvWinScale`
    `(package private) int` | `_iS2cAck`
    `(package private) int` | `_iS2cData`
    `(package private) int` | `_iS2cSFWResult`
    `(package private) int` | `_iSACKEnabled`
    `(package private) int` | `_iSACKsRcvd`
    `(package private) int` | `_iSmoothedRTT`
    `(package private) int` | `_iSndbuf`
    `(package private) int` | `_iSndLimTimeCwnd`
    `(package private) int` | `_iSndLimTimeRwin`
    `(package private) int` | `_iSndLimTimeSender`
    `(package private) int` | `_iSndLimTransCwnd`
    `(package private) int` | `_iSndLimTransRwin`
    `(package private) int` | `_iSndLimTransSender`
    `(package private) int` | `_iSsndqueue`
    `(package private) int` | `_iSumRTT`
    `(package private) int` | `_iTimeouts`
    `(package private) int` | `_iTimestampsEnabled`
    `(package private) int` | `_iWinScaleRcvd`
    `(package private) int` | `_iWinScaleSent`
    `(package private) ResultsTextPane` | `_resultsTxtPane`
    `(package private) int` | `_s2cspdUpdateTime`
    `(package private) String[]` | `_saDelays`
    `(package private) String` | `_sErrMsg`
    `(package private) String` | `_sMidBoxTestResult`
    `(package private) JSpinner` | `_spinnerTestCount`
    `(package private) String` | `_sServerType`
    `(package private) String` | `_sTestResults`
    `(package private) JTextArea` | `_txtDiagnosis`
    `(package private) JTextArea` | `_txtStatistics`
    `(package private) byte[]` | `_yabuff2Write`
    `(package private) byte` | `_yTests`
    `(package private) double` | `aspd`
    `(package private) double` | `avgrtt`
    `(package private) int` | `bad_cable`
    `(package private) int` | `congestion`
    `(package private) double` | `cwin`
    `(package private) double` | `cwndtime`
    `(package private) double` | `estimate`
    `(package private) int` | `half_duplex`
    `(package private) InetAddress` | `hostAddress`
    `(package private) double` | `loss`
    `(package private) int` | `mismatch`
    `(package private) int` | `MSSRcvd`
    `(package private) int` | `MSSSent`
    `(package private) double` | `mylink`
    `(package private) double` | `order`
    `(package private) double` | `rttsec`
    `(package private) double` | `rwin`
    `(package private) double` | `rwintime`
    `(package private) double` | `sendtime`
    `(package private) String` | `sHostName`
    `(package private) double` | `spd`
    `(package private) double` | `swin`
    `(package private) double` | `timesec`
    `(package private) double` | `waitsec`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Tcpbw100(boolean useSSL)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `actionPerformed(ActionEvent paramEventObj)` Action handler method called when an associated action is performed
    `void` | `createDiagnoseWindow()` Create the "More details" window.
    `void` | `createOptionsWindow()`
    `void` | `createStatsWindow()` Create the "Statistics" window.
    `void` | `dottcp(StatusPanel sPanel)` Method to run tests and interpret the results sent by the server
    `String` | `get_AccessTech()`
    `String` | `get_avgrtt()`
    `String` | `get_Bad_cable()`
    `String` | `get_c2sspd()`
    `String` | `get_clientIP()`
    `String` | `get_congestion()`
    `String` | `get_CurRTO()`
    `String` | `get_CurRwinRcvd()`
    `String` | `get_cwndtime()`
    `String` | `get_diagnosis()`
    `String` | `get_DupAcksIn()`
    `String` | `get_DupAcksOut()`
    `String` | `get_errmsg()`
    `String` | `get_host()`
    `String` | `get_instSpeed()`
    `String` | `get_jitter()`
    `String` | `get_loss()`
    `String` | `get_MaxRTT()`
    `String` | `get_MaxRwinRcvd()`
    `String` | `get_mismatch()`
    `String` | `get_natStatus()`
    `String` | `get_optimalRcvrBuffer()`
    `String` | `get_osArch()`
    `String` | `get_osName()`
    `String` | `get_osVer()`
    `String` | `get_PcBuffSpdLimit()`
    `String` | `get_Ping()`
    `String` | `get_pluginVer()`
    `String` | `get_rcvrLimiting()`
    `String` | `get_s2cspd()`
    `String` | `get_SACKsRcvd()`
    `String` | `get_statistics()`
    `String` | `get_status()`
    `String` | `get_TimeStamp()`
    `String` | `get_WaitSec()`
    `int` | `getC2sSFWTestResults()` Get Client->Server fire-wall test results.
    `String` | `getNDTvar(String varName)` Function that returns a variable corresponding to the parameter passed to it as a request.
    `String` | `getParameter(String paramStrName)` Utility method to get parameter value.
    `int` | `getS2cSFWTestResults()` Get Server->Client fire-wall test results.
    `String` | `getStatus()` I2P Translated status, not HTML escaped.
    `String` | `getUserAgent()` Set UserAgent String containing browser details.
    `void` | `init()` Initialize the base NDT window Applet init() method
    `boolean` | `isTestInProgress()`
    `void` | `killIt()` bigly -- must have been started with main() or runIt()
    `static void` | `main(String[] args)` public static void main for invoking as an Application
    `static Tcpbw100` | `mainSupport(String[] args)` bigly
    `void` | `run_test()` "Remote Control" function - invoke NDT' runtest() method from the API
    `void` | `runIt()` bigly
    `void` | `runtest()` Run the Thread that calls the "dottcp" method to run tests.
    `void` | `save_dbl_values(String sSysvarParam, double dSysvalParam)` Method to save double values of various "keys" from the the test results string into corresponding double datatypes.
    `void` | `save_int_values(String sSysvarParam, int iSysvalParam)` Method to save integer values of various "keys" from the the test results string into corresponding integer datatypes.
    `void` | `save_long_values(String sSysvarParam, long lSysvalParam)` Method to save long values of various "keys" from the the test results string into corresponding long datatypes.
    `void` | `setC2sSFWTestResults(int iParamC2SRes)` Set Client->Server fire-wall test results.
    `void` | `setS2cSFWTestResults(int iParamS2CRes)` Set server->Client fire-wall test results.
    `void` | `setUserAgent(String paramStrUserAgent)` Set UserAgent String.
    `void` | `showBufferedBytesInfo()` Pop up a window to display some information about TCP packet queuing.
    `void` | `showStatus(String msg)` Display current status in Applet window.
    `boolean` | `test_c2s(Protocol paramProtoObj)` Client to server throughput test.
    `boolean` | `test_meta(Protocol paramProtoObj, String application)` The META test allows the Client to send an additional information to the Server that basically gets included along with the overall set of test results.
    `boolean` | `test_mid(Protocol paramProtoObj)`
    `boolean` | `test_s2c(Protocol paramProtoObj, Socket paramSocketObj)` S2C throughput test to measure network bandwidth from server to client.
    `boolean` | `test_sfw(Protocol protocolObj)`
    `void` | `testResults(String sTestResParam)` Method that interprets test results.

    - ### Methods inherited from class com.vuze.plugins.mlab.tools.ndt.swingemu.JApplet

      `getAppletContext, getCodeBase, start`

    - ### Methods inherited from class com.vuze.plugins.mlab.tools.ndt.swingemu.JFrame

      `destroy, dispose, getContentPane, toBack`

    - ### Methods inherited from class com.vuze.plugins.mlab.tools.ndt.swingemu.Component

      `add, add, add, addMouseListener, addWindowListener, getToolkit, pack, repaint, setBorder, setCursor, setEditable, setEnabled, setForeground, setLayout, setLayout, setPreferredSize, setResizable, setSize, setTitle, setVisible`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### _bFailed

          boolean _bFailed

    - #### _bIsApplication

          boolean _bIsApplication

    - #### _buttonDetails

          JButton _buttonDetails

    - #### _buttonStartTest

          JButton _buttonStartTest

    - #### _buttonStatistics

          JButton _buttonStatistics

    - #### _c2sspdUpdateTime

          int _c2sspdUpdateTime

    - #### _chkboxDefaultTest

          JCheckBox _chkboxDefaultTest

    - #### _chkboxPreferIPv6

          JCheckBox _chkboxPreferIPv6

    - #### _dC2sspd

          double _dC2sspd

    - #### _dS2cspd

          double _dS2cspd

    - #### _dSbytes

          double _dSbytes

    - #### _dSc2sspd

          double _dSc2sspd

    - #### _dSs2cspd

          double _dSs2cspd

    - #### _dTime

          double _dTime

    - #### _frameDetailedStats

          NewFrame _frameDetailedStats

    - #### _frameOptions

          NewFrame _frameOptions

    - #### _frameWeb100Vars

          NewFrame _frameWeb100Vars

    - #### _iAckPktsIn

          int _iAckPktsIn

    - #### _iAckPktsOut

          int _iAckPktsOut

    - #### _iC2sAck

          int _iC2sAck

    - #### _iC2sData

          int _iC2sData

    - #### _iC2sSFWResult

          int _iC2sSFWResult

    - #### _iCongestionSignals

          int _iCongestionSignals

    - #### _iCountRTT

          int _iCountRTT

    - #### _iCurrentCwnd

          int _iCurrentCwnd

    - #### _iCurrentMSS

          int _iCurrentMSS

    - #### _iCurrentRTO

          int _iCurrentRTO

    - #### _iDataBytesOut

          long _iDataBytesOut

    - #### _iDataPktsOut

          int _iDataPktsOut

    - #### _iDupAcksIn

          int _iDupAcksIn

    - #### _iECNEnabled

          int _iECNEnabled

    - #### _iFastRetran

          int _iFastRetran

    - #### _iLength

          int _iLength

    - #### _iMaxCwnd

          int _iMaxCwnd

    - #### _iMaxRwinRcvd

          int _iMaxRwinRcvd

    - #### _iMaxRwinSent

          int _iMaxRwinSent

    - #### _iMaxSsthresh

          int _iMaxSsthresh

    - #### _iNagleEnabled

          int _iNagleEnabled

    - #### _iPkts

          int _iPkts

    - #### _iPktsOut

          int _iPktsOut

    - #### _iPktsRetrans

          int _iPktsRetrans

    - #### _iRcvbuf

          int _iRcvbuf

    - #### _iRcvWinScale

          int _iRcvWinScale

    - #### _iS2cAck

          int _iS2cAck

    - #### _iS2cData

          int _iS2cData

    - #### _iS2cSFWResult

          int _iS2cSFWResult

    - #### _iSACKEnabled

          int _iSACKEnabled

    - #### _iSACKsRcvd

          int _iSACKsRcvd

    - #### _iSmoothedRTT

          int _iSmoothedRTT

    - #### _iSndbuf

          int _iSndbuf

    - #### _iSndLimTimeCwnd

          int _iSndLimTimeCwnd

    - #### _iSndLimTimeRwin

          int _iSndLimTimeRwin

    - #### _iSndLimTimeSender

          int _iSndLimTimeSender

    - #### _iSndLimTransCwnd

          int _iSndLimTransCwnd

    - #### _iSndLimTransRwin

          int _iSndLimTransRwin

    - #### _iSndLimTransSender

          int _iSndLimTransSender

    - #### _iSsndqueue

          int _iSsndqueue

    - #### _iSumRTT

          int _iSumRTT

    - #### _iTimeouts

          int _iTimeouts

    - #### _iTimestampsEnabled

          int _iTimestampsEnabled

    - #### _iWinScaleRcvd

          int _iWinScaleRcvd

    - #### _iWinScaleSent

          int _iWinScaleSent

    - #### _resultsTxtPane

          ResultsTextPane _resultsTxtPane

    - #### _s2cspdUpdateTime

          int _s2cspdUpdateTime

    - #### _saDelays

          String[] _saDelays

    - #### _sErrMsg

          String _sErrMsg

    - #### _sMidBoxTestResult

          String _sMidBoxTestResult

    - #### _spinnerTestCount

          JSpinner _spinnerTestCount

    - #### _sServerType

          String _sServerType

    - #### _sTestResults

          String _sTestResults

    - #### _txtDiagnosis

          JTextArea _txtDiagnosis

    - #### _txtStatistics

          JTextArea _txtStatistics

    - #### _yabuff2Write

          byte[] _yabuff2Write

    - #### _yTests

          byte _yTests

    - #### aspd

          double aspd

    - #### avgrtt

          double avgrtt

    - #### bad_cable

          int bad_cable

    - #### congestion

          int congestion

    - #### cwin

          double cwin

    - #### cwndtime

          double cwndtime

    - #### estimate

          double estimate

    - #### half_duplex

          int half_duplex

    - #### hostAddress

          InetAddress hostAddress

    - #### loss

          double loss

    - #### mismatch

          int mismatch

    - #### MSSRcvd

          int MSSRcvd

    - #### MSSSent

          int MSSSent

    - #### mylink

          double mylink

    - #### order

          double order

    - #### rttsec

          double rttsec

    - #### rwin

          double rwin

    - #### rwintime

          double rwintime

    - #### sendtime

          double sendtime

    - #### sHostName

          String sHostName

    - #### spd

          double spd

    - #### swin

          double swin

    - #### timesec

          double timesec

    - #### waitsec

          double waitsec

  - ### Constructor Detail

    - #### Tcpbw100

          public Tcpbw100(boolean useSSL)

  - ### Method Detail

    - #### actionPerformed

          public void actionPerformed(ActionEvent paramEventObj)

      Action handler method called when an associated action is performed
      Parameters:
        `paramEventObj` - Event object that prompted the call

    - #### createDiagnoseWindow

          public void createDiagnoseWindow()

      Create the "More details" window.

    - #### createOptionsWindow

          public void createOptionsWindow()

    - #### createStatsWindow

          public void createStatsWindow()

      Create the "Statistics" window.

    - #### dottcp

          public void dottcp(StatusPanel sPanel)
                      throws IOException

      Method to run tests and interpret the results sent by the server
      Parameters:
        `sPanel` - StatusPanel object to describe status of tests
      Throws:
        `IOException` - When sending/receiving messages from server fails
      See Also:
        `Protocol.recv_msg(Message msgParam)`, `Protocol.send_json_msg(byte bParamType, byte[] baParamTab)`

    - #### get_AccessTech

          public String get_AccessTech()

    - #### get_avgrtt

          public String get_avgrtt()

    - #### get_Bad_cable

          public String get_Bad_cable()

    - #### get_c2sspd

          public String get_c2sspd()

    - #### get_clientIP

          public String get_clientIP()

    - #### get_congestion

          public String get_congestion()

    - #### get_CurRTO

          public String get_CurRTO()

    - #### get_CurRwinRcvd

          public String get_CurRwinRcvd()

    - #### get_cwndtime

          public String get_cwndtime()

    - #### get_diagnosis

          public String get_diagnosis()

    - #### get_DupAcksIn

          public String get_DupAcksIn()

    - #### get_DupAcksOut

          public String get_DupAcksOut()

    - #### get_errmsg

          public String get_errmsg()

    - #### get_host

          public String get_host()

    - #### get_instSpeed

          public String get_instSpeed()

    - #### get_jitter

          public String get_jitter()

    - #### get_loss

          public String get_loss()

    - #### get_MaxRTT

          public String get_MaxRTT()

    - #### get_MaxRwinRcvd

          public String get_MaxRwinRcvd()

    - #### get_mismatch

          public String get_mismatch()

    - #### get_natStatus

          public String get_natStatus()

    - #### get_optimalRcvrBuffer

          public String get_optimalRcvrBuffer()

    - #### get_osArch

          public String get_osArch()

    - #### get_osName

          public String get_osName()

    - #### get_osVer

          public String get_osVer()

    - #### get_PcBuffSpdLimit

          public String get_PcBuffSpdLimit()

    - #### get_Ping

          public String get_Ping()

    - #### get_pluginVer

          public String get_pluginVer()

    - #### get_rcvrLimiting

          public String get_rcvrLimiting()

    - #### get_s2cspd

          public String get_s2cspd()

    - #### get_SACKsRcvd

          public String get_SACKsRcvd()

    - #### get_statistics

          public String get_statistics()

    - #### get_status

          public String get_status()

    - #### get_TimeStamp

          public String get_TimeStamp()

    - #### get_WaitSec

          public String get_WaitSec()

    - #### getC2sSFWTestResults

          public int getC2sSFWTestResults()

      Get Client->Server fire-wall test results.
      Returns:
        integer indicating C->S test results

    - #### getNDTvar

          public String getNDTvar(String varName)

      Function that returns a variable corresponding to the parameter passed to it as a request.
      Parameters:
        `varName` - {String} The parameter which the caller is seeking.
      Returns:
        {String} The value of the desired parameter.

    - #### getParameter

          public String getParameter(String paramStrName)

      Utility method to get parameter value.
      Overrides:
        `getParameter` in class `JApplet`
      Parameters:
        `paramStrName` - Key String whose value has to be found
      Returns:
        String Value of key requested for

    - #### getS2cSFWTestResults

          public int getS2cSFWTestResults()

      Get Server->Client fire-wall test results.
      Returns:
        integer indicating C->S test results

    - #### getStatus

          public String getStatus()

      I2P Translated status, not HTML escaped.

    - #### getUserAgent

          public String getUserAgent()

      Set UserAgent String containing browser details.
      Returns:
        String UserAgent details set locally
      See Also:
        `UserAgentTools`

    - #### init

          public void init()

      Initialize the base NDT window Applet init() method

    - #### isTestInProgress

          public boolean isTestInProgress()

    - #### killIt

          public void killIt()

      bigly -- must have been started with main() or runIt()

    - #### main

          public static void main(String[] args)

      public static void main for invoking as an Application
      Parameters:
        `args` - String array of command line arguments
      Throws:
        `IllegalArgumentException` - on bad hostname

    - #### mainSupport

          public static Tcpbw100 mainSupport(String[] args)

      bigly
      Throws:
        `IllegalArgumentException` - on bad hostname

    - #### run_test

          public void run_test()

      "Remote Control" function - invoke NDT' runtest() method from the API

    - #### runIt

          public void runIt()

      bigly

    - #### runtest

          public void runtest()

      Run the Thread that calls the "dottcp" method to run tests. This method is called by the Applet's init method if user selected an "autorun" option, is run individually if user presses the "start button", or, is internally invoked by the API call.

    - #### save_dbl_values

          public void save_dbl_values(String sSysvarParam,
                                      double dSysvalParam)

      Method to save double values of various "keys" from the the test results string into corresponding double datatypes.
      Parameters:
        `sSysvarParam` - key name string
        `dSysvalParam` - Value for this key name

    - #### save_int_values

          public void save_int_values(String sSysvarParam,
                                      int iSysvalParam)

      Method to save integer values of various "keys" from the the test results string into corresponding integer datatypes.
      Parameters:
        `sSysvarParam` - String key name
        `iSysvalParam` - Value for this key name

    - #### save_long_values

          public void save_long_values(String sSysvarParam,
                                       long lSysvalParam)

      Method to save long values of various "keys" from the the test results string into corresponding long datatypes.
      Parameters:
        `sSysvarParam` - key name string
        `lSysvalParam` - Value for this key name

    - #### setC2sSFWTestResults

          public void setC2sSFWTestResults(int iParamC2SRes)

      Set Client->Server fire-wall test results.
      Parameters:
        `iParamC2SRes` - integer indicating C->S test results

    - #### setS2cSFWTestResults

          public void setS2cSFWTestResults(int iParamS2CRes)

      Set server->Client fire-wall test results.
      Parameters:
        `iParamS2CRes` - integer indicating C->S test results

    - #### setUserAgent

          public void setUserAgent(String paramStrUserAgent)

      Set UserAgent String.
      Parameters:
        `paramStrUserAgent` - UserAgent String to be set locally
      See Also:
        `UserAgentTools`

    - #### showBufferedBytesInfo

          public void showBufferedBytesInfo()

      Pop up a window to display some information about TCP packet queuing.

    - #### showStatus

          public void showStatus(String msg)

      Display current status in Applet window.
      Overrides:
        `showStatus` in class `JApplet`
      Parameters:
        `msg` - String value of status

    - #### test_c2s

          public boolean test_c2s(Protocol paramProtoObj)
                           throws IOException

      Client to server throughput test. This test performs 10 seconds memory-to-memory data transfer to test achievable network bandwidth.
      Parameters:
        `paramProtoObj` - Protocol Object used to exchange messages
      Returns:
        boolean, true if test was not completed, false if test was completed.
      Throws:
        `IOException` - when sending/receiving messages from server fails
      See Also:
        `Protocol.recv_msg(Message msgParam)`, `Protocol.send_json_msg(byte bParamType, byte[] baParamTab)`

    - #### test_meta

          public boolean test_meta(Protocol paramProtoObj,
                                   String application)
                            throws IOException

      The META test allows the Client to send an additional information to the Server that basically gets included along with the overall set of test results.
      Parameters:
        `paramProtoObj` - Protocol Object used to exchange protocol messages
      Returns:
        boolean, true if test was completed, false if test is incomplete.
      Throws:
        `IOException` - When sending/receiving messages from server fails
      See Also:
        `Protocol.recv_msg(Message msgParam)`, `These methods indicate more information about IOException`

    - #### test_mid

          public boolean test_mid(Protocol paramProtoObj)
                           throws IOException

      Throws:
        `IOException`

    - #### test_s2c

          public boolean test_s2c(Protocol paramProtoObj,
                                  Socket paramSocketObj)
                           throws IOException

      S2C throughput test to measure network bandwidth from server to client.
      Parameters:
        `paramProtoObj` - Protocol Object used to exchange messages
        `paramSocketObj` - Socket Object to write/read NDTProtocol control messages
      Returns:
        boolean, true if test was not completed, false if test was completed.
      Throws:
        `IOException` - When sending/receiving messages from server fails
      See Also:
        `Protocol.recv_msg(Message msgParam)`, `Protocol.send_json_msg(byte bParamType, byte[] baParamTab)`

    - #### test_sfw

          public boolean test_sfw(Protocol protocolObj)
                           throws IOException

      Throws:
        `IOException`

    - #### testResults

          public void testResults(String sTestResParam)

      Method that interprets test results. This routine extracts the key-value pairs of results of various categories and assigns these to the correct variables. These values are then interpreted to make decisions about various measurement items and written to the main results, statistics or web100 panels.
      Parameters:
        `sTestResParam` - String containing all results