quarchpy 2.2.4__py2.py3-none-any.whl → 2.2.6__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- quarchpy/_version.py +1 -1
- quarchpy/_version.py.bak +1 -0
- quarchpy/config_files/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/config_files/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/config_files/__pycache__/quarch_config_parser.cpython-311.pyc +0 -0
- quarchpy/config_files/__pycache__/quarch_config_parser.cpython-313.pyc +0 -0
- quarchpy/connection_specific/QPS/win-amd64/app.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/README.txt +2 -2
- quarchpy/connection_specific/QPS/win-amd64/qis/help.txt +2 -2
- quarchpy/connection_specific/QPS/win-amd64/qis/qis.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/qis_lib/{CInterface-2.2.jar → CInterface-2.3.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/qis_lib/QuarchCommon-2.0.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/qis_lib/TorridonCommon-1.0.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/qis_lib/jmdns-3.6.0.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qis/qis_lib/usb4java-1.3.1.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps-command-reference.html +331 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/JFXUtilities-1.0.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/QuarchCommon-2.0.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/lin-x64/{javafx-base-21.0.4-linux.jar → javafx-base-21.0.5-linux.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/lin-x64/{javafx-controls-21.0.4-linux.jar → javafx-controls-21.0.5-linux.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/lin-x64/{javafx-fxml-21.0.4-linux.jar → javafx-fxml-21.0.5-linux.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/lin-x64/{javafx-graphics-21.0.4-linux.jar → javafx-graphics-21.0.5-linux.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/lin-x64/{javafx-swing-21.0.4-linux.jar → javafx-swing-21.0.5-linux.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-arm64/{javafx-base-21.0.4-mac-aarch64.jar → javafx-base-21.0.5-mac-aarch64.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-arm64/{javafx-controls-21.0.4-mac-aarch64.jar → javafx-controls-21.0.5-mac-aarch64.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-arm64/{javafx-fxml-21.0.4-mac-aarch64.jar → javafx-fxml-21.0.5-mac-aarch64.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-arm64/{javafx-graphics-21.0.4-mac-aarch64.jar → javafx-graphics-21.0.5-mac-aarch64.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-arm64/{javafx-swing-21.0.4-mac-aarch64.jar → javafx-swing-21.0.5-mac-aarch64.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-x64/{javafx-base-21.0.4-mac.jar → javafx-base-21.0.5-mac.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-x64/{javafx-controls-21.0.4-mac.jar → javafx-controls-21.0.5-mac.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-x64/{javafx-fxml-21.0.4-mac.jar → javafx-fxml-21.0.5-mac.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-x64/{javafx-graphics-21.0.4-mac.jar → javafx-graphics-21.0.5-mac.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/mac-x64/{javafx-swing-21.0.4-mac.jar → javafx-swing-21.0.5-mac.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/win-x64/{javafx-base-21.0.4-win.jar → javafx-base-21.0.5-win.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/win-x64/{javafx-controls-21.0.4-win.jar → javafx-controls-21.0.5-win.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/win-x64/{javafx-fxml-21.0.4-win.jar → javafx-fxml-21.0.5-win.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/win-x64/{javafx-graphics-21.0.4-win.jar → javafx-graphics-21.0.5-win.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/win-x64/{javafx-swing-21.0.4-win.jar → javafx-swing-21.0.5-win.jar} +0 -0
- quarchpy/connection_specific/QPS/win-amd64/resources/profiles/3_PHASE_PAM_AC_DEFAULT.rcf +2 -2
- quarchpy/connection_specific/QPS/win-amd64/resources/profiles/3_PHASE_PAM_AC_FULL.rcf +5 -56
- quarchpy/connection_specific/QPS/win-amd64/resources/profiles/PAM_EXAMPLE_CONFIG.rcf +1 -1
- quarchpy/connection_specific/QPS/win-amd64/scriptCommands.txt +59 -3
- quarchpy/connection_specific/QPS/win-amd64/whats-new.txt +12 -20
- quarchpy/connection_specific/__pycache__/StreamChannels.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QIS.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QPS.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_ReST.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_Serial.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_TCP.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_Telnet.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_USB.cpython-313.pyc +0 -0
- quarchpy/connection_specific/__pycache__/mDNS.cpython-313.pyc +0 -0
- quarchpy/connection_specific/connection_QPS.py +11 -7
- quarchpy/connection_specific/connection_QPS.py.bak +242 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/fix_permissions.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialutil.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialwin32.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/win32.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_common.cpython-313.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_windows.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/SystemTest.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/SystemTest.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/module_debug.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/module_debug.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/simple_terminal.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/simple_terminal.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/upgrade_quarchpy.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/upgrade_quarchpy.cpython-313.pyc +0 -0
- quarchpy/debug/__pycache__/versionCompare.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/versionCompare.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/device.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/device.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/quarchArray.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/quarchArray.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/quarchPPM.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/quarchPPM.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/quarchQPS.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/quarchQPS.cpython-313.pyc +0 -0
- quarchpy/device/__pycache__/scanDevices.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/scanDevices.cpython-313.pyc +0 -0
- quarchpy/device/quarchQPS.py.bak +398 -0
- quarchpy/disk_test/__pycache__/AbsDiskFinder.cpython-311.pyc +0 -0
- quarchpy/disk_test/__pycache__/AbsDiskFinder.cpython-313.pyc +0 -0
- quarchpy/disk_test/__pycache__/DiskTargetSelection.cpython-311.pyc +0 -0
- quarchpy/disk_test/__pycache__/DiskTargetSelection.cpython-313.pyc +0 -0
- quarchpy/disk_test/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/disk_test/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/disk_test/__pycache__/iometerDiskFinder.cpython-311.pyc +0 -0
- quarchpy/disk_test/__pycache__/iometerDiskFinder.cpython-313.pyc +0 -0
- quarchpy/docs/CHANGES.rst +15 -1
- quarchpy/docs/CHANGES.rst.bak +430 -0
- quarchpy/docs/_build/doctrees/CHANGES.doctree +0 -0
- quarchpy/docs/_build/doctrees/environment.pickle +0 -0
- quarchpy/docs/_build/doctrees/index.doctree +0 -0
- quarchpy/docs/_build/doctrees/readme.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/changelog.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/licenses.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/modules.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.calibration.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.config_files.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.connection_specific.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.debug.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.device.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.disk_test.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.fio.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.iometer.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.qis.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.qps.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.user_interface.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.utilities.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/readme.doctree +0 -0
- quarchpy/docs/_build/html/.buildinfo +2 -2
- quarchpy/docs/_build/html/.buildinfo.bak +4 -0
- quarchpy/docs/_build/html/CHANGES.html +176 -150
- quarchpy/docs/_build/html/_sources/CHANGES.rst.txt +14 -0
- quarchpy/docs/_build/html/_static/alabaster.css +47 -87
- quarchpy/docs/_build/html/_static/basic.css +3 -14
- quarchpy/docs/_build/html/_static/doctools.js +0 -7
- quarchpy/docs/_build/html/_static/github-banner.svg +5 -0
- quarchpy/docs/_build/html/_static/language_data.js +1 -8
- quarchpy/docs/_build/html/_static/pygments.css +2 -1
- quarchpy/docs/_build/html/_static/searchtools.js +129 -71
- quarchpy/docs/_build/html/genindex.html +22 -55
- quarchpy/docs/_build/html/index.html +90 -85
- quarchpy/docs/_build/html/objects.inv +0 -0
- quarchpy/docs/_build/html/py-modindex.html +20 -29
- quarchpy/docs/_build/html/readme.html +20 -19
- quarchpy/docs/_build/html/search.html +14 -14
- quarchpy/docs/_build/html/searchindex.js +1 -1
- quarchpy/docs/_build/html/source/changelog.html +246 -216
- quarchpy/docs/_build/html/source/licenses.html +20 -19
- quarchpy/docs/_build/html/source/modules.html +22 -21
- quarchpy/docs/_build/html/source/quarchpy.calibration.html +20 -19
- quarchpy/docs/_build/html/source/quarchpy.config_files.html +20 -19
- quarchpy/docs/_build/html/source/quarchpy.connection_specific.html +22 -37
- quarchpy/docs/_build/html/source/quarchpy.debug.html +20 -19
- quarchpy/docs/_build/html/source/quarchpy.device.html +21 -20
- quarchpy/docs/_build/html/source/quarchpy.disk_test.html +20 -19
- quarchpy/docs/_build/html/source/quarchpy.fio.html +22 -47
- quarchpy/docs/_build/html/source/quarchpy.html +22 -37
- quarchpy/docs/_build/html/source/quarchpy.iometer.html +26 -25
- quarchpy/docs/_build/html/source/quarchpy.qis.html +20 -19
- quarchpy/docs/_build/html/source/quarchpy.qps.html +20 -19
- quarchpy/docs/_build/html/source/quarchpy.user_interface.html +20 -19
- quarchpy/docs/_build/html/source/quarchpy.utilities.html +20 -19
- quarchpy/docs/_build/html/source/readme.html +20 -19
- quarchpy/fio/FIO_interface.py.bak +317 -0
- quarchpy/fio/__pycache__/FIO_interface.cpython-311.pyc +0 -0
- quarchpy/fio/__pycache__/FIO_interface.cpython-313.pyc +0 -0
- quarchpy/fio/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/fio/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/fio/__pycache__/fioDiskFinder.cpython-311.pyc +0 -0
- quarchpy/fio/__pycache__/fioDiskFinder.cpython-313.pyc +0 -0
- quarchpy/iometer/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/iometer/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/iometer/__pycache__/gen_iometer_template.cpython-311.pyc +0 -0
- quarchpy/iometer/__pycache__/{gen_iometer_template.cpython-312.pyc → gen_iometer_template.cpython-313.pyc} +0 -0
- quarchpy/iometer/__pycache__/iometerFuncs.cpython-311.pyc +0 -0
- quarchpy/iometer/__pycache__/iometerFuncs.cpython-313.pyc +0 -0
- quarchpy/qis/__pycache__/StreamHeaderInfo.cpython-311.pyc +0 -0
- quarchpy/qis/__pycache__/StreamHeaderInfo.cpython-313.pyc +0 -0
- quarchpy/qis/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/qis/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/qis/__pycache__/qisFuncs.cpython-311.pyc +0 -0
- quarchpy/qis/__pycache__/qisFuncs.cpython-313.pyc +0 -0
- quarchpy/qps/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/qps/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/qps/__pycache__/qpsFuncs.cpython-311.pyc +0 -0
- quarchpy/qps/__pycache__/qpsFuncs.cpython-313.pyc +0 -0
- quarchpy/user_interface/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/user_interface/__pycache__/__init__.cpython-313.pyc +0 -0
- quarchpy/user_interface/__pycache__/user_interface.cpython-311.pyc +0 -0
- quarchpy/user_interface/__pycache__/user_interface.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/TestCenter.cpython-311.pyc +0 -0
- quarchpy/utilities/__pycache__/TestCenter.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/TimeValue.cpython-311.pyc +0 -0
- quarchpy/utilities/__pycache__/TimeValue.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/Version.cpython-311.pyc +0 -0
- quarchpy/utilities/__pycache__/Version.cpython-313.pyc +0 -0
- quarchpy/utilities/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/utilities/__pycache__/__init__.cpython-313.pyc +0 -0
- {quarchpy-2.2.4.dist-info → quarchpy-2.2.6.dist-info}/METADATA +27 -4
- {quarchpy-2.2.4.dist-info → quarchpy-2.2.6.dist-info}/RECORD +195 -224
- {quarchpy-2.2.4.dist-info → quarchpy-2.2.6.dist-info}/WHEEL +1 -1
- quarchpy/.idea/.name +0 -1
- quarchpy/.idea/inspectionProfiles/Project_Default.xml +0 -50
- quarchpy/.idea/inspectionProfiles/profiles_settings.xml +0 -6
- quarchpy/.idea/misc.xml +0 -7
- quarchpy/.idea/modules.xml +0 -8
- quarchpy/.idea/quarchpy.iml +0 -12
- quarchpy/.idea/vcs.xml +0 -6
- quarchpy/.idea/workspace.xml +0 -161
- quarchpy/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/__pycache__/_version.cpython-311.pyc +0 -0
- quarchpy/__pycache__/_version.cpython-312.pyc +0 -0
- quarchpy/__pycache__/connection.cpython-311.pyc +0 -0
- quarchpy/__pycache__/connection.cpython-312.pyc +0 -0
- quarchpy/__pycache__/run.cpython-312.pyc +0 -0
- quarchpy/config_files/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/config_files/__pycache__/quarch_config_parser.cpython-312.pyc +0 -0
- quarchpy/connection_specific/QPS/win-amd64/InstallType.dat +0 -1
- quarchpy/connection_specific/QPS/win-amd64/qis/qis_lib/jmdns-3.5.9.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/qis-1.45.jar +0 -0
- quarchpy/connection_specific/QPS/win-amd64/qps_lib/qis-1.46.jar +0 -0
- quarchpy/connection_specific/__pycache__/StreamChannels.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/StreamChannels.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QIS.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QIS.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QPS.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QPS.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_ReST.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_ReST.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_Serial.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_Serial.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_TCP.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_TCP.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_USB.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_USB.cpython-312.pyc +0 -0
- quarchpy/connection_specific/__pycache__/mDNS.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/mDNS.cpython-312.pyc +0 -0
- quarchpy/connection_specific/connection_QIS.py.bak +0 -1749
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/fix_permissions.cpython-311.pyc +0 -0
- quarchpy/connection_specific/jdk_j21_jres/__pycache__/fix_permissions.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialutil.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialutil.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialwin32.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialwin32.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/win32.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/win32.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_common.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_common.cpython-312.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_windows.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_windows.cpython-312.pyc +0 -0
- quarchpy/connection_specific/usb_libs/__pycache__/libusb1.cpython-312.pyc +0 -0
- quarchpy/connection_specific/usb_libs/__pycache__/usb1.cpython-312.pyc +0 -0
- quarchpy/debug/__pycache__/SystemTest.cpython-312.pyc +0 -0
- quarchpy/debug/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/debug/__pycache__/module_debug.cpython-312.pyc +0 -0
- quarchpy/debug/__pycache__/simple_terminal.cpython-312.pyc +0 -0
- quarchpy/debug/__pycache__/upgrade_quarchpy.cpython-312.pyc +0 -0
- quarchpy/debug/__pycache__/versionCompare.cpython-312.pyc +0 -0
- quarchpy/device/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/device/__pycache__/device.cpython-312.pyc +0 -0
- quarchpy/device/__pycache__/quarchArray.cpython-312.pyc +0 -0
- quarchpy/device/__pycache__/quarchPPM.cpython-312.pyc +0 -0
- quarchpy/device/__pycache__/quarchQPS.cpython-312.pyc +0 -0
- quarchpy/device/__pycache__/scanDevices.cpython-312.pyc +0 -0
- quarchpy/device/quarchPPM.py.bak +0 -67
- quarchpy/disk_test/__pycache__/AbsDiskFinder.cpython-312.pyc +0 -0
- quarchpy/disk_test/__pycache__/DiskTargetSelection.cpython-312.pyc +0 -0
- quarchpy/disk_test/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/disk_test/__pycache__/iometerDiskFinder.cpython-312.pyc +0 -0
- quarchpy/fio/__pycache__/FIO_interface.cpython-312.pyc +0 -0
- quarchpy/fio/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/iometer/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/iometer/__pycache__/iometerFuncs.cpython-312.pyc +0 -0
- quarchpy/qis/__pycache__/StreamHeaderInfo.cpython-312.pyc +0 -0
- quarchpy/qis/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/qis/__pycache__/qisFuncs.cpython-312.pyc +0 -0
- quarchpy/qps/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/qps/__pycache__/qpsFuncs.cpython-312.pyc +0 -0
- quarchpy/user_interface/__pycache__/__init__.cpython-312.pyc +0 -0
- quarchpy/user_interface/__pycache__/user_interface.cpython-312.pyc +0 -0
- quarchpy/utilities/__pycache__/TestCenter.cpython-312.pyc +0 -0
- quarchpy/utilities/__pycache__/TimeValue.cpython-312.pyc +0 -0
- quarchpy/utilities/__pycache__/Version.cpython-312.pyc +0 -0
- quarchpy/utilities/__pycache__/__init__.cpython-312.pyc +0 -0
- {quarchpy-2.2.4.dist-info → quarchpy-2.2.6.dist-info}/top_level.txt +0 -0
@@ -6,10 +6,11 @@
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
7
7
|
|
8
8
|
<title>quarchpy.qps package — quarchpy documentation</title>
|
9
|
-
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=
|
10
|
-
<link rel="stylesheet" type="text/css" href="../_static/
|
9
|
+
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=d1102ebc" />
|
10
|
+
<link rel="stylesheet" type="text/css" href="../_static/basic.css?v=686e5160" />
|
11
|
+
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css?v=27fed22d" />
|
11
12
|
<script src="../_static/documentation_options.js?v=5929fcd5"></script>
|
12
|
-
<script src="../_static/doctools.js?v=
|
13
|
+
<script src="../_static/doctools.js?v=9bcbadda"></script>
|
13
14
|
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
|
14
15
|
<link rel="index" title="Index" href="../genindex.html" />
|
15
16
|
<link rel="search" title="Search" href="../search.html" />
|
@@ -18,8 +19,9 @@
|
|
18
19
|
|
19
20
|
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
20
21
|
|
22
|
+
|
23
|
+
|
21
24
|
|
22
|
-
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
23
25
|
|
24
26
|
</head><body>
|
25
27
|
|
@@ -109,7 +111,7 @@
|
|
109
111
|
|
110
112
|
</div>
|
111
113
|
</div>
|
112
|
-
<div class="sphinxsidebar" role="navigation" aria-label="
|
114
|
+
<div class="sphinxsidebar" role="navigation" aria-label="Main">
|
113
115
|
<div class="sphinxsidebarwrapper">
|
114
116
|
<h1 class="logo"><a href="../index.html">quarchpy</a></h1>
|
115
117
|
|
@@ -120,7 +122,16 @@
|
|
120
122
|
|
121
123
|
|
122
124
|
|
123
|
-
|
125
|
+
|
126
|
+
<search id="searchbox" style="display: none" role="search">
|
127
|
+
<div class="searchformwrapper">
|
128
|
+
<form class="search" action="../search.html" method="get">
|
129
|
+
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" placeholder="Search"/>
|
130
|
+
<input type="submit" value="Go" />
|
131
|
+
</form>
|
132
|
+
</div>
|
133
|
+
</search>
|
134
|
+
<script>document.getElementById('searchbox').style.display = "block"</script><h3>Navigation</h3>
|
124
135
|
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
125
136
|
<ul class="current">
|
126
137
|
<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog (Quarchpy)</a></li>
|
@@ -145,16 +156,6 @@
|
|
145
156
|
</ul></li>
|
146
157
|
</ul>
|
147
158
|
</div>
|
148
|
-
<div id="searchbox" style="display: none" role="search">
|
149
|
-
<h3 id="searchlabel">Quick search</h3>
|
150
|
-
<div class="searchformwrapper">
|
151
|
-
<form class="search" action="../search.html" method="get">
|
152
|
-
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
|
153
|
-
<input type="submit" value="Go" />
|
154
|
-
</form>
|
155
|
-
</div>
|
156
|
-
</div>
|
157
|
-
<script>document.getElementById('searchbox').style.display = "block"</script>
|
158
159
|
|
159
160
|
|
160
161
|
|
@@ -168,11 +169,11 @@
|
|
168
169
|
<div class="clearer"></div>
|
169
170
|
</div>
|
170
171
|
<div class="footer">
|
171
|
-
|
172
|
+
©2020, Quarch Technology Ltd.
|
172
173
|
|
173
174
|
|
|
174
|
-
Powered by <a href="
|
175
|
-
& <a href="https://
|
175
|
+
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
|
176
|
+
& <a href="https://alabaster.readthedocs.io">Alabaster 1.0.0</a>
|
176
177
|
|
177
178
|
|
|
178
179
|
<a href="../_sources/source/quarchpy.qps.rst.txt"
|
@@ -6,10 +6,11 @@
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
7
7
|
|
8
8
|
<title>quarchpy.user_interface package — quarchpy documentation</title>
|
9
|
-
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=
|
10
|
-
<link rel="stylesheet" type="text/css" href="../_static/
|
9
|
+
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=d1102ebc" />
|
10
|
+
<link rel="stylesheet" type="text/css" href="../_static/basic.css?v=686e5160" />
|
11
|
+
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css?v=27fed22d" />
|
11
12
|
<script src="../_static/documentation_options.js?v=5929fcd5"></script>
|
12
|
-
<script src="../_static/doctools.js?v=
|
13
|
+
<script src="../_static/doctools.js?v=9bcbadda"></script>
|
13
14
|
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
|
14
15
|
<link rel="index" title="Index" href="../genindex.html" />
|
15
16
|
<link rel="search" title="Search" href="../search.html" />
|
@@ -18,8 +19,9 @@
|
|
18
19
|
|
19
20
|
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
20
21
|
|
22
|
+
|
23
|
+
|
21
24
|
|
22
|
-
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
23
25
|
|
24
26
|
</head><body>
|
25
27
|
|
@@ -201,7 +203,7 @@ interaction. The UI can be the terminal or TestCenter</p>
|
|
201
203
|
|
202
204
|
</div>
|
203
205
|
</div>
|
204
|
-
<div class="sphinxsidebar" role="navigation" aria-label="
|
206
|
+
<div class="sphinxsidebar" role="navigation" aria-label="Main">
|
205
207
|
<div class="sphinxsidebarwrapper">
|
206
208
|
<h1 class="logo"><a href="../index.html">quarchpy</a></h1>
|
207
209
|
|
@@ -212,7 +214,16 @@ interaction. The UI can be the terminal or TestCenter</p>
|
|
212
214
|
|
213
215
|
|
214
216
|
|
215
|
-
|
217
|
+
|
218
|
+
<search id="searchbox" style="display: none" role="search">
|
219
|
+
<div class="searchformwrapper">
|
220
|
+
<form class="search" action="../search.html" method="get">
|
221
|
+
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" placeholder="Search"/>
|
222
|
+
<input type="submit" value="Go" />
|
223
|
+
</form>
|
224
|
+
</div>
|
225
|
+
</search>
|
226
|
+
<script>document.getElementById('searchbox').style.display = "block"</script><h3>Navigation</h3>
|
216
227
|
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
217
228
|
<ul class="current">
|
218
229
|
<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog (Quarchpy)</a></li>
|
@@ -237,16 +248,6 @@ interaction. The UI can be the terminal or TestCenter</p>
|
|
237
248
|
</ul></li>
|
238
249
|
</ul>
|
239
250
|
</div>
|
240
|
-
<div id="searchbox" style="display: none" role="search">
|
241
|
-
<h3 id="searchlabel">Quick search</h3>
|
242
|
-
<div class="searchformwrapper">
|
243
|
-
<form class="search" action="../search.html" method="get">
|
244
|
-
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
|
245
|
-
<input type="submit" value="Go" />
|
246
|
-
</form>
|
247
|
-
</div>
|
248
|
-
</div>
|
249
|
-
<script>document.getElementById('searchbox').style.display = "block"</script>
|
250
251
|
|
251
252
|
|
252
253
|
|
@@ -260,11 +261,11 @@ interaction. The UI can be the terminal or TestCenter</p>
|
|
260
261
|
<div class="clearer"></div>
|
261
262
|
</div>
|
262
263
|
<div class="footer">
|
263
|
-
|
264
|
+
©2020, Quarch Technology Ltd.
|
264
265
|
|
265
266
|
|
|
266
|
-
Powered by <a href="
|
267
|
-
& <a href="https://
|
267
|
+
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
|
268
|
+
& <a href="https://alabaster.readthedocs.io">Alabaster 1.0.0</a>
|
268
269
|
|
269
270
|
|
|
270
271
|
<a href="../_sources/source/quarchpy.user_interface.rst.txt"
|
@@ -6,10 +6,11 @@
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
7
7
|
|
8
8
|
<title>quarchpy.utilities package — quarchpy documentation</title>
|
9
|
-
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=
|
10
|
-
<link rel="stylesheet" type="text/css" href="../_static/
|
9
|
+
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=d1102ebc" />
|
10
|
+
<link rel="stylesheet" type="text/css" href="../_static/basic.css?v=686e5160" />
|
11
|
+
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css?v=27fed22d" />
|
11
12
|
<script src="../_static/documentation_options.js?v=5929fcd5"></script>
|
12
|
-
<script src="../_static/doctools.js?v=
|
13
|
+
<script src="../_static/doctools.js?v=9bcbadda"></script>
|
13
14
|
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
|
14
15
|
<link rel="index" title="Index" href="../genindex.html" />
|
15
16
|
<link rel="search" title="Search" href="../search.html" />
|
@@ -18,8 +19,9 @@
|
|
18
19
|
|
19
20
|
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
20
21
|
|
22
|
+
|
23
|
+
|
21
24
|
|
22
|
-
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
23
25
|
|
24
26
|
</head><body>
|
25
27
|
|
@@ -134,7 +136,7 @@ on the reporting of the results.</p>
|
|
134
136
|
|
135
137
|
</div>
|
136
138
|
</div>
|
137
|
-
<div class="sphinxsidebar" role="navigation" aria-label="
|
139
|
+
<div class="sphinxsidebar" role="navigation" aria-label="Main">
|
138
140
|
<div class="sphinxsidebarwrapper">
|
139
141
|
<h1 class="logo"><a href="../index.html">quarchpy</a></h1>
|
140
142
|
|
@@ -145,7 +147,16 @@ on the reporting of the results.</p>
|
|
145
147
|
|
146
148
|
|
147
149
|
|
148
|
-
|
150
|
+
|
151
|
+
<search id="searchbox" style="display: none" role="search">
|
152
|
+
<div class="searchformwrapper">
|
153
|
+
<form class="search" action="../search.html" method="get">
|
154
|
+
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" placeholder="Search"/>
|
155
|
+
<input type="submit" value="Go" />
|
156
|
+
</form>
|
157
|
+
</div>
|
158
|
+
</search>
|
159
|
+
<script>document.getElementById('searchbox').style.display = "block"</script><h3>Navigation</h3>
|
149
160
|
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
150
161
|
<ul class="current">
|
151
162
|
<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog (Quarchpy)</a></li>
|
@@ -170,16 +181,6 @@ on the reporting of the results.</p>
|
|
170
181
|
</ul></li>
|
171
182
|
</ul>
|
172
183
|
</div>
|
173
|
-
<div id="searchbox" style="display: none" role="search">
|
174
|
-
<h3 id="searchlabel">Quick search</h3>
|
175
|
-
<div class="searchformwrapper">
|
176
|
-
<form class="search" action="../search.html" method="get">
|
177
|
-
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
|
178
|
-
<input type="submit" value="Go" />
|
179
|
-
</form>
|
180
|
-
</div>
|
181
|
-
</div>
|
182
|
-
<script>document.getElementById('searchbox').style.display = "block"</script>
|
183
184
|
|
184
185
|
|
185
186
|
|
@@ -193,11 +194,11 @@ on the reporting of the results.</p>
|
|
193
194
|
<div class="clearer"></div>
|
194
195
|
</div>
|
195
196
|
<div class="footer">
|
196
|
-
|
197
|
+
©2020, Quarch Technology Ltd.
|
197
198
|
|
198
199
|
|
|
199
|
-
Powered by <a href="
|
200
|
-
& <a href="https://
|
200
|
+
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
|
201
|
+
& <a href="https://alabaster.readthedocs.io">Alabaster 1.0.0</a>
|
201
202
|
|
202
203
|
|
|
203
204
|
<a href="../_sources/source/quarchpy.utilities.rst.txt"
|
@@ -6,10 +6,11 @@
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
|
7
7
|
|
8
8
|
<title>Quarchpy - Readme — quarchpy documentation</title>
|
9
|
-
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=
|
10
|
-
<link rel="stylesheet" type="text/css" href="../_static/
|
9
|
+
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=d1102ebc" />
|
10
|
+
<link rel="stylesheet" type="text/css" href="../_static/basic.css?v=686e5160" />
|
11
|
+
<link rel="stylesheet" type="text/css" href="../_static/alabaster.css?v=27fed22d" />
|
11
12
|
<script src="../_static/documentation_options.js?v=5929fcd5"></script>
|
12
|
-
<script src="../_static/doctools.js?v=
|
13
|
+
<script src="../_static/doctools.js?v=9bcbadda"></script>
|
13
14
|
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
|
14
15
|
<link rel="index" title="Index" href="../genindex.html" />
|
15
16
|
<link rel="search" title="Search" href="../search.html" />
|
@@ -18,8 +19,9 @@
|
|
18
19
|
|
19
20
|
<link rel="stylesheet" href="../_static/custom.css" type="text/css" />
|
20
21
|
|
22
|
+
|
23
|
+
|
21
24
|
|
22
|
-
<meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" />
|
23
25
|
|
24
26
|
</head><body>
|
25
27
|
|
@@ -71,7 +73,7 @@
|
|
71
73
|
|
72
74
|
</div>
|
73
75
|
</div>
|
74
|
-
<div class="sphinxsidebar" role="navigation" aria-label="
|
76
|
+
<div class="sphinxsidebar" role="navigation" aria-label="Main">
|
75
77
|
<div class="sphinxsidebarwrapper">
|
76
78
|
<h1 class="logo"><a href="../index.html">quarchpy</a></h1>
|
77
79
|
|
@@ -82,7 +84,16 @@
|
|
82
84
|
|
83
85
|
|
84
86
|
|
85
|
-
|
87
|
+
|
88
|
+
<search id="searchbox" style="display: none" role="search">
|
89
|
+
<div class="searchformwrapper">
|
90
|
+
<form class="search" action="../search.html" method="get">
|
91
|
+
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" placeholder="Search"/>
|
92
|
+
<input type="submit" value="Go" />
|
93
|
+
</form>
|
94
|
+
</div>
|
95
|
+
</search>
|
96
|
+
<script>document.getElementById('searchbox').style.display = "block"</script><h3>Navigation</h3>
|
86
97
|
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
|
87
98
|
<ul class="current">
|
88
99
|
<li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog (Quarchpy)</a></li>
|
@@ -106,16 +117,6 @@
|
|
106
117
|
</ul></li>
|
107
118
|
</ul>
|
108
119
|
</div>
|
109
|
-
<div id="searchbox" style="display: none" role="search">
|
110
|
-
<h3 id="searchlabel">Quick search</h3>
|
111
|
-
<div class="searchformwrapper">
|
112
|
-
<form class="search" action="../search.html" method="get">
|
113
|
-
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
|
114
|
-
<input type="submit" value="Go" />
|
115
|
-
</form>
|
116
|
-
</div>
|
117
|
-
</div>
|
118
|
-
<script>document.getElementById('searchbox').style.display = "block"</script>
|
119
120
|
|
120
121
|
|
121
122
|
|
@@ -129,11 +130,11 @@
|
|
129
130
|
<div class="clearer"></div>
|
130
131
|
</div>
|
131
132
|
<div class="footer">
|
132
|
-
|
133
|
+
©2020, Quarch Technology Ltd.
|
133
134
|
|
134
135
|
|
|
135
|
-
Powered by <a href="
|
136
|
-
& <a href="https://
|
136
|
+
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 8.1.3</a>
|
137
|
+
& <a href="https://alabaster.readthedocs.io">Alabaster 1.0.0</a>
|
137
138
|
|
138
139
|
|
|
139
140
|
<a href="../_sources/source/readme.rst.txt"
|
@@ -0,0 +1,317 @@
|
|
1
|
+
import os
|
2
|
+
import time
|
3
|
+
import json
|
4
|
+
from datetime import datetime
|
5
|
+
import subprocess
|
6
|
+
|
7
|
+
all_outputs={"terse_version_3":"0",
|
8
|
+
"fio_version":"1",
|
9
|
+
"jobname":"2",
|
10
|
+
"groupid":"3",
|
11
|
+
"error":"4",
|
12
|
+
"read_kb":"5",
|
13
|
+
"read_bandwidth":"6",
|
14
|
+
"read_iops":"7",
|
15
|
+
"read_runtime_ms":"8",
|
16
|
+
"read_slat_min":"9",
|
17
|
+
"read_slat_max":"10",
|
18
|
+
"read_slat_mean":"11",
|
19
|
+
"read_slat_dev":"12",
|
20
|
+
"read_clat_min":"13",
|
21
|
+
"read_clat_max":"14",
|
22
|
+
"read_clat_mean":"15",
|
23
|
+
"read_clat_dev":"16",
|
24
|
+
"read_clat_pct01":"17",
|
25
|
+
"read_clat_pct02":"18",
|
26
|
+
"read_clat_pct03":"19",
|
27
|
+
"read_clat_pct04":"20",
|
28
|
+
"read_clat_pct05":"21",
|
29
|
+
"read_clat_pct06":"22",
|
30
|
+
"read_clat_pct07":"23",
|
31
|
+
"read_clat_pct08":"24",
|
32
|
+
"read_clat_pct09":"25",
|
33
|
+
"read_clat_pct10":"26",
|
34
|
+
"read_clat_pct11":"27",
|
35
|
+
"read_clat_pct12":"28",
|
36
|
+
"read_clat_pct13":"29",
|
37
|
+
"read_clat_pct14":"30",
|
38
|
+
"read_clat_pct15":"31",
|
39
|
+
"read_clat_pct16":"32",
|
40
|
+
"read_clat_pct17":"33",
|
41
|
+
"read_clat_pct18":"34",
|
42
|
+
"read_clat_pct19":"35",
|
43
|
+
"read_clat_pct20":"36",
|
44
|
+
"read_tlat_min":"37",
|
45
|
+
"read_lat_max":"38",
|
46
|
+
"read_lat_mean":"39",
|
47
|
+
"read_lat_dev":"40",
|
48
|
+
"read_bw_min":"41",
|
49
|
+
"read_bw_max":"42",
|
50
|
+
"read_bw_agg_pct":"43",
|
51
|
+
"read_bw_mean":"44",
|
52
|
+
"read_bw_dev":"45",
|
53
|
+
"write_kb":"46",
|
54
|
+
"write_bandwidth":"47",
|
55
|
+
"write_iops":"48",
|
56
|
+
"write_runtime_ms":"49",
|
57
|
+
"write_slat_min":"50",
|
58
|
+
"write_slat_max":"51",
|
59
|
+
"write_slat_mean":"52",
|
60
|
+
"write_slat_dev":"53",
|
61
|
+
"write_clat_min":"54",
|
62
|
+
"write_clat_max":"55",
|
63
|
+
"write_clat_mean":"56",
|
64
|
+
"write_clat_dev":"57",
|
65
|
+
"write_clat_pct01":"58",
|
66
|
+
"write_clat_pct02":"59",
|
67
|
+
"write_clat_pct03":"60",
|
68
|
+
"write_clat_pct04":"61",
|
69
|
+
"write_clat_pct05":"62",
|
70
|
+
"write_clat_pct06":"63",
|
71
|
+
"write_clat_pct07":"64",
|
72
|
+
"write_clat_pct08":"65",
|
73
|
+
"write_clat_pct09":"66",
|
74
|
+
"write_clat_pct10":"67",
|
75
|
+
"write_clat_pct11":"68",
|
76
|
+
"write_clat_pct12":"69",
|
77
|
+
"write_clat_pct13":"70",
|
78
|
+
"write_clat_pct14":"71",
|
79
|
+
"write_clat_pct15":"72",
|
80
|
+
"write_clat_pct16":"73",
|
81
|
+
"write_clat_pct17":"74",
|
82
|
+
"write_clat_pct18":"75",
|
83
|
+
"write_clat_pct19":"76",
|
84
|
+
"write_clat_pct20":"77",
|
85
|
+
"write_tlat_min":"78",
|
86
|
+
"write_lat_max":"79",
|
87
|
+
"write_lat_mean":"80",
|
88
|
+
"write_lat_dev":"81",
|
89
|
+
"write_bw_min":"82",
|
90
|
+
"write_bw_max":"83",
|
91
|
+
"write_bw_agg_pct":"84",
|
92
|
+
"write_bw_mean":"85",
|
93
|
+
"write_bw_dev":"86",
|
94
|
+
"cpu_user":"87",
|
95
|
+
"cpu_sys":"88",
|
96
|
+
"cpu_csw":"89",
|
97
|
+
"cpu_mjf":"90",
|
98
|
+
"cpu_minf":"91",
|
99
|
+
"iodepth_1":"92",
|
100
|
+
"iodepth_2":"93",
|
101
|
+
"iodepth_4":"94",
|
102
|
+
"iodepth_8":"95",
|
103
|
+
"iodepth_16":"96",
|
104
|
+
"iodepth_32":"97",
|
105
|
+
"iodepth_64":"98",
|
106
|
+
"lat_2us":"99",
|
107
|
+
"lat_4us":"100",
|
108
|
+
"lat_10us":"101",
|
109
|
+
"lat_20us":"102",
|
110
|
+
"lat_50us":"103",
|
111
|
+
"lat_100us":"104",
|
112
|
+
"lat_250us":"105",
|
113
|
+
"lat_500us":"106",
|
114
|
+
"lat_750us":"107",
|
115
|
+
"lat_1000us":"108",
|
116
|
+
"lat_2ms":"109",
|
117
|
+
"lat_4ms":"110",
|
118
|
+
"lat_10ms":"111",
|
119
|
+
"lat_20ms":"112",
|
120
|
+
"lat_50ms":"113",
|
121
|
+
"lat_100ms":"114",
|
122
|
+
"lat_250ms":"115",
|
123
|
+
"lat_500ms":"116",
|
124
|
+
"lat_750ms":"117",
|
125
|
+
"lat_1000ms":"118",
|
126
|
+
"lat_2000ms":"119",
|
127
|
+
"lat_over_2000ms":"120",
|
128
|
+
"disk_name":"121",
|
129
|
+
"disk_read_iops":"122",
|
130
|
+
"disk_write_iops":"123",
|
131
|
+
"disk_read_merges":"124",
|
132
|
+
"disk_write_merges":"125",
|
133
|
+
"disk_read_ticks":"126",
|
134
|
+
"write_ticks":"127",
|
135
|
+
"disk_queue_time":"128",
|
136
|
+
"disk_util":"129"}
|
137
|
+
|
138
|
+
out_data = {}
|
139
|
+
|
140
|
+
def follow(thefile, p):
|
141
|
+
thefile.seek(0,2)
|
142
|
+
#flag for exiting the loop
|
143
|
+
processCompleted = False
|
144
|
+
|
145
|
+
while processCompleted == False:
|
146
|
+
line = thefile.readline()
|
147
|
+
|
148
|
+
#only exists if process is finished and no more data from file
|
149
|
+
if p.poll() is not None and not line:
|
150
|
+
#yield a specific string we can identify
|
151
|
+
yield ("quarch_end_Process")
|
152
|
+
processCompleted = True
|
153
|
+
|
154
|
+
if not line:
|
155
|
+
time.sleep(0.1)
|
156
|
+
continue
|
157
|
+
yield line
|
158
|
+
|
159
|
+
|
160
|
+
def return_data(output_file, p, fioCallbacks, myStream, user_data, arguments):
|
161
|
+
|
162
|
+
isThreaded = True
|
163
|
+
#checking to see if the first line of file needs to be skipped = Windows only
|
164
|
+
if os.name == "nt":
|
165
|
+
isThreaded = False
|
166
|
+
for i in arguments:
|
167
|
+
#only needs to be skipped if the "thread" argument has not been issued
|
168
|
+
if (str(i.lower()) == "thread"):
|
169
|
+
isThreaded = True
|
170
|
+
|
171
|
+
info_out = {}
|
172
|
+
logfile = open(output_file,"r")
|
173
|
+
loglines = follow(logfile, p)
|
174
|
+
|
175
|
+
#variables for parsing json
|
176
|
+
iterator = 0
|
177
|
+
jobCount = 0
|
178
|
+
jsonLines = ""
|
179
|
+
openBracketCount = 0
|
180
|
+
closeBracketCount = 0
|
181
|
+
# Init the job end time to the current start time
|
182
|
+
jobEndTime = int(round(time.time() * 1000))
|
183
|
+
|
184
|
+
for line in loglines:
|
185
|
+
|
186
|
+
|
187
|
+
if (isThreaded == False):
|
188
|
+
#skip the very first line -- (title line) --
|
189
|
+
if iterator == 0:
|
190
|
+
iterator = iterator + 1
|
191
|
+
#marking threaded as true for remainder of read > Efficiency
|
192
|
+
isThreaded = True
|
193
|
+
continue
|
194
|
+
|
195
|
+
#add to iterator - not needed, may be useful later
|
196
|
+
iterator = iterator + 1
|
197
|
+
|
198
|
+
#concat strings
|
199
|
+
jsonLines += line
|
200
|
+
|
201
|
+
#finding brackets withing json
|
202
|
+
if '{' in line:
|
203
|
+
openBracketCount = openBracketCount + 1
|
204
|
+
if '}' in line:
|
205
|
+
closeBracketCount = closeBracketCount + 1
|
206
|
+
|
207
|
+
#an equal amount of brackets denotes the end of a json object
|
208
|
+
if openBracketCount == closeBracketCount and openBracketCount != 0:
|
209
|
+
try:
|
210
|
+
#format into a json parsable string
|
211
|
+
TempJsonObject = jsonLines[ 0 : jsonLines.rindex('}') + 1 ]
|
212
|
+
|
213
|
+
#parse json
|
214
|
+
jsonobject = json.loads(TempJsonObject)
|
215
|
+
|
216
|
+
#checking for first job
|
217
|
+
if (jobCount == 0):
|
218
|
+
#getting start time of job
|
219
|
+
startTime = (jsonobject['timestamp_ms'] - jsonobject['jobs'][0]['read']['runtime'])
|
220
|
+
comment = str(arguments).replace(",","\n").replace("}","").replace("{","")
|
221
|
+
jobName = str(jsonobject['jobs'][0]['jobname'])
|
222
|
+
#adding start annotation
|
223
|
+
fioCallbacks["TEST_START"](myStream, str(startTime), jobName, comment)
|
224
|
+
|
225
|
+
#pass specific data
|
226
|
+
readDataValue = jsonobject['jobs'][0]['read']['iops']
|
227
|
+
writeDataValue = jsonobject['jobs'][0]['write']['iops']
|
228
|
+
blockSize=jsonobject['global options']['bs']
|
229
|
+
#converted to ditionary - easy script use
|
230
|
+
dataValues = {"read_iops" : readDataValue, "write_iops" : writeDataValue, "block_size":blockSize}
|
231
|
+
jobEndTime = str(jsonobject['timestamp_ms'])
|
232
|
+
fioCallbacks["TEST_RESULT"](myStream, jobEndTime, dataValues)
|
233
|
+
|
234
|
+
#jsonLines variable is now all characters after last job + any new that come in
|
235
|
+
jsonLines = jsonLines[jsonLines.rindex('}') + 1 : ]
|
236
|
+
|
237
|
+
#add 1 to the job count
|
238
|
+
jobCount += 1
|
239
|
+
|
240
|
+
except:
|
241
|
+
#exception caused by not being able to find substring -- Last json object --
|
242
|
+
pass
|
243
|
+
|
244
|
+
|
245
|
+
|
246
|
+
#looks for end of process and the specific string we return indicating end of file
|
247
|
+
if p.poll() is not None:
|
248
|
+
if line == "quarch_end_Process":
|
249
|
+
time.sleep(0.1)
|
250
|
+
#callback to end test -- adds 1 milli second so this time is always after the last data point --
|
251
|
+
fioCallbacks["TEST_END"](myStream, str(int(jobEndTime) + 1))
|
252
|
+
#CLOSE FILE ON FINISH
|
253
|
+
logfile.close()
|
254
|
+
return
|
255
|
+
|
256
|
+
def start_fio(output_file, mode, options, fileName=""):
|
257
|
+
|
258
|
+
if mode == "cli":
|
259
|
+
command = command + " > pipe"
|
260
|
+
|
261
|
+
#command line to be sent -- output is in json format --
|
262
|
+
if mode == "file":
|
263
|
+
command = "fio " + fileName + " --log_unix_epoch=1 --output-format=json --output="+ output_file + " --status-interval=1 --eta=never"
|
264
|
+
|
265
|
+
if mode == "arg":
|
266
|
+
command = "fio --log_unix_epoch=1 --output-format=json"
|
267
|
+
|
268
|
+
for i in options:
|
269
|
+
if (options[i] == ""):
|
270
|
+
command = command + " --" + i
|
271
|
+
else:
|
272
|
+
command = command + " --" + i + "=" + options[i]
|
273
|
+
command = command + " > pipe"
|
274
|
+
|
275
|
+
#removes the output file if it already exists.
|
276
|
+
if os.path.exists(output_file):
|
277
|
+
os.remove(output_file)
|
278
|
+
|
279
|
+
if os.path.exists("pipe"):
|
280
|
+
os.remove("pipe")
|
281
|
+
|
282
|
+
print(command)
|
283
|
+
p = subprocess.Popen(command, shell=True)
|
284
|
+
|
285
|
+
while not os.path.exists(output_file):
|
286
|
+
time.sleep(0.1)
|
287
|
+
|
288
|
+
return p
|
289
|
+
|
290
|
+
def runFIO(myStream, mode, fioCallbacks, user_data, arguments="", file_name=""):
|
291
|
+
|
292
|
+
try:
|
293
|
+
xrange
|
294
|
+
except NameError:
|
295
|
+
xrange = range
|
296
|
+
|
297
|
+
for i in xrange(0,len(arguments)):
|
298
|
+
|
299
|
+
try:
|
300
|
+
arguments_ori = arguments[i]
|
301
|
+
except:
|
302
|
+
arguments_ori = arguments
|
303
|
+
|
304
|
+
output_file = arguments_ori["output"]
|
305
|
+
if (file_name != ""):
|
306
|
+
#allows filename with spaces
|
307
|
+
file_name = "\"" + file_name + "\""
|
308
|
+
|
309
|
+
p = start_fio(output_file, mode, arguments_ori, file_name)
|
310
|
+
|
311
|
+
return_data(output_file, p, fioCallbacks, myStream, user_data, arguments_ori)
|
312
|
+
|
313
|
+
if os.path.exists("pipe"):
|
314
|
+
os.remove("pipe")
|
315
|
+
|
316
|
+
if isinstance(arguments, dict):
|
317
|
+
break
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|