cosmos 3.0.1 → 3.1.0
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.
- checksums.yaml +4 -4
- data/.coveralls.yml +1 -0
- data/.gitignore +48 -48
- data/.travis.yml +7 -7
- data/CONTRIBUTING.txt +50 -50
- data/Gemfile +6 -6
- data/Guardfile +27 -27
- data/LICENSE.txt +879 -879
- data/Manifest.txt +1116 -1114
- data/README.md +109 -107
- data/Rakefile +214 -214
- data/autohotkey/config/data/diamond.STL +57 -57
- data/autohotkey/config/system/system.txt +34 -34
- data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/autohotkey/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/autohotkey/config/targets/COSMOS/target.txt +5 -5
- data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -121
- data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +247 -247
- data/autohotkey/config/targets/INST/cmd_tlm_server.txt +5 -5
- data/autohotkey/config/targets/INST/lib/example_limits_response.rb +30 -30
- data/autohotkey/config/targets/INST/lib/sim_inst.rb +305 -294
- data/autohotkey/config/targets/INST/screens/adcs.txt +46 -46
- data/autohotkey/config/targets/INST/screens/array.txt +7 -7
- data/autohotkey/config/targets/INST/screens/block.txt +8 -8
- data/autohotkey/config/targets/INST/screens/commanding.txt +30 -30
- data/autohotkey/config/targets/INST/screens/graphs.txt +14 -14
- data/autohotkey/config/targets/INST/screens/ground.txt +25 -25
- data/autohotkey/config/targets/INST/screens/health_status.txt +33 -33
- data/autohotkey/config/targets/INST/screens/hs.txt +49 -49
- data/autohotkey/config/targets/INST/screens/image.txt +21 -21
- data/autohotkey/config/targets/INST/screens/latest.txt +23 -23
- data/autohotkey/config/targets/INST/screens/mech.txt +25 -25
- data/autohotkey/config/targets/INST/screens/other.txt +25 -25
- data/autohotkey/config/targets/INST/screens/params.txt +25 -25
- data/autohotkey/config/targets/INST/screens/tabs.txt +68 -68
- data/autohotkey/config/targets/INST/target.txt +26 -26
- data/autohotkey/config/targets/META/cmd_tlm/meta_cmd.txt +10 -10
- data/autohotkey/config/targets/META/cmd_tlm/meta_tlm.txt +9 -9
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
- data/autohotkey/config/targets/SYSTEM/screens/error.txt +11 -11
- data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +22 -22
- data/autohotkey/config/tools/data_viewer/data_viewer.txt +11 -11
- data/autohotkey/config/tools/handbook_creator/handbook_creator.txt +49 -49
- data/autohotkey/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/autohotkey/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/autohotkey/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/autohotkey/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/autohotkey/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/autohotkey/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/autohotkey/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/autohotkey/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/autohotkey/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/autohotkey/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/autohotkey/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/autohotkey/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/autohotkey/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/autohotkey/config/tools/launcher/launcher.txt +38 -38
- data/autohotkey/config/tools/script_runner/script_runner.txt +3 -3
- data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +8 -8
- data/autohotkey/config/tools/table_manager/OneDimensionalTable_def.txt +19 -19
- data/autohotkey/config/tools/table_manager/TwoDimensionalTable_def.txt +248 -248
- data/autohotkey/config/tools/test_runner/test_runner.txt +8 -8
- data/autohotkey/config/tools/test_runner/test_runner2.txt +11 -11
- data/autohotkey/config/tools/test_runner/test_runner3.txt +6 -6
- data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -1
- data/autohotkey/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
- data/autohotkey/config/tools/tlm_extractor/tlm_extractor2.txt +9 -9
- data/autohotkey/config/tools/tlm_grapher/bad.txt +50 -50
- data/autohotkey/config/tools/tlm_grapher/temp1-4.txt +51 -51
- data/autohotkey/config/tools/tlm_grapher/test2.txt +111 -111
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer.txt +24 -24
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer2.txt +4 -4
- data/autohotkey/config/tools/tlm_viewer/tlm_viewer3.txt +3 -3
- data/autohotkey/lib/example_background_task.rb +42 -42
- data/autohotkey/lib/user_version.rb +3 -3
- data/autohotkey/procedures/clear_util.rb +7 -7
- data/autohotkey/procedures/collect.rb +18 -18
- data/autohotkey/procedures/collect_util.rb +14 -14
- data/autohotkey/procedures/example_test.rb +67 -67
- data/autohotkey/procedures/example_test2.rb +74 -74
- data/autohotkey/procedures/script_test.rb +17 -17
- data/autohotkey/procedures/syntax_error.rb +18 -18
- data/autohotkey/tools/CmdExtractorAHK +16 -16
- data/autohotkey/tools/CmdSender +14 -14
- data/autohotkey/tools/CmdSenderAHK +18 -18
- data/autohotkey/tools/CmdTlmServer +14 -14
- data/autohotkey/tools/CmdTlmServerAHK +28 -28
- data/autohotkey/tools/CmdTlmServerAHK2 +17 -17
- data/autohotkey/tools/DataViewer +14 -14
- data/autohotkey/tools/DataViewerAHK +17 -17
- data/autohotkey/tools/HandbookCreatorAHK +20 -20
- data/autohotkey/tools/LauncherAHK +17 -17
- data/autohotkey/tools/LimitsMonitorAHK +20 -20
- data/autohotkey/tools/OpenGLBuilderAHK +20 -20
- data/autohotkey/tools/PacketViewer +14 -14
- data/autohotkey/tools/PacketViewerAHK +18 -18
- data/autohotkey/tools/PacketViewerAHK2 +17 -17
- data/autohotkey/tools/Replay +14 -14
- data/autohotkey/tools/Replay.bat +59 -59
- data/autohotkey/tools/ReplayAHK +17 -17
- data/autohotkey/tools/ScriptRunner +14 -14
- data/autohotkey/tools/ScriptRunnerAHK +20 -20
- data/autohotkey/tools/ScriptRunnerAHK2 +17 -17
- data/autohotkey/tools/TableManager +14 -14
- data/autohotkey/tools/TableManagerAHK +30 -30
- data/autohotkey/tools/TestRunner +15 -15
- data/autohotkey/tools/TestRunnerAHK +17 -17
- data/autohotkey/tools/TestRunnerAHK2 +17 -17
- data/autohotkey/tools/TestRunnerAHK3 +17 -17
- data/autohotkey/tools/TestRunnerAHK4 +17 -17
- data/autohotkey/tools/TlmExtractor +15 -15
- data/autohotkey/tools/TlmExtractorAHK +19 -19
- data/autohotkey/tools/TlmExtractorAHK2 +16 -16
- data/autohotkey/tools/TlmExtractorAHK3 +16 -16
- data/autohotkey/tools/TlmGrapher +14 -14
- data/autohotkey/tools/TlmGrapherAHK +19 -19
- data/autohotkey/tools/TlmGrapherAHK2 +23 -23
- data/autohotkey/tools/TlmGrapherAHK3 +17 -17
- data/autohotkey/tools/TlmGrapherAHK4 +17 -17
- data/autohotkey/tools/TlmViewer +14 -14
- data/autohotkey/tools/TlmViewerAHK +28 -28
- data/autohotkey/tools/TlmViewerAHK2 +18 -18
- data/autohotkey/tools/TlmViewerAHK3 +18 -18
- data/autohotkey/tools/TlmViewerAHK4 +18 -18
- data/autohotkey/tools/TlmViewerAHK5 +18 -18
- data/autohotkey/tools/autohotkey.rb +37 -37
- data/autohotkey/tools/cmd_extractor.ahk +27 -27
- data/autohotkey/tools/cmd_sender.ahk +182 -162
- data/autohotkey/tools/cmd_tlm_server.ahk +89 -89
- data/autohotkey/tools/cmd_tlm_server2.ahk +45 -45
- data/autohotkey/tools/data_viewer.ahk +135 -135
- data/autohotkey/tools/handbook_creator.ahk +23 -23
- data/autohotkey/tools/launcher.ahk +41 -41
- data/autohotkey/tools/limits_monitor.ahk +70 -70
- data/autohotkey/tools/open_gl_builder.ahk +134 -134
- data/autohotkey/tools/packet_viewer.ahk +143 -143
- data/autohotkey/tools/packet_viewer2.ahk +9 -9
- data/autohotkey/tools/replay.ahk +98 -98
- data/autohotkey/tools/script_runner.ahk +589 -589
- data/autohotkey/tools/script_runner2.ahk +34 -31
- data/autohotkey/tools/table_manager.ahk +220 -220
- data/autohotkey/tools/test_runner.ahk +262 -259
- data/autohotkey/tools/test_runner2.ahk +52 -52
- data/autohotkey/tools/test_runner3.ahk +13 -13
- data/autohotkey/tools/tlm_extractor.ahk +272 -272
- data/autohotkey/tools/tlm_grapher.ahk +642 -642
- data/autohotkey/tools/tlm_grapher2.ahk +115 -115
- data/autohotkey/tools/tlm_grapher3.ahk +24 -24
- data/autohotkey/tools/tlm_viewer.ahk +133 -133
- data/autohotkey/tools/tlm_viewer2.ahk +50 -49
- data/autohotkey/tools/tlm_viewer4.ahk +4 -4
- data/autohotkey/tools/tlm_viewer5.ahk +20 -20
- data/bin/cosmos +96 -96
- data/bin/cstol_converter +1166 -1166
- data/bin/rubysloc +85 -85
- data/cosmos.gemspec +98 -97
- data/data/about.txt +4 -4
- data/data/crc.txt +306 -305
- data/data/diamond.STL +57 -57
- data/data/legal.txt +9 -9
- data/demo/Gemfile +6 -6
- data/demo/Launcher +15 -15
- data/demo/Launcher.bat +59 -59
- data/demo/Rakefile +61 -61
- data/demo/config/data/crc.txt +222 -206
- data/demo/config/data/diamond.STL +57 -57
- data/demo/config/data/meta_init.txt +4 -4
- data/demo/config/system/system.txt +34 -34
- data/demo/config/system/system2.txt +33 -33
- data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/demo/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/demo/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/demo/config/targets/COSMOS/screens/version.txt +19 -19
- data/demo/config/targets/COSMOS/target.txt +11 -11
- data/demo/config/targets/EXAMPLE/cmd_tlm/example_cmds.txt +2 -2
- data/demo/config/targets/EXAMPLE/cmd_tlm/example_tlm.txt +3 -3
- data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +6 -6
- data/demo/config/targets/EXAMPLE/lib/example_interface.rb +22 -22
- data/demo/config/targets/EXAMPLE/target.txt +6 -6
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -121
- data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +247 -247
- data/demo/config/targets/INST/cmd_tlm_server.txt +5 -5
- data/demo/config/targets/INST/lib/example_limits_response.rb +30 -30
- data/demo/config/targets/INST/lib/sim_inst.rb +305 -294
- data/demo/config/targets/INST/screens/adcs.txt +46 -46
- data/demo/config/targets/INST/screens/array.txt +15 -15
- data/demo/config/targets/INST/screens/block.txt +8 -8
- data/demo/config/targets/INST/screens/commanding.txt +30 -30
- data/demo/config/targets/INST/screens/graphs.txt +14 -14
- data/demo/config/targets/INST/screens/ground.txt +25 -25
- data/demo/config/targets/INST/screens/hs.txt +44 -44
- data/demo/config/targets/INST/screens/latest.txt +23 -23
- data/demo/config/targets/INST/screens/other.txt +29 -29
- data/demo/config/targets/INST/screens/tabs.txt +70 -70
- data/demo/config/targets/INST/target.txt +33 -33
- data/demo/config/targets/META/cmd_tlm/meta_cmd.txt +10 -10
- data/demo/config/targets/META/cmd_tlm/meta_tlm.txt +13 -13
- data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
- data/demo/config/targets/SYSTEM/cmd_tlm/override.txt +29 -29
- data/demo/config/targets/SYSTEM/screens/status.txt +12 -12
- data/demo/config/targets/TEMPLATED/cmd_tlm/templated_cmds.txt +13 -12
- data/demo/config/targets/TEMPLATED/cmd_tlm/templated_tlm.txt +3 -3
- data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +6 -6
- data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +54 -48
- data/demo/config/targets/TEMPLATED/target.txt +6 -6
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +33 -33
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +29 -29
- data/demo/config/tools/data_viewer/data_viewer.txt +11 -11
- data/demo/config/tools/handbook_creator/handbook_creator.txt +66 -66
- data/demo/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/demo/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/demo/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/demo/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/demo/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/demo/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/demo/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/demo/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/demo/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/demo/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/demo/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/demo/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/demo/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/demo/config/tools/launcher/launcher.txt +45 -45
- data/demo/config/tools/launcher/launcher2.txt +45 -45
- data/demo/config/tools/script_runner/script_runner.txt +3 -3
- data/demo/config/tools/table_manager/ConfigTables_def.txt +8 -8
- data/demo/config/tools/table_manager/ExampleTableDefinition.txt +24 -24
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -25
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -25
- data/demo/config/tools/table_manager/PPSSelectionTable_def.txt +8 -8
- data/demo/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -248
- data/demo/config/tools/test_runner/test_runner.txt +17 -17
- data/demo/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
- data/demo/config/tools/tlm_extractor/tlm_extractor2.txt +2 -2
- data/demo/config/tools/tlm_extractor/tlm_extractor3.txt +2 -2
- data/demo/config/tools/tlm_extractor/tlm_extractor4.txt +2 -2
- data/demo/config/tools/tlm_viewer/tlm_viewer.txt +41 -41
- data/demo/lib/example_background_task.rb +57 -52
- data/demo/lib/example_target.rb +113 -108
- data/demo/lib/scpi_target.rb +74 -74
- data/demo/lib/user_version.rb +3 -3
- data/demo/procedures/checks.rb +11 -11
- data/demo/procedures/clear_util.rb +7 -7
- data/demo/procedures/collect.rb +18 -18
- data/demo/procedures/collect_util.rb +14 -14
- data/demo/procedures/cosmos_api_test.rb +293 -293
- data/demo/procedures/disconnect.rb +29 -29
- data/demo/procedures/example_test.rb +182 -182
- data/demo/procedures/plot_test.rb +8 -8
- data/demo/procedures/run_example_test.rb +3 -3
- data/demo/procedures/test.rb +51 -51
- data/demo/tools/CmdExtractor +15 -15
- data/demo/tools/CmdExtractor.bat +59 -59
- data/demo/tools/CmdSender +15 -15
- data/demo/tools/CmdSender.bat +59 -59
- data/demo/tools/CmdTlmServer +15 -15
- data/demo/tools/CmdTlmServer.bat +59 -59
- data/demo/tools/DataViewer +15 -15
- data/demo/tools/DataViewer.bat +59 -59
- data/demo/tools/ExampleTarget +15 -15
- data/demo/tools/ExampleTarget.bat +59 -59
- data/demo/tools/HandbookCreator +15 -15
- data/demo/tools/HandbookCreator.bat +61 -61
- data/demo/tools/Launcher +15 -15
- data/demo/tools/Launcher.bat +59 -59
- data/demo/tools/LimitsMonitor +15 -15
- data/demo/tools/LimitsMonitor.bat +59 -59
- data/demo/tools/OpenGLBuilder +15 -15
- data/demo/tools/OpenGLBuilder.bat +59 -59
- data/demo/tools/PacketViewer +15 -15
- data/demo/tools/PacketViewer.bat +59 -59
- data/demo/tools/Replay +15 -15
- data/demo/tools/Replay.bat +59 -59
- data/demo/tools/ScpiTarget +15 -15
- data/demo/tools/ScpiTarget.bat +59 -59
- data/demo/tools/ScriptRunner +15 -15
- data/demo/tools/ScriptRunner.bat +59 -59
- data/demo/tools/TableManager +15 -15
- data/demo/tools/TableManager.bat +59 -59
- data/demo/tools/TestRunner +15 -15
- data/demo/tools/TestRunner.bat +59 -59
- data/demo/tools/TlmExtractor +15 -15
- data/demo/tools/TlmExtractor.bat +59 -59
- data/demo/tools/TlmGrapher +15 -15
- data/demo/tools/TlmGrapher.bat +59 -59
- data/demo/tools/TlmViewer +15 -15
- data/demo/tools/TlmViewer.bat +59 -59
- data/demo/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -15
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -15
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -15
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -15
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -15
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -15
- data/demo/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -15
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -15
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -15
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -15
- data/demo/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -15
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -15
- data/demo/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -15
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -15
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -15
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -6
- data/demo/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -15
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -6
- data/ext/cosmos/ext/array/array.c +111 -111
- data/ext/cosmos/ext/array/extconf.rb +13 -13
- data/ext/cosmos/ext/buffered_file/buffered_file.c +167 -167
- data/ext/cosmos/ext/buffered_file/extconf.rb +13 -13
- data/ext/cosmos/ext/config_parser/config_parser.c +237 -237
- data/ext/cosmos/ext/config_parser/extconf.rb +13 -13
- data/ext/cosmos/ext/cosmos_io/cosmos_io.c +117 -117
- data/ext/cosmos/ext/cosmos_io/extconf.rb +13 -13
- data/ext/cosmos/ext/crc/crc.c +341 -341
- data/ext/cosmos/ext/crc/extconf.rb +12 -12
- data/ext/cosmos/ext/line_graph/extconf.rb +13 -13
- data/ext/cosmos/ext/line_graph/line_graph.c +501 -501
- data/ext/cosmos/ext/low_fragmentation_array/extconf.rb +12 -12
- data/ext/cosmos/ext/low_fragmentation_array/low_fragmentation_array.c +261 -261
- data/ext/cosmos/ext/packet/extconf.rb +13 -13
- data/ext/cosmos/ext/packet/packet.c +339 -339
- data/ext/cosmos/ext/platform/extconf.rb +13 -13
- data/ext/cosmos/ext/platform/platform.c +81 -81
- data/ext/cosmos/ext/polynomial_conversion/extconf.rb +13 -13
- data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +73 -73
- data/ext/cosmos/ext/string/extconf.rb +13 -13
- data/ext/cosmos/ext/string/string.c +49 -49
- data/ext/cosmos/ext/structure/structure.c +894 -894
- data/ext/cosmos/ext/tabbed_plots_config/extconf.rb +13 -13
- data/ext/cosmos/ext/tabbed_plots_config/tabbed_plots_config.c +51 -51
- data/ext/cosmos/ext/telemetry/extconf.rb +13 -13
- data/ext/cosmos/ext/telemetry/telemetry.c +306 -306
- data/ext/mkrf_conf.rb +40 -40
- data/install/Gemfile +6 -6
- data/install/Launcher +14 -14
- data/install/Launcher.bat +59 -59
- data/install/Rakefile +61 -61
- data/install/config/data/crc.txt +134 -133
- data/install/config/system/system.txt +29 -29
- data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/install/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/install/config/targets/COSMOS/screens/version.txt +19 -19
- data/install/config/targets/COSMOS/target.txt +8 -8
- data/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
- data/install/config/tools/data_viewer/data_viewer.txt +3 -3
- data/install/config/tools/handbook_creator/handbook_creator.txt +49 -49
- data/install/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
- data/install/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
- data/install/config/tools/handbook_creator/templates/footer.html.erb +9 -9
- data/install/config/tools/handbook_creator/templates/header.html.erb +25 -25
- data/install/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
- data/install/config/tools/handbook_creator/templates/nav.html.erb +27 -27
- data/install/config/tools/handbook_creator/templates/overview.html.erb +1 -1
- data/install/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
- data/install/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
- data/install/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
- data/install/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
- data/install/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
- data/install/config/tools/handbook_creator/templates/title.html.erb +1 -1
- data/install/config/tools/launcher/launcher.txt +39 -39
- data/install/config/tools/script_runner/script_runner.txt +3 -3
- data/install/config/tools/test_runner/test_runner.txt +8 -8
- data/install/config/tools/tlm_viewer/tlm_viewer.txt +5 -5
- data/install/lib/user_version.rb +3 -3
- data/install/tools/CmdExtractor +15 -15
- data/install/tools/CmdExtractor.bat +59 -59
- data/install/tools/CmdSender +15 -15
- data/install/tools/CmdSender.bat +59 -59
- data/install/tools/CmdTlmServer +15 -15
- data/install/tools/CmdTlmServer.bat +59 -59
- data/install/tools/DataViewer +15 -15
- data/install/tools/DataViewer.bat +59 -59
- data/install/tools/HandbookCreator +15 -15
- data/install/tools/HandbookCreator.bat +61 -61
- data/install/tools/Launcher +15 -15
- data/install/tools/Launcher.bat +59 -59
- data/install/tools/LimitsMonitor +15 -15
- data/install/tools/LimitsMonitor.bat +59 -59
- data/install/tools/OpenGLBuilder +15 -15
- data/install/tools/OpenGLBuilder.bat +59 -59
- data/install/tools/PacketViewer +15 -15
- data/install/tools/PacketViewer.bat +59 -59
- data/install/tools/Replay +15 -15
- data/install/tools/Replay.bat +59 -59
- data/install/tools/ScriptRunner +15 -15
- data/install/tools/ScriptRunner.bat +59 -59
- data/install/tools/TableManager +15 -15
- data/install/tools/TableManager.bat +59 -59
- data/install/tools/TestRunner +15 -15
- data/install/tools/TestRunner.bat +59 -59
- data/install/tools/TlmExtractor +15 -15
- data/install/tools/TlmExtractor.bat +59 -59
- data/install/tools/TlmGrapher +15 -15
- data/install/tools/TlmGrapher.bat +59 -59
- data/install/tools/TlmViewer +15 -15
- data/install/tools/TlmViewer.bat +59 -59
- data/install/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -15
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -15
- data/install/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -15
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -15
- data/install/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -15
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/Launcher.app/Contents/Info.plist +38 -38
- data/install/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -15
- data/install/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -15
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -15
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -15
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/Replay.app/Contents/Info.plist +38 -38
- data/install/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -15
- data/install/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -15
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TableManager.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -15
- data/install/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -15
- data/install/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -15
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -15
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -6
- data/install/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -15
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -6
- data/lib/cosmos.rb +63 -63
- data/lib/cosmos/ccsds/ccsds_packet.rb +63 -63
- data/lib/cosmos/ccsds/ccsds_parser.rb +143 -143
- data/lib/cosmos/config/config_parser.rb +324 -324
- data/lib/cosmos/conversions.rb +13 -13
- data/lib/cosmos/conversions/conversion.rb +47 -47
- data/lib/cosmos/conversions/generic_conversion.rb +55 -55
- data/lib/cosmos/conversions/new_packet_log_conversion.rb +45 -45
- data/lib/cosmos/conversions/polynomial_conversion.rb +57 -57
- data/lib/cosmos/conversions/processor_conversion.rb +46 -46
- data/lib/cosmos/conversions/received_count_conversion.rb +33 -33
- data/lib/cosmos/conversions/received_time_formatted_conversion.rb +37 -37
- data/lib/cosmos/conversions/received_time_seconds_conversion.rb +37 -37
- data/lib/cosmos/conversions/segmented_polynomial_conversion.rb +128 -128
- data/lib/cosmos/conversions/unix_time_conversion.rb +50 -50
- data/lib/cosmos/conversions/unix_time_formatted_conversion.rb +44 -44
- data/lib/cosmos/conversions/unix_time_seconds_conversion.rb +44 -44
- data/lib/cosmos/core_ext.rb +18 -18
- data/lib/cosmos/core_ext/array.rb +354 -354
- data/lib/cosmos/core_ext/class.rb +51 -51
- data/lib/cosmos/core_ext/cosmos_io.rb +29 -29
- data/lib/cosmos/core_ext/exception.rb +52 -52
- data/lib/cosmos/core_ext/file.rb +75 -75
- data/lib/cosmos/core_ext/hash.rb +28 -28
- data/lib/cosmos/core_ext/io.rb +75 -75
- data/lib/cosmos/core_ext/kernel.rb +38 -38
- data/lib/cosmos/core_ext/math.rb +119 -119
- data/lib/cosmos/core_ext/matrix.rb +146 -146
- data/lib/cosmos/core_ext/objectspace.rb +29 -29
- data/lib/cosmos/core_ext/range.rb +22 -22
- data/lib/cosmos/core_ext/socket.rb +32 -32
- data/lib/cosmos/core_ext/string.rb +310 -310
- data/lib/cosmos/core_ext/stringio.rb +24 -24
- data/lib/cosmos/core_ext/time.rb +446 -446
- data/lib/cosmos/gui/choosers/combobox_chooser.rb +130 -130
- data/lib/cosmos/gui/choosers/file_chooser.rb +68 -68
- data/lib/cosmos/gui/choosers/float_chooser.rb +82 -82
- data/lib/cosmos/gui/choosers/integer_chooser.rb +80 -80
- data/lib/cosmos/gui/choosers/string_chooser.rb +53 -53
- data/lib/cosmos/gui/choosers/telemetry_chooser.rb +317 -317
- data/lib/cosmos/gui/dialogs/about_dialog.rb +128 -128
- data/lib/cosmos/gui/dialogs/calendar_dialog.rb +136 -136
- data/lib/cosmos/gui/dialogs/cmd_details_dialog.rb +52 -52
- data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +149 -149
- data/lib/cosmos/gui/dialogs/details_dialog.rb +174 -174
- data/lib/cosmos/gui/dialogs/exception_dialog.rb +97 -97
- data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +59 -59
- data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +196 -196
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +169 -168
- data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +118 -118
- data/lib/cosmos/gui/dialogs/progress_dialog.rb +270 -262
- data/lib/cosmos/gui/dialogs/pry_dialog.rb +165 -161
- data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +37 -37
- data/lib/cosmos/gui/dialogs/select_dialog.rb +54 -54
- data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +131 -131
- data/lib/cosmos/gui/dialogs/splash.rb +113 -113
- data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +206 -206
- data/lib/cosmos/gui/dialogs/tlm_edit_dialog.rb +81 -81
- data/lib/cosmos/gui/line_graph/line_graph.rb +456 -456
- data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +34 -34
- data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +494 -494
- data/lib/cosmos/gui/line_graph/line_graph_popups.rb +116 -116
- data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +460 -460
- data/lib/cosmos/gui/line_graph/line_graph_script.rb +26 -26
- data/lib/cosmos/gui/line_graph/lines.rb +290 -290
- data/lib/cosmos/gui/line_graph/overview_graph.rb +459 -459
- data/lib/cosmos/gui/opengl/earth_model.rb +22 -22
- data/lib/cosmos/gui/opengl/gl_bounds.rb +67 -67
- data/lib/cosmos/gui/opengl/gl_light.rb +39 -39
- data/lib/cosmos/gui/opengl/gl_material.rb +29 -29
- data/lib/cosmos/gui/opengl/gl_scene.rb +72 -72
- data/lib/cosmos/gui/opengl/gl_shape.rb +146 -146
- data/lib/cosmos/gui/opengl/gl_viewer.rb +724 -712
- data/lib/cosmos/gui/opengl/gl_viewport.rb +35 -35
- data/lib/cosmos/gui/opengl/moon_model.rb +22 -22
- data/lib/cosmos/gui/opengl/opengl.rb +8 -8
- data/lib/cosmos/gui/opengl/stl_reader.rb +211 -211
- data/lib/cosmos/gui/opengl/stl_shape.rb +124 -124
- data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +202 -202
- data/lib/cosmos/gui/qt.rb +813 -786
- data/lib/cosmos/gui/qt_tool.rb +378 -373
- data/lib/cosmos/gui/text/completion.rb +381 -381
- data/lib/cosmos/gui/text/completion_line_edit.rb +30 -30
- data/lib/cosmos/gui/text/completion_text_edit.rb +179 -179
- data/lib/cosmos/gui/text/ruby_editor.rb +395 -395
- data/lib/cosmos/gui/utilities/screenshot.rb +25 -25
- data/lib/cosmos/gui/utilities/script_module_gui.rb +203 -203
- data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +161 -161
- data/lib/cosmos/gui/widgets/packet_log_frame.rb +305 -305
- data/lib/cosmos/gui/widgets/realtime_button_bar.rb +98 -98
- data/lib/cosmos/interfaces.rb +11 -11
- data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +153 -149
- data/lib/cosmos/interfaces/interface.rb +213 -213
- data/lib/cosmos/interfaces/linc_interface.rb +360 -360
- data/lib/cosmos/interfaces/serial_interface.rb +76 -76
- data/lib/cosmos/interfaces/simulated_target_interface.rb +129 -128
- data/lib/cosmos/interfaces/stream_interface.rb +156 -156
- data/lib/cosmos/interfaces/tcpip_client_interface.rb +60 -60
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +154 -154
- data/lib/cosmos/interfaces/udp_interface.rb +173 -173
- data/lib/cosmos/io/buffered_file.rb +11 -11
- data/lib/cosmos/io/cosmos_snmp.rb +50 -50
- data/lib/cosmos/io/io_multiplexer.rb +89 -89
- data/lib/cosmos/io/json_drb.rb +344 -320
- data/lib/cosmos/io/json_drb_object.rb +137 -137
- data/lib/cosmos/io/json_rpc.rb +365 -365
- data/lib/cosmos/io/posix_serial_driver.rb +145 -145
- data/lib/cosmos/io/raw_logger.rb +174 -174
- data/lib/cosmos/io/raw_logger_pair.rb +71 -71
- data/lib/cosmos/io/serial_driver.rb +85 -85
- data/lib/cosmos/io/stderr.rb +36 -36
- data/lib/cosmos/io/stdout.rb +36 -36
- data/lib/cosmos/io/tcpip_server.rb +583 -532
- data/lib/cosmos/io/udp_sockets.rb +152 -152
- data/lib/cosmos/io/win32_serial_driver.rb +147 -147
- data/lib/cosmos/packet_logs.rb +6 -6
- data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +107 -107
- data/lib/cosmos/packet_logs/packet_log_reader.rb +441 -439
- data/lib/cosmos/packet_logs/packet_log_writer.rb +321 -309
- data/lib/cosmos/packet_logs/packet_log_writer_pair.rb +30 -30
- data/lib/cosmos/packets/binary_accessor.rb +921 -921
- data/lib/cosmos/packets/commands.rb +291 -291
- data/lib/cosmos/packets/limits.rb +263 -263
- data/lib/cosmos/packets/limits_response.rb +38 -38
- data/lib/cosmos/packets/packet.rb +714 -699
- data/lib/cosmos/packets/packet_config.rb +1034 -1034
- data/lib/cosmos/packets/packet_item.rb +317 -317
- data/lib/cosmos/packets/packet_item_limits.rb +128 -128
- data/lib/cosmos/packets/structure.rb +421 -386
- data/lib/cosmos/packets/structure_item.rb +233 -233
- data/lib/cosmos/packets/telemetry.rb +317 -317
- data/lib/cosmos/processors.rb +6 -6
- data/lib/cosmos/processors/new_packet_log_processor.rb +34 -34
- data/lib/cosmos/processors/processor.rb +71 -71
- data/lib/cosmos/processors/statistics_processor.rb +65 -65
- data/lib/cosmos/processors/watermark_processor.rb +44 -44
- data/lib/cosmos/script.rb +9 -9
- data/lib/cosmos/script/extract.rb +115 -115
- data/lib/cosmos/script/script.rb +1513 -1493
- data/lib/cosmos/streams/burst_stream_protocol.rb +25 -25
- data/lib/cosmos/streams/fixed_stream_protocol.rb +111 -111
- data/lib/cosmos/streams/length_stream_protocol.rb +140 -140
- data/lib/cosmos/streams/preidentified_stream_protocol.rb +118 -118
- data/lib/cosmos/streams/serial_stream.rb +152 -143
- data/lib/cosmos/streams/stream.rb +57 -57
- data/lib/cosmos/streams/stream_protocol.rb +369 -369
- data/lib/cosmos/streams/tcpip_client_stream.rb +77 -77
- data/lib/cosmos/streams/tcpip_socket_stream.rb +139 -139
- data/lib/cosmos/streams/template_stream_protocol.rb +140 -140
- data/lib/cosmos/streams/terminated_stream_protocol.rb +81 -81
- data/lib/cosmos/system.rb +4 -4
- data/lib/cosmos/system/system.rb +558 -558
- data/lib/cosmos/system/target.rb +178 -178
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +254 -253
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +716 -716
- data/lib/cosmos/tools/cmd_sender/cmd_sender_item_delegate.rb +77 -77
- data/lib/cosmos/tools/cmd_sender/cmd_sender_text_edit.rb +70 -70
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +936 -940
- data/lib/cosmos/tools/cmd_tlm_server/background_task.rb +46 -46
- data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +67 -63
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +511 -497
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +241 -241
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +1033 -1008
- data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +112 -112
- data/lib/cosmos/tools/cmd_tlm_server/connections.rb +176 -176
- data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +241 -221
- data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +127 -127
- data/lib/cosmos/tools/cmd_tlm_server/packet_logging.rb +132 -132
- data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +66 -66
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +97 -97
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +628 -600
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +167 -167
- data/lib/cosmos/tools/data_viewer/dump_component.rb +40 -40
- data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +149 -149
- data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +360 -360
- data/lib/cosmos/tools/launcher/launcher.rb +184 -184
- data/lib/cosmos/tools/launcher/launcher_config.rb +175 -167
- data/lib/cosmos/tools/launcher/launcher_multitool.rb +40 -41
- data/lib/cosmos/tools/launcher/launcher_tool.rb +104 -104
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +796 -768
- data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +416 -416
- data/lib/cosmos/tools/opengl_builder/scene_config.rb +118 -118
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +525 -525
- data/lib/cosmos/tools/replay/replay.rb +495 -488
- data/lib/cosmos/tools/replay/replay_server.rb +91 -91
- data/lib/cosmos/tools/script_runner/script_audit.rb +147 -139
- data/lib/cosmos/tools/script_runner/script_runner.rb +914 -914
- data/lib/cosmos/tools/script_runner/script_runner_config.rb +40 -40
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +1892 -1859
- data/lib/cosmos/tools/table_manager/table.rb +70 -70
- data/lib/cosmos/tools/table_manager/table_config.rb +764 -764
- data/lib/cosmos/tools/table_manager/table_item.rb +74 -74
- data/lib/cosmos/tools/table_manager/table_manager.rb +1065 -1065
- data/lib/cosmos/tools/table_manager/table_manager_core.rb +539 -539
- data/lib/cosmos/tools/test_runner/results_writer.rb +283 -283
- data/lib/cosmos/tools/test_runner/test.rb +480 -480
- data/lib/cosmos/tools/test_runner/test_runner.rb +1157 -1157
- data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +338 -338
- data/lib/cosmos/tools/tlm_extractor/text_item_chooser.rb +60 -60
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +1008 -1008
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +371 -371
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +60 -60
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +75 -75
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/singlexy_data_object_adder.rb +44 -44
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +94 -94
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/data_object_editor.rb +61 -61
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +180 -180
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/linegraph_data_object_editor.rb +141 -141
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/singlexy_data_object_editor.rb +30 -30
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +173 -173
- data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +177 -177
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +412 -409
- data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +176 -176
- data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +25 -25
- data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +323 -320
- data/lib/cosmos/tools/tlm_grapher/plot_editors/linegraph_plot_editor.rb +181 -181
- data/lib/cosmos/tools/tlm_grapher/plot_editors/plot_editor.rb +28 -28
- data/lib/cosmos/tools/tlm_grapher/plot_editors/singlexy_plot_editor.rb +30 -30
- data/lib/cosmos/tools/tlm_grapher/plot_editors/xy_plot_editor.rb +59 -59
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/linegraph_plot_gui_object.rb +172 -172
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/singlexy_plot_gui_object.rb +27 -27
- data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/xy_plot_gui_object.rb +74 -74
- data/lib/cosmos/tools/tlm_grapher/plots/linegraph_plot.rb +201 -201
- data/lib/cosmos/tools/tlm_grapher/plots/plot.rb +69 -69
- data/lib/cosmos/tools/tlm_grapher/plots/singlexy_plot.rb +20 -20
- data/lib/cosmos/tools/tlm_grapher/plots/xy_plot.rb +61 -61
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1278 -1278
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +430 -430
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_data_object_editor.rb +107 -107
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_logfile_thread.rb +111 -95
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +101 -101
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +72 -66
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tab.rb +57 -57
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +1004 -1004
- data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +87 -87
- data/lib/cosmos/tools/tlm_viewer/screen.rb +486 -458
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +563 -544
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +287 -287
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +53 -53
- data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +110 -110
- data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +70 -70
- data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +61 -61
- data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +39 -39
- data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +62 -62
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +41 -41
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +57 -57
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +56 -56
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +55 -55
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +66 -66
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +124 -124
- data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +31 -31
- data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +30 -30
- data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +36 -36
- data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +35 -35
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +27 -27
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +31 -31
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +26 -26
- data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +29 -29
- data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +39 -39
- data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +38 -38
- data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +38 -38
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +39 -39
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +42 -42
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +34 -34
- data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +178 -178
- data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +54 -54
- data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +47 -47
- data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +116 -116
- data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +34 -34
- data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +30 -30
- data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +57 -57
- data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +34 -34
- data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +35 -35
- data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +33 -33
- data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +26 -26
- data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +28 -28
- data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +47 -47
- data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +26 -26
- data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +88 -88
- data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +27 -27
- data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +130 -130
- data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +46 -46
- data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +43 -43
- data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +35 -35
- data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +37 -37
- data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +257 -257
- data/lib/cosmos/top_level.rb +647 -596
- data/lib/cosmos/utilities.rb +11 -10
- data/lib/cosmos/utilities/crc.rb +166 -166
- data/lib/cosmos/utilities/csv.rb +83 -83
- data/lib/cosmos/utilities/logger.rb +137 -137
- data/lib/cosmos/utilities/low_fragmentation_array.rb +11 -11
- data/lib/cosmos/utilities/message_log.rb +74 -74
- data/lib/cosmos/utilities/quaternion.rb +258 -258
- data/lib/cosmos/utilities/ruby_lex_utils.rb +313 -313
- data/lib/cosmos/utilities/simulated_target.rb +99 -99
- data/lib/cosmos/utilities/sleeper.rb +44 -0
- data/lib/cosmos/version.rb +12 -12
- data/lib/cosmos/win32/excel.rb +66 -66
- data/lib/cosmos/win32/win32.rb +387 -387
- data/lib/cosmos/win32/win32_main.rb +311 -311
- data/roodi.yml +24 -24
- data/run_gui_tests.bat +32 -32
- data/spec/ccsds/ccsds_packet_spec.rb +67 -67
- data/spec/ccsds/ccsds_parser_spec.rb +148 -148
- data/spec/config/config_parser_spec.rb +322 -322
- data/spec/conversions/conversion_spec.rb +31 -31
- data/spec/conversions/generic_conversion_spec.rb +45 -45
- data/spec/conversions/new_packet_log_conversion_spec.rb +39 -39
- data/spec/conversions/polynomial_conversion_spec.rb +40 -40
- data/spec/conversions/processor_conversion_spec.rb +45 -45
- data/spec/conversions/received_count_conversion_spec.rb +43 -43
- data/spec/conversions/received_time_formatted_conversion_spec.rb +49 -49
- data/spec/conversions/received_time_seconds_conversion_spec.rb +50 -50
- data/spec/conversions/segmented_polynomial_conversion_spec.rb +51 -51
- data/spec/conversions/unix_time_formatted_conversion_spec.rb +74 -74
- data/spec/conversions/unix_time_seconds_conversion_spec.rb +76 -76
- data/spec/core_ext/array_spec.rb +186 -186
- data/spec/core_ext/class_spec.rb +36 -36
- data/spec/core_ext/cosmos_io_spec.rb +77 -77
- data/spec/core_ext/exception_spec.rb +91 -91
- data/spec/core_ext/file_spec.rb +72 -72
- data/spec/core_ext/hash_spec.rb +24 -24
- data/spec/core_ext/io_spec.rb +46 -46
- data/spec/core_ext/kernel_spec.rb +54 -54
- data/spec/core_ext/math_spec.rb +116 -116
- data/spec/core_ext/matrix_spec.rb +66 -66
- data/spec/core_ext/objectspace_spec.rb +29 -29
- data/spec/core_ext/range_spec.rb +21 -21
- data/spec/core_ext/socket_spec.rb +32 -32
- data/spec/core_ext/string_spec.rb +223 -223
- data/spec/core_ext/stringio_spec.rb +21 -21
- data/spec/core_ext/time_spec.rb +151 -151
- data/spec/gui/line_graph/line_clip_spec.rb +322 -322
- data/spec/install/config/system/system.txt +33 -33
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
- data/spec/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
- data/spec/install/config/targets/COSMOS/screens/limits_change.txt +20 -20
- data/spec/install/config/targets/COSMOS/screens/version.txt +19 -19
- data/spec/install/config/targets/COSMOS/target.txt +5 -5
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +30 -30
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +111 -111
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +236 -236
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +25 -25
- data/spec/install/config/targets/INST/cmd_tlm_server.txt +5 -5
- data/spec/install/config/targets/INST/lib/sim_inst.rb +305 -294
- data/spec/install/config/targets/INST/target.txt +10 -10
- data/spec/install/config/targets/META/cmd_tlm/meta_cmd.txt +4 -4
- data/spec/install/config/targets/META/cmd_tlm/meta_tlm.txt +4 -4
- data/spec/install/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
- data/spec/interfaces/cmd_tlm_server_interface_spec.rb +150 -150
- data/spec/interfaces/interface_spec.rb +130 -131
- data/spec/interfaces/linc_interface_spec.rb +199 -199
- data/spec/interfaces/serial_interface_spec.rb +56 -56
- data/spec/interfaces/simulated_target_interface_spec.rb +128 -128
- data/spec/interfaces/stream_interface_spec.rb +157 -157
- data/spec/interfaces/tcpip_client_interface_spec.rb +54 -54
- data/spec/interfaces/tcpip_server_interface_spec.rb +151 -151
- data/spec/interfaces/udp_interface_spec.rb +175 -177
- data/spec/io/buffered_file_spec.rb +113 -113
- data/spec/io/io_multiplexer_spec.rb +94 -94
- data/spec/io/json_drb_object_spec.rb +99 -99
- data/spec/io/json_drb_spec.rb +311 -311
- data/spec/io/json_rpc_spec.rb +264 -264
- data/spec/io/raw_logger_pair_spec.rb +76 -76
- data/spec/io/raw_logger_spec.rb +133 -133
- data/spec/io/serial_driver_spec.rb +61 -61
- data/spec/io/stderr_spec.rb +32 -32
- data/spec/io/stdout_spec.rb +32 -32
- data/spec/io/tcpip_server_spec.rb +338 -338
- data/spec/io/udp_sockets_spec.rb +94 -94
- data/spec/io/win32_serial_driver_spec.rb +88 -88
- data/spec/packet_logs/meta_packet_log_writer_spec.rb +170 -170
- data/spec/packet_logs/packet_log_reader_spec.rb +408 -408
- data/spec/packet_logs/packet_log_writer_pair_spec.rb +30 -30
- data/spec/packet_logs/packet_log_writer_spec.rb +223 -223
- data/spec/packets/binary_accessor_spec.rb +2073 -2073
- data/spec/packets/commands_spec.rb +369 -369
- data/spec/packets/limits_response_spec.rb +25 -25
- data/spec/packets/limits_spec.rb +326 -326
- data/spec/packets/packet_config_spec.rb +1620 -1620
- data/spec/packets/packet_item_limits_spec.rb +161 -161
- data/spec/packets/packet_item_spec.rb +386 -386
- data/spec/packets/packet_spec.rb +1057 -949
- data/spec/packets/structure_item_spec.rb +195 -195
- data/spec/packets/structure_spec.rb +419 -419
- data/spec/packets/telemetry_spec.rb +535 -535
- data/spec/processors/new_packet_log_processor_spec.rb +39 -39
- data/spec/processors/processor_spec.rb +55 -55
- data/spec/processors/statistics_processor_spec.rb +60 -60
- data/spec/processors/watermark_processor_spec.rb +51 -51
- data/spec/script/script_spec.rb +654 -654
- data/spec/spec_helper.rb +154 -148
- data/spec/streams/burst_stream_protocol_spec.rb +32 -32
- data/spec/streams/fixed_stream_protocol_spec.rb +110 -110
- data/spec/streams/length_stream_protocol_spec.rb +297 -297
- data/spec/streams/preidentified_stream_protocol_spec.rb +118 -118
- data/spec/streams/serial_stream_spec.rb +105 -105
- data/spec/streams/stream_protocol_spec.rb +332 -332
- data/spec/streams/stream_spec.rb +29 -29
- data/spec/streams/tcpip_client_stream_spec.rb +54 -54
- data/spec/streams/tcpip_socket_stream_spec.rb +146 -146
- data/spec/streams/template_stream_protocol_spec.rb +151 -151
- data/spec/streams/terminated_stream_protocol_spec.rb +123 -123
- data/spec/system/system_spec.rb +645 -645
- data/spec/system/target_spec.rb +248 -248
- data/spec/tools/cmd_tlm_server/api_spec.rb +1087 -1113
- data/spec/tools/cmd_tlm_server/background_task_spec.rb +32 -32
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +81 -81
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +411 -411
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +415 -415
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +123 -123
- data/spec/tools/cmd_tlm_server/connections_spec.rb +147 -147
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +306 -306
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +252 -238
- data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +143 -143
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +98 -101
- data/spec/tools/cmd_tlm_server/routers_spec.rb +223 -208
- data/spec/top_level/top_level_spec.rb +334 -321
- data/spec/utilities/crc_spec.rb +45 -45
- data/spec/utilities/csv_spec.rb +97 -97
- data/spec/utilities/logger_spec.rb +102 -102
- data/spec/utilities/message_log_spec.rb +89 -89
- data/spec/utilities/quaternion_spec.rb +107 -107
- data/spec/utilities/ruby_lex_utils_spec.rb +86 -86
- data/tasks/manifest.rake +22 -22
- data/tasks/spec.rake +23 -23
- metadata +18 -2
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
# encoding: ascii-8bit
|
|
2
|
-
|
|
3
|
-
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
-
# All Rights Reserved.
|
|
5
|
-
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
|
|
11
|
-
require 'spec_helper'
|
|
12
|
-
require 'cosmos/processors/processor'
|
|
13
|
-
|
|
14
|
-
module Cosmos
|
|
15
|
-
|
|
16
|
-
describe NewPacketLogProcessor do
|
|
17
|
-
|
|
18
|
-
describe "initialize" do
|
|
19
|
-
it "should take a packet log writer name" do
|
|
20
|
-
a = NewPacketLogProcessor.new('MINE')
|
|
21
|
-
a.value_type.should eql :CONVERTED
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
describe "call" do
|
|
26
|
-
it "should start logging" do
|
|
27
|
-
log_name = nil
|
|
28
|
-
allow(CmdTlmServer).to receive_message_chain(:instance,:start_logging) do |name|
|
|
29
|
-
log_name = name
|
|
30
|
-
end
|
|
31
|
-
a = NewPacketLogProcessor.new()
|
|
32
|
-
a.call(nil, nil)
|
|
33
|
-
log_name.should eql('ALL')
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
1
|
+
# encoding: ascii-8bit
|
|
2
|
+
|
|
3
|
+
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
+
# All Rights Reserved.
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can modify and/or redistribute it
|
|
7
|
+
# under the terms of the GNU General Public License
|
|
8
|
+
# as published by the Free Software Foundation; version 3 with
|
|
9
|
+
# attribution addendums as found in the LICENSE.txt
|
|
10
|
+
|
|
11
|
+
require 'spec_helper'
|
|
12
|
+
require 'cosmos/processors/processor'
|
|
13
|
+
|
|
14
|
+
module Cosmos
|
|
15
|
+
|
|
16
|
+
describe NewPacketLogProcessor do
|
|
17
|
+
|
|
18
|
+
describe "initialize" do
|
|
19
|
+
it "should take a packet log writer name" do
|
|
20
|
+
a = NewPacketLogProcessor.new('MINE')
|
|
21
|
+
a.value_type.should eql :CONVERTED
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe "call" do
|
|
26
|
+
it "should start logging" do
|
|
27
|
+
log_name = nil
|
|
28
|
+
allow(CmdTlmServer).to receive_message_chain(:instance,:start_logging) do |name|
|
|
29
|
+
log_name = name
|
|
30
|
+
end
|
|
31
|
+
a = NewPacketLogProcessor.new()
|
|
32
|
+
a.call(nil, nil)
|
|
33
|
+
log_name.should eql('ALL')
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
# encoding: ascii-8bit
|
|
2
|
-
|
|
3
|
-
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
-
# All Rights Reserved.
|
|
5
|
-
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
|
|
11
|
-
require 'spec_helper'
|
|
12
|
-
require 'cosmos/processors/processor'
|
|
13
|
-
|
|
14
|
-
module Cosmos
|
|
15
|
-
|
|
16
|
-
describe Processor do
|
|
17
|
-
|
|
18
|
-
describe "initialize" do
|
|
19
|
-
it "should store an optional value_type" do
|
|
20
|
-
a = Processor.new(:RAW)
|
|
21
|
-
a.value_type.should eql :RAW
|
|
22
|
-
b = Processor.new
|
|
23
|
-
b.value_type.should eql :CONVERTED
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
describe "call" do
|
|
28
|
-
it "should raise an exception" do
|
|
29
|
-
expect { Processor.new.call(0, 0) }.to raise_error("call method must be defined by subclass")
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
describe "to_s" do
|
|
34
|
-
it "should return a String" do
|
|
35
|
-
Processor.new.to_s.should eql "Processor"
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
describe "name" do
|
|
40
|
-
it "should have an assignable name" do
|
|
41
|
-
a = Processor.new
|
|
42
|
-
a.name = "Test"
|
|
43
|
-
a.name.should eql "TEST"
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
describe "reset" do
|
|
48
|
-
it "should have a reset method" do
|
|
49
|
-
a = Processor.new
|
|
50
|
-
expect { a.reset }.not_to raise_error
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
1
|
+
# encoding: ascii-8bit
|
|
2
|
+
|
|
3
|
+
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
+
# All Rights Reserved.
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can modify and/or redistribute it
|
|
7
|
+
# under the terms of the GNU General Public License
|
|
8
|
+
# as published by the Free Software Foundation; version 3 with
|
|
9
|
+
# attribution addendums as found in the LICENSE.txt
|
|
10
|
+
|
|
11
|
+
require 'spec_helper'
|
|
12
|
+
require 'cosmos/processors/processor'
|
|
13
|
+
|
|
14
|
+
module Cosmos
|
|
15
|
+
|
|
16
|
+
describe Processor do
|
|
17
|
+
|
|
18
|
+
describe "initialize" do
|
|
19
|
+
it "should store an optional value_type" do
|
|
20
|
+
a = Processor.new(:RAW)
|
|
21
|
+
a.value_type.should eql :RAW
|
|
22
|
+
b = Processor.new
|
|
23
|
+
b.value_type.should eql :CONVERTED
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe "call" do
|
|
28
|
+
it "should raise an exception" do
|
|
29
|
+
expect { Processor.new.call(0, 0) }.to raise_error("call method must be defined by subclass")
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe "to_s" do
|
|
34
|
+
it "should return a String" do
|
|
35
|
+
Processor.new.to_s.should eql "Processor"
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe "name" do
|
|
40
|
+
it "should have an assignable name" do
|
|
41
|
+
a = Processor.new
|
|
42
|
+
a.name = "Test"
|
|
43
|
+
a.name.should eql "TEST"
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
describe "reset" do
|
|
48
|
+
it "should have a reset method" do
|
|
49
|
+
a = Processor.new
|
|
50
|
+
expect { a.reset }.not_to raise_error
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
# encoding: ascii-8bit
|
|
2
|
-
|
|
3
|
-
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
-
# All Rights Reserved.
|
|
5
|
-
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
|
|
11
|
-
require 'spec_helper'
|
|
12
|
-
require 'cosmos'
|
|
13
|
-
require 'cosmos/processors/statistics_processor'
|
|
14
|
-
|
|
15
|
-
module Cosmos
|
|
16
|
-
|
|
17
|
-
describe StatisticsProcessor do
|
|
18
|
-
|
|
19
|
-
describe "initialize" do
|
|
20
|
-
it "should take an item_name, samples_to_average, and value_type" do
|
|
21
|
-
p = StatisticsProcessor.new('TEST', '5', 'RAW')
|
|
22
|
-
p.value_type.should eql :RAW
|
|
23
|
-
p.instance_variable_get("@item_name").should eql 'TEST'
|
|
24
|
-
p.instance_variable_get("@samples_to_average").should eql 5
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
describe "call and reset" do
|
|
29
|
-
it "should generate statistics" do
|
|
30
|
-
p = StatisticsProcessor.new('TEST', '5', 'RAW')
|
|
31
|
-
packet = Packet.new("tgt","pkt")
|
|
32
|
-
packet.append_item("TEST", 8, :UINT)
|
|
33
|
-
packet.buffer= "\x01"
|
|
34
|
-
p.call(packet, packet.buffer)
|
|
35
|
-
p.results[:MAX].should eql 1
|
|
36
|
-
p.results[:MIN].should eql 1
|
|
37
|
-
p.results[:MEAN].should be_within(0.001).of(1.0)
|
|
38
|
-
p.results[:STDDEV].should be_within(0.001).of(0.0)
|
|
39
|
-
packet.buffer= "\x02"
|
|
40
|
-
p.call(packet, packet.buffer)
|
|
41
|
-
p.results[:MAX].should eql 2
|
|
42
|
-
p.results[:MIN].should eql 1
|
|
43
|
-
p.results[:MEAN].should be_within(0.001).of(1.5)
|
|
44
|
-
p.results[:STDDEV].should be_within(0.001).of(0.7071)
|
|
45
|
-
packet.buffer= "\x00"
|
|
46
|
-
p.call(packet, packet.buffer)
|
|
47
|
-
p.results[:MAX].should eql 2
|
|
48
|
-
p.results[:MIN].should eql 0
|
|
49
|
-
p.results[:MEAN].should be_within(0.001).of(1.0)
|
|
50
|
-
p.results[:STDDEV].should be_within(0.001).of(1.0)
|
|
51
|
-
p.reset
|
|
52
|
-
p.results[:MAX].should eql nil
|
|
53
|
-
p.results[:MIN].should eql nil
|
|
54
|
-
p.results[:MEAN].should eql nil
|
|
55
|
-
p.results[:STDDEV].should eql nil
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
1
|
+
# encoding: ascii-8bit
|
|
2
|
+
|
|
3
|
+
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
+
# All Rights Reserved.
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can modify and/or redistribute it
|
|
7
|
+
# under the terms of the GNU General Public License
|
|
8
|
+
# as published by the Free Software Foundation; version 3 with
|
|
9
|
+
# attribution addendums as found in the LICENSE.txt
|
|
10
|
+
|
|
11
|
+
require 'spec_helper'
|
|
12
|
+
require 'cosmos'
|
|
13
|
+
require 'cosmos/processors/statistics_processor'
|
|
14
|
+
|
|
15
|
+
module Cosmos
|
|
16
|
+
|
|
17
|
+
describe StatisticsProcessor do
|
|
18
|
+
|
|
19
|
+
describe "initialize" do
|
|
20
|
+
it "should take an item_name, samples_to_average, and value_type" do
|
|
21
|
+
p = StatisticsProcessor.new('TEST', '5', 'RAW')
|
|
22
|
+
p.value_type.should eql :RAW
|
|
23
|
+
p.instance_variable_get("@item_name").should eql 'TEST'
|
|
24
|
+
p.instance_variable_get("@samples_to_average").should eql 5
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe "call and reset" do
|
|
29
|
+
it "should generate statistics" do
|
|
30
|
+
p = StatisticsProcessor.new('TEST', '5', 'RAW')
|
|
31
|
+
packet = Packet.new("tgt","pkt")
|
|
32
|
+
packet.append_item("TEST", 8, :UINT)
|
|
33
|
+
packet.buffer= "\x01"
|
|
34
|
+
p.call(packet, packet.buffer)
|
|
35
|
+
p.results[:MAX].should eql 1
|
|
36
|
+
p.results[:MIN].should eql 1
|
|
37
|
+
p.results[:MEAN].should be_within(0.001).of(1.0)
|
|
38
|
+
p.results[:STDDEV].should be_within(0.001).of(0.0)
|
|
39
|
+
packet.buffer= "\x02"
|
|
40
|
+
p.call(packet, packet.buffer)
|
|
41
|
+
p.results[:MAX].should eql 2
|
|
42
|
+
p.results[:MIN].should eql 1
|
|
43
|
+
p.results[:MEAN].should be_within(0.001).of(1.5)
|
|
44
|
+
p.results[:STDDEV].should be_within(0.001).of(0.7071)
|
|
45
|
+
packet.buffer= "\x00"
|
|
46
|
+
p.call(packet, packet.buffer)
|
|
47
|
+
p.results[:MAX].should eql 2
|
|
48
|
+
p.results[:MIN].should eql 0
|
|
49
|
+
p.results[:MEAN].should be_within(0.001).of(1.0)
|
|
50
|
+
p.results[:STDDEV].should be_within(0.001).of(1.0)
|
|
51
|
+
p.reset
|
|
52
|
+
p.results[:MAX].should eql nil
|
|
53
|
+
p.results[:MIN].should eql nil
|
|
54
|
+
p.results[:MEAN].should eql nil
|
|
55
|
+
p.results[:STDDEV].should eql nil
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
# encoding: ascii-8bit
|
|
2
|
-
|
|
3
|
-
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
-
# All Rights Reserved.
|
|
5
|
-
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
|
|
11
|
-
require 'spec_helper'
|
|
12
|
-
require 'cosmos'
|
|
13
|
-
require 'cosmos/processors/watermark_processor'
|
|
14
|
-
|
|
15
|
-
module Cosmos
|
|
16
|
-
|
|
17
|
-
describe WatermarkProcessor do
|
|
18
|
-
|
|
19
|
-
describe "initialize" do
|
|
20
|
-
it "should take an item_name and value_type" do
|
|
21
|
-
p = WatermarkProcessor.new('TEST', 'RAW')
|
|
22
|
-
p.value_type.should eql :RAW
|
|
23
|
-
p.instance_variable_get("@item_name").should eql 'TEST'
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
describe "call and reset" do
|
|
28
|
-
it "should generate a high and low water mark" do
|
|
29
|
-
p = WatermarkProcessor.new('TEST', 'RAW')
|
|
30
|
-
packet = Packet.new("tgt","pkt")
|
|
31
|
-
packet.append_item("TEST", 8, :UINT)
|
|
32
|
-
packet.buffer= "\x01"
|
|
33
|
-
p.call(packet, packet.buffer)
|
|
34
|
-
p.results[:HIGH_WATER].should eql 1
|
|
35
|
-
p.results[:LOW_WATER].should eql 1
|
|
36
|
-
packet.buffer= "\x02"
|
|
37
|
-
p.call(packet, packet.buffer)
|
|
38
|
-
p.results[:HIGH_WATER].should eql 2
|
|
39
|
-
p.results[:LOW_WATER].should eql 1
|
|
40
|
-
packet.buffer= "\x00"
|
|
41
|
-
p.call(packet, packet.buffer)
|
|
42
|
-
p.results[:HIGH_WATER].should eql 2
|
|
43
|
-
p.results[:LOW_WATER].should eql 0
|
|
44
|
-
p.reset
|
|
45
|
-
p.results[:HIGH_WATER].should eql nil
|
|
46
|
-
p.results[:LOW_WATER].should eql nil
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
1
|
+
# encoding: ascii-8bit
|
|
2
|
+
|
|
3
|
+
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
+
# All Rights Reserved.
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can modify and/or redistribute it
|
|
7
|
+
# under the terms of the GNU General Public License
|
|
8
|
+
# as published by the Free Software Foundation; version 3 with
|
|
9
|
+
# attribution addendums as found in the LICENSE.txt
|
|
10
|
+
|
|
11
|
+
require 'spec_helper'
|
|
12
|
+
require 'cosmos'
|
|
13
|
+
require 'cosmos/processors/watermark_processor'
|
|
14
|
+
|
|
15
|
+
module Cosmos
|
|
16
|
+
|
|
17
|
+
describe WatermarkProcessor do
|
|
18
|
+
|
|
19
|
+
describe "initialize" do
|
|
20
|
+
it "should take an item_name and value_type" do
|
|
21
|
+
p = WatermarkProcessor.new('TEST', 'RAW')
|
|
22
|
+
p.value_type.should eql :RAW
|
|
23
|
+
p.instance_variable_get("@item_name").should eql 'TEST'
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe "call and reset" do
|
|
28
|
+
it "should generate a high and low water mark" do
|
|
29
|
+
p = WatermarkProcessor.new('TEST', 'RAW')
|
|
30
|
+
packet = Packet.new("tgt","pkt")
|
|
31
|
+
packet.append_item("TEST", 8, :UINT)
|
|
32
|
+
packet.buffer= "\x01"
|
|
33
|
+
p.call(packet, packet.buffer)
|
|
34
|
+
p.results[:HIGH_WATER].should eql 1
|
|
35
|
+
p.results[:LOW_WATER].should eql 1
|
|
36
|
+
packet.buffer= "\x02"
|
|
37
|
+
p.call(packet, packet.buffer)
|
|
38
|
+
p.results[:HIGH_WATER].should eql 2
|
|
39
|
+
p.results[:LOW_WATER].should eql 1
|
|
40
|
+
packet.buffer= "\x00"
|
|
41
|
+
p.call(packet, packet.buffer)
|
|
42
|
+
p.results[:HIGH_WATER].should eql 2
|
|
43
|
+
p.results[:LOW_WATER].should eql 0
|
|
44
|
+
p.reset
|
|
45
|
+
p.results[:HIGH_WATER].should eql nil
|
|
46
|
+
p.results[:LOW_WATER].should eql nil
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
data/spec/script/script_spec.rb
CHANGED
|
@@ -1,654 +1,654 @@
|
|
|
1
|
-
# encoding: ascii-8bit
|
|
2
|
-
|
|
3
|
-
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
-
# All Rights Reserved.
|
|
5
|
-
#
|
|
6
|
-
# This program is free software; you can modify and/or redistribute it
|
|
7
|
-
# under the terms of the GNU General Public License
|
|
8
|
-
# as published by the Free Software Foundation; version 3 with
|
|
9
|
-
# attribution addendums as found in the LICENSE.txt
|
|
10
|
-
|
|
11
|
-
require 'spec_helper'
|
|
12
|
-
require 'cosmos'
|
|
13
|
-
require 'cosmos/script/script'
|
|
14
|
-
require 'tempfile'
|
|
15
|
-
|
|
16
|
-
module Cosmos
|
|
17
|
-
|
|
18
|
-
describe Script do
|
|
19
|
-
|
|
20
|
-
before(:all) do
|
|
21
|
-
cts = File.join(Cosmos::USERPATH,'config','tools','cmd_tlm_server','cmd_tlm_server.txt')
|
|
22
|
-
FileUtils.mkdir_p(File.dirname(cts))
|
|
23
|
-
File.open(cts,'w') do |file|
|
|
24
|
-
file.puts 'INTERFACE INST_INT interface.rb'
|
|
25
|
-
file.puts 'TARGET INST'
|
|
26
|
-
end
|
|
27
|
-
System.class_eval('@@instance = nil')
|
|
28
|
-
|
|
29
|
-
require 'cosmos/script'
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
after(:all) do
|
|
33
|
-
clean_config()
|
|
34
|
-
FileUtils.rm_rf File.join(Cosmos::USERPATH,'config','tools')
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
before(:each) do
|
|
38
|
-
allow_any_instance_of(Interface).to receive(:connected?).and_return(true)
|
|
39
|
-
allow_any_instance_of(Interface).to receive(:disconnect)
|
|
40
|
-
allow_any_instance_of(Interface).to receive(:write)
|
|
41
|
-
allow_any_instance_of(Interface).to receive(:read)
|
|
42
|
-
|
|
43
|
-
@server = CmdTlmServer.new
|
|
44
|
-
shutdown_cmd_tlm()
|
|
45
|
-
initialize_script_module()
|
|
46
|
-
sleep 0.1
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
after(:each) do
|
|
50
|
-
@server.stop
|
|
51
|
-
shutdown_cmd_tlm()
|
|
52
|
-
sleep(0.1)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
describe "cmd" do
|
|
56
|
-
it "should send a command" do
|
|
57
|
-
capture_io do |stdout|
|
|
58
|
-
cmd("INST ABORT")
|
|
59
|
-
stdout.string.should match /cmd\(\'INST ABORT\'\)/ #'
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
it "should check parameter ranges" do
|
|
64
|
-
expect { cmd("INST COLLECT with TYPE NORMAL, DURATION 20") }.to raise_error(/Command parameter 'INST COLLECT DURATION' = 20 not in valid range/)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
it "should prompt for a hazardous command" do
|
|
68
|
-
capture_io do |stdout|
|
|
69
|
-
expect(self).to receive(:gets) { 'y' } # Send hazardous command
|
|
70
|
-
cmd("INST COLLECT with TYPE SPECIAL")
|
|
71
|
-
|
|
72
|
-
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
73
|
-
stdout.string.should match /cmd\(\'INST COLLECT/
|
|
74
|
-
stdout.rewind
|
|
75
|
-
|
|
76
|
-
expect(self).to receive(:gets) { 'n' } # Don't send hazardous
|
|
77
|
-
expect(self).to receive(:gets) { 'n' } # Don't stop running script
|
|
78
|
-
cmd("INST COLLECT with TYPE SPECIAL")
|
|
79
|
-
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
80
|
-
stdout.string.should match "WARN: Hazardous command not sent"
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
describe "cmd_no_range_check" do
|
|
86
|
-
it "should send an out of range command" do
|
|
87
|
-
expect { cmd_no_range_check("INST COLLECT with TYPE NORMAL, DURATION 20") }.to_not raise_error
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
it "should prompt for a hazardous command" do
|
|
91
|
-
capture_io do |stdout|
|
|
92
|
-
expect(self).to receive(:gets) { 'y' } # Send hazardous command
|
|
93
|
-
cmd_no_range_check("INST COLLECT with TYPE SPECIAL")
|
|
94
|
-
|
|
95
|
-
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
96
|
-
stdout.string.should match /cmd\(\'INST COLLECT/
|
|
97
|
-
stdout.rewind
|
|
98
|
-
|
|
99
|
-
expect(self).to receive(:gets) { 'n' } # Don't send hazardous
|
|
100
|
-
expect(self).to receive(:gets) { 'n' } # Don't stop running script
|
|
101
|
-
cmd_no_range_check("INST COLLECT with TYPE SPECIAL")
|
|
102
|
-
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
103
|
-
stdout.string.should match "WARN: Hazardous command not sent"
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
describe "cmd_no_hazardous_check" do
|
|
109
|
-
it "should check parameter ranges" do
|
|
110
|
-
expect { cmd_no_hazardous_check("INST COLLECT with TYPE SPECIAL, DURATION 20") }.to raise_error(/Command parameter 'INST COLLECT DURATION' = 20 not in valid range/)
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
it "should send a hazardous command without prompting" do
|
|
114
|
-
capture_io do |stdout|
|
|
115
|
-
cmd_no_hazardous_check("INST COLLECT with TYPE SPECIAL")
|
|
116
|
-
|
|
117
|
-
stdout.string.should match "Command INST COLLECT being sent ignoring hazardous warnings"
|
|
118
|
-
stdout.string.should match /cmd\(\'INST COLLECT/
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
describe "cmd_no_checks" do
|
|
124
|
-
it "should send an out of range hazardous command without prompting" do
|
|
125
|
-
capture_io do |stdout|
|
|
126
|
-
cmd_no_checks("INST COLLECT with TYPE SPECIAL, DURATION 20")
|
|
127
|
-
|
|
128
|
-
stdout.string.should match "Command INST COLLECT being sent ignoring hazardous warnings"
|
|
129
|
-
stdout.string.should match /cmd\(\'INST COLLECT/
|
|
130
|
-
end
|
|
131
|
-
end
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
describe "cmd_raw" do
|
|
135
|
-
it "should send a command" do
|
|
136
|
-
capture_io do |stdout|
|
|
137
|
-
cmd_raw("INST ABORT")
|
|
138
|
-
stdout.string.should match /cmd_raw\(\'INST ABORT\'\)/
|
|
139
|
-
end
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
it "should check parameter ranges" do
|
|
143
|
-
expect { cmd_raw("INST COLLECT with TYPE 0, DURATION 20") }.to raise_error(/Command parameter 'INST COLLECT DURATION' = 20 not in valid range/) #'
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
it "should prompt for a hazardous command" do
|
|
147
|
-
capture_io do |stdout|
|
|
148
|
-
expect(self).to receive(:gets) { 'y' } # Send hazardous command
|
|
149
|
-
cmd_raw("INST COLLECT with TYPE 1")
|
|
150
|
-
|
|
151
|
-
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
152
|
-
stdout.string.should match /cmd_raw\(\'INST COLLECT/
|
|
153
|
-
stdout.rewind
|
|
154
|
-
|
|
155
|
-
expect(self).to receive(:gets) { 'n' } # Don't send hazardous
|
|
156
|
-
expect(self).to receive(:gets) { 'n' } # Don't stop running script
|
|
157
|
-
cmd_raw("INST COLLECT with TYPE 1")
|
|
158
|
-
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
159
|
-
stdout.string.should match "WARN: Hazardous command not sent"
|
|
160
|
-
end
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
describe "cmd_raw_no_range_check" do
|
|
165
|
-
it "should send an out of range command" do
|
|
166
|
-
expect { cmd_raw_no_range_check("INST COLLECT with TYPE 0, DURATION 20") }.to_not raise_error
|
|
167
|
-
end
|
|
168
|
-
|
|
169
|
-
it "should prompt for a hazardous command" do
|
|
170
|
-
capture_io do |stdout|
|
|
171
|
-
expect(self).to receive(:gets) { 'y' } # Send hazardous command
|
|
172
|
-
cmd_raw_no_range_check("INST COLLECT with TYPE 1")
|
|
173
|
-
|
|
174
|
-
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
175
|
-
stdout.string.should match /cmd_raw\(\'INST COLLECT/
|
|
176
|
-
stdout.rewind
|
|
177
|
-
|
|
178
|
-
expect(self).to receive(:gets) { 'n' } # Don't send hazardous
|
|
179
|
-
expect(self).to receive(:gets) { 'n' } # Don't stop running script
|
|
180
|
-
cmd_raw_no_range_check("INST COLLECT with TYPE 1")
|
|
181
|
-
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
182
|
-
stdout.string.should match "WARN: Hazardous command not sent"
|
|
183
|
-
end
|
|
184
|
-
end
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
describe "cmd_raw_no_hazardous_check" do
|
|
188
|
-
it "should check parameter ranges" do
|
|
189
|
-
expect { cmd_raw_no_hazardous_check("INST COLLECT with TYPE 1, DURATION 20") }.to raise_error(/Command parameter 'INST COLLECT DURATION' = 20 not in valid range/)
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
it "should send a hazardous command without prompting" do
|
|
193
|
-
capture_io do |stdout|
|
|
194
|
-
cmd_raw_no_hazardous_check("INST COLLECT with TYPE 1")
|
|
195
|
-
stdout.string.should match "Command INST COLLECT being sent ignoring hazardous warnings"
|
|
196
|
-
stdout.string.should match /cmd_raw\(\'INST COLLECT/ #'
|
|
197
|
-
end
|
|
198
|
-
end
|
|
199
|
-
end
|
|
200
|
-
|
|
201
|
-
describe "cmd_raw_no_checks" do
|
|
202
|
-
it "should send an out of range hazardous command without prompting" do
|
|
203
|
-
capture_io do |stdout|
|
|
204
|
-
cmd_raw_no_checks("INST COLLECT with TYPE 1, DURATION 20")
|
|
205
|
-
stdout.string.should match "Command INST COLLECT being sent ignoring hazardous warnings"
|
|
206
|
-
stdout.string.should match /cmd_raw\(\'INST COLLECT/ #'
|
|
207
|
-
end
|
|
208
|
-
end
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
describe "send_raw" do
|
|
212
|
-
it "should send data to the write_raw interface method" do
|
|
213
|
-
expect_any_instance_of(Interface).to receive(:write_raw).with('\x00')
|
|
214
|
-
send_raw('INST_INT', '\x00')
|
|
215
|
-
end
|
|
216
|
-
end
|
|
217
|
-
|
|
218
|
-
describe "send_raw_file" do
|
|
219
|
-
it "should send file data to the write_raw interface method" do
|
|
220
|
-
file = File.open('raw_test_file.bin','wb')
|
|
221
|
-
file.write '\x00\x01\x02\x03'
|
|
222
|
-
file.close
|
|
223
|
-
|
|
224
|
-
expect_any_instance_of(Interface).to receive(:write_raw).with('\x00\x01\x02\x03')
|
|
225
|
-
|
|
226
|
-
send_raw_file('INST_INT', 'raw_test_file.bin')
|
|
227
|
-
|
|
228
|
-
File.delete('raw_test_file.bin')
|
|
229
|
-
end
|
|
230
|
-
end
|
|
231
|
-
|
|
232
|
-
describe "get_cmd_list" do
|
|
233
|
-
it "should return all the target commands" do
|
|
234
|
-
list = get_cmd_list("INST")
|
|
235
|
-
# Only check for the collect command to make this test list dependent
|
|
236
|
-
# on the demo INST command definition file
|
|
237
|
-
list.should include(["COLLECT", "Starts a collect on the instrument"])
|
|
238
|
-
end
|
|
239
|
-
end
|
|
240
|
-
|
|
241
|
-
describe "get_cmd_param_list" do
|
|
242
|
-
it "should return all the parameters for a command" do
|
|
243
|
-
list = get_cmd_param_list("INST", "COLLECT")
|
|
244
|
-
list.should include(["TYPE", 0, {"NORMAL"=>0, "SPECIAL"=>1}, "Collect type", nil, nil, true])
|
|
245
|
-
end
|
|
246
|
-
end
|
|
247
|
-
|
|
248
|
-
describe "get_cmd_hazardous" do
|
|
249
|
-
it "should return whether a command is hazardous" do
|
|
250
|
-
get_cmd_hazardous("INST", "COLLECT", {"TYPE"=>"NORMAL"}).should be_falsey
|
|
251
|
-
get_cmd_hazardous("INST", "COLLECT", {"TYPE"=>"SPECIAL"}).should be_truthy
|
|
252
|
-
end
|
|
253
|
-
end
|
|
254
|
-
|
|
255
|
-
describe "tlm, tlm_raw, tlm_formatted, tlm_with_units, tlm_variable, set_tlm, set_tlm_raw" do
|
|
256
|
-
it "should pass through to the cmd_tlm_server" do
|
|
257
|
-
expect {
|
|
258
|
-
tlm("INST HEALTH_STATUS TEMP1").should eql -100.0
|
|
259
|
-
tlm_raw("INST HEALTH_STATUS TEMP1").should eql 0
|
|
260
|
-
tlm_formatted("INST HEALTH_STATUS TEMP1").should eql "-100.000"
|
|
261
|
-
tlm_with_units("INST HEALTH_STATUS TEMP1").should eql "-100.000 C"
|
|
262
|
-
tlm_variable("INST HEALTH_STATUS TEMP1", :RAW).should eql 0
|
|
263
|
-
set_tlm("INST HEALTH_STATUS TEMP1 = 1")
|
|
264
|
-
set_tlm_raw("INST HEALTH_STATUS TEMP1 = 0")
|
|
265
|
-
}.to_not raise_error
|
|
266
|
-
end
|
|
267
|
-
end
|
|
268
|
-
|
|
269
|
-
describe "get_tlm_packet" do
|
|
270
|
-
it "should get the packet values" do
|
|
271
|
-
get_tlm_packet("INST", "HEALTH_STATUS", :RAW).should include(["TEMP1", 0, :RED_LOW])
|
|
272
|
-
end
|
|
273
|
-
end
|
|
274
|
-
|
|
275
|
-
describe "get_tlm_values" do
|
|
276
|
-
it "should get the given values" do
|
|
277
|
-
vals = get_tlm_values([["INST", "HEALTH_STATUS", "TEMP1"], ["INST", "HEALTH_STATUS", "TEMP2"]])
|
|
278
|
-
vals[0][0].should eql -100.0
|
|
279
|
-
vals[1][0].should eql :RED_LOW
|
|
280
|
-
vals[2][0].should eql [-80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
|
|
281
|
-
vals[3].should eql :DEFAULT
|
|
282
|
-
end
|
|
283
|
-
end
|
|
284
|
-
|
|
285
|
-
describe "get_tlm_list" do
|
|
286
|
-
it "should get packets for a given target" do
|
|
287
|
-
get_tlm_list("INST").should include(["HEALTH_STATUS", "Health and status from the instrument"])
|
|
288
|
-
end
|
|
289
|
-
end
|
|
290
|
-
|
|
291
|
-
describe "get_tlm_item_list" do
|
|
292
|
-
it "should get telemetry for a given packet" do
|
|
293
|
-
get_tlm_item_list("INST", "HEALTH_STATUS").should include(["TEMP1",nil,"Temperature #1"])
|
|
294
|
-
end
|
|
295
|
-
end
|
|
296
|
-
|
|
297
|
-
describe "get_tlm_details" do
|
|
298
|
-
it "should get telemetry for a given packet" do
|
|
299
|
-
details = get_tlm_details([["INST", "HEALTH_STATUS", "TEMP1"], ["INST", "HEALTH_STATUS", "TEMP2"]])
|
|
300
|
-
details[0]["name"].should eql "TEMP1"
|
|
301
|
-
details[1]["name"].should eql "TEMP2"
|
|
302
|
-
end
|
|
303
|
-
end
|
|
304
|
-
|
|
305
|
-
describe "get_out_of_limits" do
|
|
306
|
-
it "should get all out of limits items" do
|
|
307
|
-
get_out_of_limits.should include(["INST","HEALTH_STATUS","TEMP1",:RED_LOW])
|
|
308
|
-
end
|
|
309
|
-
end
|
|
310
|
-
|
|
311
|
-
describe "limits_enabled?, disable_limits, enable_limits" do
|
|
312
|
-
it "should enable, disable, and check limits for an item" do
|
|
313
|
-
limits_enabled?("INST HEALTH_STATUS TEMP1").should be_truthy
|
|
314
|
-
disable_limits("INST HEALTH_STATUS TEMP1")
|
|
315
|
-
limits_enabled?("INST HEALTH_STATUS TEMP1").should be_falsey
|
|
316
|
-
enable_limits("INST HEALTH_STATUS TEMP1")
|
|
317
|
-
limits_enabled?("INST HEALTH_STATUS TEMP1").should be_truthy
|
|
318
|
-
end
|
|
319
|
-
end
|
|
320
|
-
|
|
321
|
-
describe "get_limits, set_limits" do
|
|
322
|
-
it "should get and set limits for an item" do
|
|
323
|
-
get_limits("INST", "HEALTH_STATUS", "TEMP1").should eql [:DEFAULT, 1, true, -80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
|
|
324
|
-
set_limits("INST", "HEALTH_STATUS", "TEMP1", 1, 2, 5, 6, 3, 4).should eql [:CUSTOM, 1, true, 1.0, 2.0, 5.0, 6.0, 3.0, 4.0]
|
|
325
|
-
end
|
|
326
|
-
end
|
|
327
|
-
|
|
328
|
-
describe "get_limits_groups, enable_limits_group, disable_limits_group" do
|
|
329
|
-
it "should enable, disable, and get groups" do
|
|
330
|
-
get_limits_groups.should include("FIRST")
|
|
331
|
-
enable_limits_group("FIRST")
|
|
332
|
-
disable_limits_group("FIRST")
|
|
333
|
-
end
|
|
334
|
-
end
|
|
335
|
-
|
|
336
|
-
describe "get_limits_sets, enable_limits_set, disable_limits_set" do
|
|
337
|
-
it "should enable, disable, and get sets CTS-16" do
|
|
338
|
-
if get_limits_sets.include?(:CUSTOM)
|
|
339
|
-
get_limits_sets.should eql [:DEFAULT,:TVAC,:CUSTOM]
|
|
340
|
-
else
|
|
341
|
-
get_limits_sets.should eql [:DEFAULT,:TVAC]
|
|
342
|
-
end
|
|
343
|
-
set_limits_set(:TVAC)
|
|
344
|
-
get_limits_set.should eql :TVAC
|
|
345
|
-
set_limits_set(:DEFAULT)
|
|
346
|
-
get_limits_set.should eql :DEFAULT
|
|
347
|
-
end
|
|
348
|
-
end
|
|
349
|
-
|
|
350
|
-
describe "get_target_list" do
|
|
351
|
-
it "should return the list of targets" do
|
|
352
|
-
get_target_list.should include("INST")
|
|
353
|
-
end
|
|
354
|
-
end
|
|
355
|
-
|
|
356
|
-
describe "subscribe_limits_events, get_limits_event, unsubscribe_limits_events" do
|
|
357
|
-
it "should raise an error if non_block and the queue is empty" do
|
|
358
|
-
id = subscribe_limits_events
|
|
359
|
-
expect { get_limits_event(id, true) }.to raise_error(ThreadError, "queue empty")
|
|
360
|
-
unsubscribe_limits_events(id)
|
|
361
|
-
end
|
|
362
|
-
|
|
363
|
-
it "should subscribe and get limits change events" do
|
|
364
|
-
id = subscribe_limits_events
|
|
365
|
-
CmdTlmServer.instance.post_limits_event(:LIMITS_CHANGE, ['TGT','PKT','ITEM',:YELLOW,:RED])
|
|
366
|
-
result = get_limits_event(id, true)
|
|
367
|
-
result[0].should eql :LIMITS_CHANGE
|
|
368
|
-
unsubscribe_limits_events(id)
|
|
369
|
-
end
|
|
370
|
-
|
|
371
|
-
it "should subscribe and get limits settings events" do
|
|
372
|
-
id = subscribe_limits_events
|
|
373
|
-
CmdTlmServer.instance.post_limits_event(:LIMITS_SETTINGS, ['TGT','PKT','ITEM',:DEFAULT])
|
|
374
|
-
result = get_limits_event(id, true)
|
|
375
|
-
result[0].should eql :LIMITS_SETTINGS
|
|
376
|
-
unsubscribe_limits_events(id)
|
|
377
|
-
end
|
|
378
|
-
end
|
|
379
|
-
|
|
380
|
-
describe "subscribe_packet_data, get_packet, unsubscribe_packet_data" do
|
|
381
|
-
it "should raise an error if non_block and the queue is empty" do
|
|
382
|
-
id = subscribe_packet_data([["INST","HEALTH_STATUS"]])
|
|
383
|
-
expect { get_packet(id, true) }.to raise_error(ThreadError, "queue empty")
|
|
384
|
-
unsubscribe_packet_data(id)
|
|
385
|
-
end
|
|
386
|
-
|
|
387
|
-
it "should subscribe and get limits events" do
|
|
388
|
-
id = subscribe_packet_data([["INST","HEALTH_STATUS"]])
|
|
389
|
-
CmdTlmServer.instance.post_packet(System.telemetry.packet("INST","HEALTH_STATUS"))
|
|
390
|
-
packet = get_packet(id, true)
|
|
391
|
-
packet.target_name.should eql "INST"
|
|
392
|
-
packet.packet_name.should eql "HEALTH_STATUS"
|
|
393
|
-
unsubscribe_packet_data(id)
|
|
394
|
-
end
|
|
395
|
-
end
|
|
396
|
-
|
|
397
|
-
describe "status_bar" do
|
|
398
|
-
it "should set the ScriptRunner status bar" do
|
|
399
|
-
class ScriptRunner; end
|
|
400
|
-
sc = ScriptRunner.new
|
|
401
|
-
expect(sc).to receive(:script_set_status).with("HI")
|
|
402
|
-
status_bar("HI")
|
|
403
|
-
end
|
|
404
|
-
end
|
|
405
|
-
|
|
406
|
-
describe "ask_string, ask" do
|
|
407
|
-
it "should get user input" do
|
|
408
|
-
$stdout = StringIO.new
|
|
409
|
-
expect(self).to receive(:gets) { '10' }
|
|
410
|
-
ask_string("").should eql '10'
|
|
411
|
-
expect(self).to receive(:gets) { '10' }
|
|
412
|
-
ask("").should eql 10
|
|
413
|
-
$stdout = STDOUT
|
|
414
|
-
end
|
|
415
|
-
end
|
|
416
|
-
|
|
417
|
-
describe "prompt, prompt_message_box" do
|
|
418
|
-
it "should prompt the user for input" do
|
|
419
|
-
$stdout = StringIO.new
|
|
420
|
-
expect(self).to receive(:gets) { 'message' }
|
|
421
|
-
prompt("").should eql 'message'
|
|
422
|
-
expect(self).to receive(:gets) { 'b1' }
|
|
423
|
-
message_box("",["b1","b2"]).should eql 'b1'
|
|
424
|
-
$stdout = STDOUT
|
|
425
|
-
end
|
|
426
|
-
end
|
|
427
|
-
|
|
428
|
-
describe "check, check_formatted, check_with_units, check_raw" do
|
|
429
|
-
it "should check a telemetry item vs a condition" do
|
|
430
|
-
capture_io do |stdout|
|
|
431
|
-
check("INST HEALTH_STATUS TEMP1 == -100")
|
|
432
|
-
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == -100 success"
|
|
433
|
-
stdout.rewind
|
|
434
|
-
|
|
435
|
-
check("INST","HEALTH_STATUS","TEMP1","== -100")
|
|
436
|
-
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == -100 success"
|
|
437
|
-
stdout.rewind
|
|
438
|
-
|
|
439
|
-
check_formatted("INST HEALTH_STATUS TEMP1 == '-100.000'")
|
|
440
|
-
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == '-100.000' success"
|
|
441
|
-
stdout.rewind
|
|
442
|
-
|
|
443
|
-
check_formatted("INST","HEALTH_STATUS","TEMP1","== '-100.000'")
|
|
444
|
-
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == '-100.000' success"
|
|
445
|
-
stdout.rewind
|
|
446
|
-
|
|
447
|
-
check_with_units("INST HEALTH_STATUS TEMP1 == '-100.000 C'")
|
|
448
|
-
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == '-100.000 C' success"
|
|
449
|
-
stdout.rewind
|
|
450
|
-
|
|
451
|
-
check_with_units("INST","HEALTH_STATUS","TEMP1","== '-100.000 C'")
|
|
452
|
-
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == '-100.000 C' success"
|
|
453
|
-
stdout.rewind
|
|
454
|
-
|
|
455
|
-
check_raw("INST HEALTH_STATUS TEMP1")
|
|
456
|
-
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == 0"
|
|
457
|
-
end
|
|
458
|
-
|
|
459
|
-
check("INST HEALTH_STATUS TEMP1 < 0")
|
|
460
|
-
expect { check("INST HEALTH_STATUS TEMP1 > 0") }.to raise_error(Cosmos::CheckError)
|
|
461
|
-
end
|
|
462
|
-
end
|
|
463
|
-
|
|
464
|
-
describe "check_tolerance, check_tolerance_raw" do
|
|
465
|
-
it "should check a telemetry item vs tolerance" do
|
|
466
|
-
capture_io do |stdout|
|
|
467
|
-
check_tolerance("INST HEALTH_STATUS TEMP1", -100.0, 1)
|
|
468
|
-
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 was within range"
|
|
469
|
-
stdout.rewind
|
|
470
|
-
|
|
471
|
-
expect { check_tolerance("INST HEALTH_STATUS TEMP1", -200.0, 1) }.to raise_error(CheckError, /CHECK: INST HEALTH_STATUS TEMP1 failed to be within range/)
|
|
472
|
-
stdout.rewind
|
|
473
|
-
|
|
474
|
-
check_tolerance_raw("INST HEALTH_STATUS TEMP1", 0, 1)
|
|
475
|
-
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 was within range"
|
|
476
|
-
stdout.rewind
|
|
477
|
-
|
|
478
|
-
expect { check_tolerance_raw("INST HEALTH_STATUS TEMP1", 100, 1) }.to raise_error(CheckError, /CHECK: INST HEALTH_STATUS TEMP1 failed to be within range/)
|
|
479
|
-
stdout.rewind
|
|
480
|
-
end
|
|
481
|
-
end
|
|
482
|
-
end
|
|
483
|
-
|
|
484
|
-
describe "check_expression" do
|
|
485
|
-
it "should check an arbitrary expression" do
|
|
486
|
-
capture_io do |stdout|
|
|
487
|
-
check_expression("true == true")
|
|
488
|
-
stdout.string.should match "CHECK: true == true is TRUE"
|
|
489
|
-
end
|
|
490
|
-
|
|
491
|
-
expect { check_expression("true == false") }.to raise_error(CheckError, "CHECK: true == false is FALSE")
|
|
492
|
-
end
|
|
493
|
-
end
|
|
494
|
-
|
|
495
|
-
describe "wait, wait_raw, wait_tolerance, wait_tolerance_raw" do
|
|
496
|
-
it "should wait for telemetry check to be true" do
|
|
497
|
-
capture_io do |stdout|
|
|
498
|
-
# Success
|
|
499
|
-
wait("INST HEALTH_STATUS TEMP1 == -100.0", 5)
|
|
500
|
-
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 == -100.0"
|
|
501
|
-
stdout.rewind
|
|
502
|
-
wait_raw("INST HEALTH_STATUS TEMP1 == 0", 5)
|
|
503
|
-
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 == 0"
|
|
504
|
-
stdout.rewind
|
|
505
|
-
wait_tolerance("INST HEALTH_STATUS TEMP1", -100.0, 1, 5)
|
|
506
|
-
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 was within"
|
|
507
|
-
stdout.rewind
|
|
508
|
-
wait_tolerance_raw("INST HEALTH_STATUS TEMP1", 0, 1, 5)
|
|
509
|
-
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 was within"
|
|
510
|
-
stdout.rewind
|
|
511
|
-
|
|
512
|
-
# Failure
|
|
513
|
-
wait("INST HEALTH_STATUS TEMP1 == -200.0", 0.1)
|
|
514
|
-
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 == -200.0 failed"
|
|
515
|
-
stdout.rewind
|
|
516
|
-
wait_raw("INST HEALTH_STATUS TEMP1 == 100", 0.1)
|
|
517
|
-
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 == 100 failed"
|
|
518
|
-
stdout.rewind
|
|
519
|
-
wait_tolerance("INST HEALTH_STATUS TEMP1", -200.0, 1, 0.1)
|
|
520
|
-
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 failed to be within"
|
|
521
|
-
stdout.rewind
|
|
522
|
-
wait_tolerance_raw("INST HEALTH_STATUS TEMP1", 100, 1, 0.1)
|
|
523
|
-
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 failed to be within"
|
|
524
|
-
stdout.rewind
|
|
525
|
-
end
|
|
526
|
-
end
|
|
527
|
-
end
|
|
528
|
-
|
|
529
|
-
describe "wait_expression" do
|
|
530
|
-
it "should wait for an expression to be true" do
|
|
531
|
-
capture_io do |stdout|
|
|
532
|
-
# Success
|
|
533
|
-
wait_expression("true == true", 5)
|
|
534
|
-
stdout.string.should match "WAIT: true == true is TRUE"
|
|
535
|
-
stdout.rewind
|
|
536
|
-
|
|
537
|
-
# Failure
|
|
538
|
-
wait_expression("true == false", 0.1)
|
|
539
|
-
stdout.string.should match "WAIT: true == false is FALSE"
|
|
540
|
-
stdout.rewind
|
|
541
|
-
end
|
|
542
|
-
end
|
|
543
|
-
end
|
|
544
|
-
|
|
545
|
-
describe "wait_check, wait_check_raw, wait_check_tolerance, wait_check_tolerance_raw" do
|
|
546
|
-
it "should wait for telemetry check to be true" do
|
|
547
|
-
capture_io do |stdout|
|
|
548
|
-
# Success
|
|
549
|
-
wait_check("INST HEALTH_STATUS TEMP1 == -100.0", 5)
|
|
550
|
-
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == -100.0"
|
|
551
|
-
stdout.rewind
|
|
552
|
-
wait_check_raw("INST HEALTH_STATUS TEMP1 == 0", 5)
|
|
553
|
-
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == 0"
|
|
554
|
-
stdout.rewind
|
|
555
|
-
wait_check_tolerance("INST HEALTH_STATUS TEMP1", -100.0, 1, 5)
|
|
556
|
-
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 was within"
|
|
557
|
-
stdout.rewind
|
|
558
|
-
wait_check_tolerance_raw("INST HEALTH_STATUS TEMP1", 0, 1, 5)
|
|
559
|
-
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 was within"
|
|
560
|
-
stdout.rewind
|
|
561
|
-
end
|
|
562
|
-
|
|
563
|
-
# Failure
|
|
564
|
-
expect { wait_check("INST HEALTH_STATUS TEMP1 == -200.0", 0.1) }.to raise_error(CheckError, /CHECK: INST HEALTH_STATUS TEMP1 == -200.0 failed/)
|
|
565
|
-
expect { wait_check_raw("INST HEALTH_STATUS TEMP1 == 100", 0.1) }.to raise_error(CheckError, /CHECK: INST HEALTH_STATUS TEMP1 == 100 failed/)
|
|
566
|
-
expect { wait_check_tolerance("INST HEALTH_STATUS TEMP1", -200.0, 1, 0.1) }.to raise_error(CheckError, /CHECK: INST HEALTH_STATUS TEMP1 failed to be within/)
|
|
567
|
-
|
|
568
|
-
expect { wait_check_tolerance_raw("INST HEALTH_STATUS TEMP1", 100, 1, 0.1) }.to raise_error(CheckError, /CHECK: INST HEALTH_STATUS TEMP1 failed to be within/)
|
|
569
|
-
|
|
570
|
-
end
|
|
571
|
-
end
|
|
572
|
-
|
|
573
|
-
describe "wait_check_expression" do
|
|
574
|
-
it "should wait for an expression to be true" do
|
|
575
|
-
capture_io do |stdout|
|
|
576
|
-
# Success
|
|
577
|
-
wait_check_expression("true == true", 5)
|
|
578
|
-
stdout.string.should match "CHECK: true == true is TRUE"
|
|
579
|
-
stdout.rewind
|
|
580
|
-
end
|
|
581
|
-
|
|
582
|
-
# Failure
|
|
583
|
-
expect { wait_check_expression("true == false", 0.1) }.to raise_error(CheckError, /CHECK: true == false is FALSE/)
|
|
584
|
-
end
|
|
585
|
-
end
|
|
586
|
-
|
|
587
|
-
describe "wait_packet, wait_check_packet" do
|
|
588
|
-
it "should wait for a certain number of packets" do
|
|
589
|
-
capture_io do |stdout|
|
|
590
|
-
wait_packet("INST","HEALTH_STATUS",1,0.1)
|
|
591
|
-
end
|
|
592
|
-
|
|
593
|
-
expect { wait_check_packet("INST","HEALTH_STATUS",1,0.1) }.to raise_error(CheckError, /INST HEALTH_STATUS expected to be received 1 times but only received 0 times/)
|
|
594
|
-
end
|
|
595
|
-
end
|
|
596
|
-
|
|
597
|
-
describe "get_interface_names" do
|
|
598
|
-
it "should return all interfaces" do
|
|
599
|
-
get_interface_names.should include("INST_INT")
|
|
600
|
-
end
|
|
601
|
-
end
|
|
602
|
-
|
|
603
|
-
describe "connect_interface, disconnect_interface, interface_state" do
|
|
604
|
-
it "should connect, disconnect and return the state of the interface CTS-3" do
|
|
605
|
-
connect_interface("INST_INT")
|
|
606
|
-
interface_state("INST_INT").should eql "CONNECTED"
|
|
607
|
-
disconnect_interface("INST_INT")
|
|
608
|
-
end
|
|
609
|
-
end
|
|
610
|
-
|
|
611
|
-
describe "map_target_to_interface" do
|
|
612
|
-
it "should map a target name to an interface" do
|
|
613
|
-
map_target_to_interface("INST","INST_INT")
|
|
614
|
-
end
|
|
615
|
-
end
|
|
616
|
-
|
|
617
|
-
describe "connect_router, disconnect_router, get_router_names, router_state" do
|
|
618
|
-
it "should return connect, disconnect, and list the routers CTS-11" do
|
|
619
|
-
get_router_names.should include("PREIDENTIFIED_ROUTER")
|
|
620
|
-
connect_router("PREIDENTIFIED_ROUTER")
|
|
621
|
-
router_state("PREIDENTIFIED_ROUTER").should eql "CONNECTED"
|
|
622
|
-
disconnect_router("PREIDENTIFIED_ROUTER")
|
|
623
|
-
end
|
|
624
|
-
end
|
|
625
|
-
|
|
626
|
-
describe "logging methods" do
|
|
627
|
-
it "should start and stop logging and get filenames CTS-14" do
|
|
628
|
-
start_logging
|
|
629
|
-
stop_logging
|
|
630
|
-
get_cmd_log_filename
|
|
631
|
-
get_tlm_log_filename
|
|
632
|
-
start_cmd_log
|
|
633
|
-
start_tlm_log
|
|
634
|
-
get_cmd_log_filename
|
|
635
|
-
get_tlm_log_filename
|
|
636
|
-
stop_cmd_log
|
|
637
|
-
stop_tlm_log
|
|
638
|
-
get_cmd_log_filename
|
|
639
|
-
get_tlm_log_filename
|
|
640
|
-
start_raw_logging_interface
|
|
641
|
-
start_raw_logging_router
|
|
642
|
-
stop_raw_logging_interface
|
|
643
|
-
stop_raw_logging_router
|
|
644
|
-
|
|
645
|
-
start_new_server_message_log
|
|
646
|
-
sleep 0.1
|
|
647
|
-
filename = get_server_message_log_filename
|
|
648
|
-
filename.should match /server_messages.txt/
|
|
649
|
-
end
|
|
650
|
-
end
|
|
651
|
-
|
|
652
|
-
end
|
|
653
|
-
end
|
|
654
|
-
|
|
1
|
+
# encoding: ascii-8bit
|
|
2
|
+
|
|
3
|
+
# Copyright 2014 Ball Aerospace & Technologies Corp.
|
|
4
|
+
# All Rights Reserved.
|
|
5
|
+
#
|
|
6
|
+
# This program is free software; you can modify and/or redistribute it
|
|
7
|
+
# under the terms of the GNU General Public License
|
|
8
|
+
# as published by the Free Software Foundation; version 3 with
|
|
9
|
+
# attribution addendums as found in the LICENSE.txt
|
|
10
|
+
|
|
11
|
+
require 'spec_helper'
|
|
12
|
+
require 'cosmos'
|
|
13
|
+
require 'cosmos/script/script'
|
|
14
|
+
require 'tempfile'
|
|
15
|
+
|
|
16
|
+
module Cosmos
|
|
17
|
+
|
|
18
|
+
describe Script do
|
|
19
|
+
|
|
20
|
+
before(:all) do
|
|
21
|
+
cts = File.join(Cosmos::USERPATH,'config','tools','cmd_tlm_server','cmd_tlm_server.txt')
|
|
22
|
+
FileUtils.mkdir_p(File.dirname(cts))
|
|
23
|
+
File.open(cts,'w') do |file|
|
|
24
|
+
file.puts 'INTERFACE INST_INT interface.rb'
|
|
25
|
+
file.puts 'TARGET INST'
|
|
26
|
+
end
|
|
27
|
+
System.class_eval('@@instance = nil')
|
|
28
|
+
|
|
29
|
+
require 'cosmos/script'
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
after(:all) do
|
|
33
|
+
clean_config()
|
|
34
|
+
FileUtils.rm_rf File.join(Cosmos::USERPATH,'config','tools')
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
before(:each) do
|
|
38
|
+
allow_any_instance_of(Interface).to receive(:connected?).and_return(true)
|
|
39
|
+
allow_any_instance_of(Interface).to receive(:disconnect)
|
|
40
|
+
allow_any_instance_of(Interface).to receive(:write)
|
|
41
|
+
allow_any_instance_of(Interface).to receive(:read)
|
|
42
|
+
|
|
43
|
+
@server = CmdTlmServer.new
|
|
44
|
+
shutdown_cmd_tlm()
|
|
45
|
+
initialize_script_module()
|
|
46
|
+
sleep 0.1
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
after(:each) do
|
|
50
|
+
@server.stop
|
|
51
|
+
shutdown_cmd_tlm()
|
|
52
|
+
sleep(0.1)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
describe "cmd" do
|
|
56
|
+
it "should send a command" do
|
|
57
|
+
capture_io do |stdout|
|
|
58
|
+
cmd("INST ABORT")
|
|
59
|
+
stdout.string.should match /cmd\(\'INST ABORT\'\)/ #'
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it "should check parameter ranges" do
|
|
64
|
+
expect { cmd("INST COLLECT with TYPE NORMAL, DURATION 20") }.to raise_error(/Command parameter 'INST COLLECT DURATION' = 20 not in valid range/)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "should prompt for a hazardous command" do
|
|
68
|
+
capture_io do |stdout|
|
|
69
|
+
expect(self).to receive(:gets) { 'y' } # Send hazardous command
|
|
70
|
+
cmd("INST COLLECT with TYPE SPECIAL")
|
|
71
|
+
|
|
72
|
+
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
73
|
+
stdout.string.should match /cmd\(\'INST COLLECT/
|
|
74
|
+
stdout.rewind
|
|
75
|
+
|
|
76
|
+
expect(self).to receive(:gets) { 'n' } # Don't send hazardous
|
|
77
|
+
expect(self).to receive(:gets) { 'n' } # Don't stop running script
|
|
78
|
+
cmd("INST COLLECT with TYPE SPECIAL")
|
|
79
|
+
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
80
|
+
stdout.string.should match "WARN: Hazardous command not sent"
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
describe "cmd_no_range_check" do
|
|
86
|
+
it "should send an out of range command" do
|
|
87
|
+
expect { cmd_no_range_check("INST COLLECT with TYPE NORMAL, DURATION 20") }.to_not raise_error
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it "should prompt for a hazardous command" do
|
|
91
|
+
capture_io do |stdout|
|
|
92
|
+
expect(self).to receive(:gets) { 'y' } # Send hazardous command
|
|
93
|
+
cmd_no_range_check("INST COLLECT with TYPE SPECIAL")
|
|
94
|
+
|
|
95
|
+
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
96
|
+
stdout.string.should match /cmd\(\'INST COLLECT/
|
|
97
|
+
stdout.rewind
|
|
98
|
+
|
|
99
|
+
expect(self).to receive(:gets) { 'n' } # Don't send hazardous
|
|
100
|
+
expect(self).to receive(:gets) { 'n' } # Don't stop running script
|
|
101
|
+
cmd_no_range_check("INST COLLECT with TYPE SPECIAL")
|
|
102
|
+
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
103
|
+
stdout.string.should match "WARN: Hazardous command not sent"
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
describe "cmd_no_hazardous_check" do
|
|
109
|
+
it "should check parameter ranges" do
|
|
110
|
+
expect { cmd_no_hazardous_check("INST COLLECT with TYPE SPECIAL, DURATION 20") }.to raise_error(/Command parameter 'INST COLLECT DURATION' = 20 not in valid range/)
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it "should send a hazardous command without prompting" do
|
|
114
|
+
capture_io do |stdout|
|
|
115
|
+
cmd_no_hazardous_check("INST COLLECT with TYPE SPECIAL")
|
|
116
|
+
|
|
117
|
+
stdout.string.should match "Command INST COLLECT being sent ignoring hazardous warnings"
|
|
118
|
+
stdout.string.should match /cmd\(\'INST COLLECT/
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
describe "cmd_no_checks" do
|
|
124
|
+
it "should send an out of range hazardous command without prompting" do
|
|
125
|
+
capture_io do |stdout|
|
|
126
|
+
cmd_no_checks("INST COLLECT with TYPE SPECIAL, DURATION 20")
|
|
127
|
+
|
|
128
|
+
stdout.string.should match "Command INST COLLECT being sent ignoring hazardous warnings"
|
|
129
|
+
stdout.string.should match /cmd\(\'INST COLLECT/
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
describe "cmd_raw" do
|
|
135
|
+
it "should send a command" do
|
|
136
|
+
capture_io do |stdout|
|
|
137
|
+
cmd_raw("INST ABORT")
|
|
138
|
+
stdout.string.should match /cmd_raw\(\'INST ABORT\'\)/
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
it "should check parameter ranges" do
|
|
143
|
+
expect { cmd_raw("INST COLLECT with TYPE 0, DURATION 20") }.to raise_error(/Command parameter 'INST COLLECT DURATION' = 20 not in valid range/) #'
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
it "should prompt for a hazardous command" do
|
|
147
|
+
capture_io do |stdout|
|
|
148
|
+
expect(self).to receive(:gets) { 'y' } # Send hazardous command
|
|
149
|
+
cmd_raw("INST COLLECT with TYPE 1")
|
|
150
|
+
|
|
151
|
+
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
152
|
+
stdout.string.should match /cmd_raw\(\'INST COLLECT/
|
|
153
|
+
stdout.rewind
|
|
154
|
+
|
|
155
|
+
expect(self).to receive(:gets) { 'n' } # Don't send hazardous
|
|
156
|
+
expect(self).to receive(:gets) { 'n' } # Don't stop running script
|
|
157
|
+
cmd_raw("INST COLLECT with TYPE 1")
|
|
158
|
+
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
159
|
+
stdout.string.should match "WARN: Hazardous command not sent"
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
describe "cmd_raw_no_range_check" do
|
|
165
|
+
it "should send an out of range command" do
|
|
166
|
+
expect { cmd_raw_no_range_check("INST COLLECT with TYPE 0, DURATION 20") }.to_not raise_error
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
it "should prompt for a hazardous command" do
|
|
170
|
+
capture_io do |stdout|
|
|
171
|
+
expect(self).to receive(:gets) { 'y' } # Send hazardous command
|
|
172
|
+
cmd_raw_no_range_check("INST COLLECT with TYPE 1")
|
|
173
|
+
|
|
174
|
+
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
175
|
+
stdout.string.should match /cmd_raw\(\'INST COLLECT/
|
|
176
|
+
stdout.rewind
|
|
177
|
+
|
|
178
|
+
expect(self).to receive(:gets) { 'n' } # Don't send hazardous
|
|
179
|
+
expect(self).to receive(:gets) { 'n' } # Don't stop running script
|
|
180
|
+
cmd_raw_no_range_check("INST COLLECT with TYPE 1")
|
|
181
|
+
stdout.string.should match "Warning: Command INST COLLECT is Hazardous"
|
|
182
|
+
stdout.string.should match "WARN: Hazardous command not sent"
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
describe "cmd_raw_no_hazardous_check" do
|
|
188
|
+
it "should check parameter ranges" do
|
|
189
|
+
expect { cmd_raw_no_hazardous_check("INST COLLECT with TYPE 1, DURATION 20") }.to raise_error(/Command parameter 'INST COLLECT DURATION' = 20 not in valid range/)
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
it "should send a hazardous command without prompting" do
|
|
193
|
+
capture_io do |stdout|
|
|
194
|
+
cmd_raw_no_hazardous_check("INST COLLECT with TYPE 1")
|
|
195
|
+
stdout.string.should match "Command INST COLLECT being sent ignoring hazardous warnings"
|
|
196
|
+
stdout.string.should match /cmd_raw\(\'INST COLLECT/ #'
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
describe "cmd_raw_no_checks" do
|
|
202
|
+
it "should send an out of range hazardous command without prompting" do
|
|
203
|
+
capture_io do |stdout|
|
|
204
|
+
cmd_raw_no_checks("INST COLLECT with TYPE 1, DURATION 20")
|
|
205
|
+
stdout.string.should match "Command INST COLLECT being sent ignoring hazardous warnings"
|
|
206
|
+
stdout.string.should match /cmd_raw\(\'INST COLLECT/ #'
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
describe "send_raw" do
|
|
212
|
+
it "should send data to the write_raw interface method" do
|
|
213
|
+
expect_any_instance_of(Interface).to receive(:write_raw).with('\x00')
|
|
214
|
+
send_raw('INST_INT', '\x00')
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
describe "send_raw_file" do
|
|
219
|
+
it "should send file data to the write_raw interface method" do
|
|
220
|
+
file = File.open('raw_test_file.bin','wb')
|
|
221
|
+
file.write '\x00\x01\x02\x03'
|
|
222
|
+
file.close
|
|
223
|
+
|
|
224
|
+
expect_any_instance_of(Interface).to receive(:write_raw).with('\x00\x01\x02\x03')
|
|
225
|
+
|
|
226
|
+
send_raw_file('INST_INT', 'raw_test_file.bin')
|
|
227
|
+
|
|
228
|
+
File.delete('raw_test_file.bin')
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
describe "get_cmd_list" do
|
|
233
|
+
it "should return all the target commands" do
|
|
234
|
+
list = get_cmd_list("INST")
|
|
235
|
+
# Only check for the collect command to make this test list dependent
|
|
236
|
+
# on the demo INST command definition file
|
|
237
|
+
list.should include(["COLLECT", "Starts a collect on the instrument"])
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
describe "get_cmd_param_list" do
|
|
242
|
+
it "should return all the parameters for a command" do
|
|
243
|
+
list = get_cmd_param_list("INST", "COLLECT")
|
|
244
|
+
list.should include(["TYPE", 0, {"NORMAL"=>0, "SPECIAL"=>1}, "Collect type", nil, nil, true])
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
describe "get_cmd_hazardous" do
|
|
249
|
+
it "should return whether a command is hazardous" do
|
|
250
|
+
get_cmd_hazardous("INST", "COLLECT", {"TYPE"=>"NORMAL"}).should be_falsey
|
|
251
|
+
get_cmd_hazardous("INST", "COLLECT", {"TYPE"=>"SPECIAL"}).should be_truthy
|
|
252
|
+
end
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
describe "tlm, tlm_raw, tlm_formatted, tlm_with_units, tlm_variable, set_tlm, set_tlm_raw" do
|
|
256
|
+
it "should pass through to the cmd_tlm_server" do
|
|
257
|
+
expect {
|
|
258
|
+
tlm("INST HEALTH_STATUS TEMP1").should eql -100.0
|
|
259
|
+
tlm_raw("INST HEALTH_STATUS TEMP1").should eql 0
|
|
260
|
+
tlm_formatted("INST HEALTH_STATUS TEMP1").should eql "-100.000"
|
|
261
|
+
tlm_with_units("INST HEALTH_STATUS TEMP1").should eql "-100.000 C"
|
|
262
|
+
tlm_variable("INST HEALTH_STATUS TEMP1", :RAW).should eql 0
|
|
263
|
+
set_tlm("INST HEALTH_STATUS TEMP1 = 1")
|
|
264
|
+
set_tlm_raw("INST HEALTH_STATUS TEMP1 = 0")
|
|
265
|
+
}.to_not raise_error
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
describe "get_tlm_packet" do
|
|
270
|
+
it "should get the packet values" do
|
|
271
|
+
get_tlm_packet("INST", "HEALTH_STATUS", :RAW).should include(["TEMP1", 0, :RED_LOW])
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
describe "get_tlm_values" do
|
|
276
|
+
it "should get the given values" do
|
|
277
|
+
vals = get_tlm_values([["INST", "HEALTH_STATUS", "TEMP1"], ["INST", "HEALTH_STATUS", "TEMP2"]])
|
|
278
|
+
vals[0][0].should eql -100.0
|
|
279
|
+
vals[1][0].should eql :RED_LOW
|
|
280
|
+
vals[2][0].should eql [-80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
|
|
281
|
+
vals[3].should eql :DEFAULT
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
describe "get_tlm_list" do
|
|
286
|
+
it "should get packets for a given target" do
|
|
287
|
+
get_tlm_list("INST").should include(["HEALTH_STATUS", "Health and status from the instrument"])
|
|
288
|
+
end
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
describe "get_tlm_item_list" do
|
|
292
|
+
it "should get telemetry for a given packet" do
|
|
293
|
+
get_tlm_item_list("INST", "HEALTH_STATUS").should include(["TEMP1",nil,"Temperature #1"])
|
|
294
|
+
end
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
describe "get_tlm_details" do
|
|
298
|
+
it "should get telemetry for a given packet" do
|
|
299
|
+
details = get_tlm_details([["INST", "HEALTH_STATUS", "TEMP1"], ["INST", "HEALTH_STATUS", "TEMP2"]])
|
|
300
|
+
details[0]["name"].should eql "TEMP1"
|
|
301
|
+
details[1]["name"].should eql "TEMP2"
|
|
302
|
+
end
|
|
303
|
+
end
|
|
304
|
+
|
|
305
|
+
describe "get_out_of_limits" do
|
|
306
|
+
it "should get all out of limits items" do
|
|
307
|
+
get_out_of_limits.should include(["INST","HEALTH_STATUS","TEMP1",:RED_LOW])
|
|
308
|
+
end
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
describe "limits_enabled?, disable_limits, enable_limits" do
|
|
312
|
+
it "should enable, disable, and check limits for an item" do
|
|
313
|
+
limits_enabled?("INST HEALTH_STATUS TEMP1").should be_truthy
|
|
314
|
+
disable_limits("INST HEALTH_STATUS TEMP1")
|
|
315
|
+
limits_enabled?("INST HEALTH_STATUS TEMP1").should be_falsey
|
|
316
|
+
enable_limits("INST HEALTH_STATUS TEMP1")
|
|
317
|
+
limits_enabled?("INST HEALTH_STATUS TEMP1").should be_truthy
|
|
318
|
+
end
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
describe "get_limits, set_limits" do
|
|
322
|
+
it "should get and set limits for an item" do
|
|
323
|
+
get_limits("INST", "HEALTH_STATUS", "TEMP1").should eql [:DEFAULT, 1, true, -80.0, -70.0, 60.0, 80.0, -20.0, 20.0]
|
|
324
|
+
set_limits("INST", "HEALTH_STATUS", "TEMP1", 1, 2, 5, 6, 3, 4).should eql [:CUSTOM, 1, true, 1.0, 2.0, 5.0, 6.0, 3.0, 4.0]
|
|
325
|
+
end
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
describe "get_limits_groups, enable_limits_group, disable_limits_group" do
|
|
329
|
+
it "should enable, disable, and get groups" do
|
|
330
|
+
get_limits_groups.should include("FIRST")
|
|
331
|
+
enable_limits_group("FIRST")
|
|
332
|
+
disable_limits_group("FIRST")
|
|
333
|
+
end
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
describe "get_limits_sets, enable_limits_set, disable_limits_set" do
|
|
337
|
+
it "should enable, disable, and get sets CTS-16" do
|
|
338
|
+
if get_limits_sets.include?(:CUSTOM)
|
|
339
|
+
get_limits_sets.should eql [:DEFAULT,:TVAC,:CUSTOM]
|
|
340
|
+
else
|
|
341
|
+
get_limits_sets.should eql [:DEFAULT,:TVAC]
|
|
342
|
+
end
|
|
343
|
+
set_limits_set(:TVAC)
|
|
344
|
+
get_limits_set.should eql :TVAC
|
|
345
|
+
set_limits_set(:DEFAULT)
|
|
346
|
+
get_limits_set.should eql :DEFAULT
|
|
347
|
+
end
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
describe "get_target_list" do
|
|
351
|
+
it "should return the list of targets" do
|
|
352
|
+
get_target_list.should include("INST")
|
|
353
|
+
end
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
describe "subscribe_limits_events, get_limits_event, unsubscribe_limits_events" do
|
|
357
|
+
it "should raise an error if non_block and the queue is empty" do
|
|
358
|
+
id = subscribe_limits_events
|
|
359
|
+
expect { get_limits_event(id, true) }.to raise_error(ThreadError, "queue empty")
|
|
360
|
+
unsubscribe_limits_events(id)
|
|
361
|
+
end
|
|
362
|
+
|
|
363
|
+
it "should subscribe and get limits change events" do
|
|
364
|
+
id = subscribe_limits_events
|
|
365
|
+
CmdTlmServer.instance.post_limits_event(:LIMITS_CHANGE, ['TGT','PKT','ITEM',:YELLOW,:RED])
|
|
366
|
+
result = get_limits_event(id, true)
|
|
367
|
+
result[0].should eql :LIMITS_CHANGE
|
|
368
|
+
unsubscribe_limits_events(id)
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
it "should subscribe and get limits settings events" do
|
|
372
|
+
id = subscribe_limits_events
|
|
373
|
+
CmdTlmServer.instance.post_limits_event(:LIMITS_SETTINGS, ['TGT','PKT','ITEM',:DEFAULT])
|
|
374
|
+
result = get_limits_event(id, true)
|
|
375
|
+
result[0].should eql :LIMITS_SETTINGS
|
|
376
|
+
unsubscribe_limits_events(id)
|
|
377
|
+
end
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
describe "subscribe_packet_data, get_packet, unsubscribe_packet_data" do
|
|
381
|
+
it "should raise an error if non_block and the queue is empty" do
|
|
382
|
+
id = subscribe_packet_data([["INST","HEALTH_STATUS"]])
|
|
383
|
+
expect { get_packet(id, true) }.to raise_error(ThreadError, "queue empty")
|
|
384
|
+
unsubscribe_packet_data(id)
|
|
385
|
+
end
|
|
386
|
+
|
|
387
|
+
it "should subscribe and get limits events" do
|
|
388
|
+
id = subscribe_packet_data([["INST","HEALTH_STATUS"]])
|
|
389
|
+
CmdTlmServer.instance.post_packet(System.telemetry.packet("INST","HEALTH_STATUS"))
|
|
390
|
+
packet = get_packet(id, true)
|
|
391
|
+
packet.target_name.should eql "INST"
|
|
392
|
+
packet.packet_name.should eql "HEALTH_STATUS"
|
|
393
|
+
unsubscribe_packet_data(id)
|
|
394
|
+
end
|
|
395
|
+
end
|
|
396
|
+
|
|
397
|
+
describe "status_bar" do
|
|
398
|
+
it "should set the ScriptRunner status bar" do
|
|
399
|
+
class ScriptRunner; end
|
|
400
|
+
sc = ScriptRunner.new
|
|
401
|
+
expect(sc).to receive(:script_set_status).with("HI")
|
|
402
|
+
status_bar("HI")
|
|
403
|
+
end
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
describe "ask_string, ask" do
|
|
407
|
+
it "should get user input" do
|
|
408
|
+
$stdout = StringIO.new
|
|
409
|
+
expect(self).to receive(:gets) { '10' }
|
|
410
|
+
ask_string("").should eql '10'
|
|
411
|
+
expect(self).to receive(:gets) { '10' }
|
|
412
|
+
ask("").should eql 10
|
|
413
|
+
$stdout = STDOUT
|
|
414
|
+
end
|
|
415
|
+
end
|
|
416
|
+
|
|
417
|
+
describe "prompt, prompt_message_box" do
|
|
418
|
+
it "should prompt the user for input" do
|
|
419
|
+
$stdout = StringIO.new
|
|
420
|
+
expect(self).to receive(:gets) { 'message' }
|
|
421
|
+
prompt("").should eql 'message'
|
|
422
|
+
expect(self).to receive(:gets) { 'b1' }
|
|
423
|
+
message_box("",["b1","b2"]).should eql 'b1'
|
|
424
|
+
$stdout = STDOUT
|
|
425
|
+
end
|
|
426
|
+
end
|
|
427
|
+
|
|
428
|
+
describe "check, check_formatted, check_with_units, check_raw" do
|
|
429
|
+
it "should check a telemetry item vs a condition" do
|
|
430
|
+
capture_io do |stdout|
|
|
431
|
+
check("INST HEALTH_STATUS TEMP1 == -100")
|
|
432
|
+
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == -100 success"
|
|
433
|
+
stdout.rewind
|
|
434
|
+
|
|
435
|
+
check("INST","HEALTH_STATUS","TEMP1","== -100")
|
|
436
|
+
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == -100 success"
|
|
437
|
+
stdout.rewind
|
|
438
|
+
|
|
439
|
+
check_formatted("INST HEALTH_STATUS TEMP1 == '-100.000'")
|
|
440
|
+
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == '-100.000' success"
|
|
441
|
+
stdout.rewind
|
|
442
|
+
|
|
443
|
+
check_formatted("INST","HEALTH_STATUS","TEMP1","== '-100.000'")
|
|
444
|
+
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == '-100.000' success"
|
|
445
|
+
stdout.rewind
|
|
446
|
+
|
|
447
|
+
check_with_units("INST HEALTH_STATUS TEMP1 == '-100.000 C'")
|
|
448
|
+
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == '-100.000 C' success"
|
|
449
|
+
stdout.rewind
|
|
450
|
+
|
|
451
|
+
check_with_units("INST","HEALTH_STATUS","TEMP1","== '-100.000 C'")
|
|
452
|
+
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == '-100.000 C' success"
|
|
453
|
+
stdout.rewind
|
|
454
|
+
|
|
455
|
+
check_raw("INST HEALTH_STATUS TEMP1")
|
|
456
|
+
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == 0"
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
check("INST HEALTH_STATUS TEMP1 < 0")
|
|
460
|
+
expect { check("INST HEALTH_STATUS TEMP1 > 0") }.to raise_error(Cosmos::CheckError)
|
|
461
|
+
end
|
|
462
|
+
end
|
|
463
|
+
|
|
464
|
+
describe "check_tolerance, check_tolerance_raw" do
|
|
465
|
+
it "should check a telemetry item vs tolerance" do
|
|
466
|
+
capture_io do |stdout|
|
|
467
|
+
check_tolerance("INST HEALTH_STATUS TEMP1", -100.0, 1)
|
|
468
|
+
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 was within range"
|
|
469
|
+
stdout.rewind
|
|
470
|
+
|
|
471
|
+
expect { check_tolerance("INST HEALTH_STATUS TEMP1", -200.0, 1) }.to raise_error(CheckError, /CHECK: INST HEALTH_STATUS TEMP1 failed to be within range/)
|
|
472
|
+
stdout.rewind
|
|
473
|
+
|
|
474
|
+
check_tolerance_raw("INST HEALTH_STATUS TEMP1", 0, 1)
|
|
475
|
+
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 was within range"
|
|
476
|
+
stdout.rewind
|
|
477
|
+
|
|
478
|
+
expect { check_tolerance_raw("INST HEALTH_STATUS TEMP1", 100, 1) }.to raise_error(CheckError, /CHECK: INST HEALTH_STATUS TEMP1 failed to be within range/)
|
|
479
|
+
stdout.rewind
|
|
480
|
+
end
|
|
481
|
+
end
|
|
482
|
+
end
|
|
483
|
+
|
|
484
|
+
describe "check_expression" do
|
|
485
|
+
it "should check an arbitrary expression" do
|
|
486
|
+
capture_io do |stdout|
|
|
487
|
+
check_expression("true == true")
|
|
488
|
+
stdout.string.should match "CHECK: true == true is TRUE"
|
|
489
|
+
end
|
|
490
|
+
|
|
491
|
+
expect { check_expression("true == false") }.to raise_error(CheckError, "CHECK: true == false is FALSE")
|
|
492
|
+
end
|
|
493
|
+
end
|
|
494
|
+
|
|
495
|
+
describe "wait, wait_raw, wait_tolerance, wait_tolerance_raw" do
|
|
496
|
+
it "should wait for telemetry check to be true" do
|
|
497
|
+
capture_io do |stdout|
|
|
498
|
+
# Success
|
|
499
|
+
wait("INST HEALTH_STATUS TEMP1 == -100.0", 5)
|
|
500
|
+
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 == -100.0"
|
|
501
|
+
stdout.rewind
|
|
502
|
+
wait_raw("INST HEALTH_STATUS TEMP1 == 0", 5)
|
|
503
|
+
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 == 0"
|
|
504
|
+
stdout.rewind
|
|
505
|
+
wait_tolerance("INST HEALTH_STATUS TEMP1", -100.0, 1, 5)
|
|
506
|
+
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 was within"
|
|
507
|
+
stdout.rewind
|
|
508
|
+
wait_tolerance_raw("INST HEALTH_STATUS TEMP1", 0, 1, 5)
|
|
509
|
+
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 was within"
|
|
510
|
+
stdout.rewind
|
|
511
|
+
|
|
512
|
+
# Failure
|
|
513
|
+
wait("INST HEALTH_STATUS TEMP1 == -200.0", 0.1)
|
|
514
|
+
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 == -200.0 failed"
|
|
515
|
+
stdout.rewind
|
|
516
|
+
wait_raw("INST HEALTH_STATUS TEMP1 == 100", 0.1)
|
|
517
|
+
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 == 100 failed"
|
|
518
|
+
stdout.rewind
|
|
519
|
+
wait_tolerance("INST HEALTH_STATUS TEMP1", -200.0, 1, 0.1)
|
|
520
|
+
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 failed to be within"
|
|
521
|
+
stdout.rewind
|
|
522
|
+
wait_tolerance_raw("INST HEALTH_STATUS TEMP1", 100, 1, 0.1)
|
|
523
|
+
stdout.string.should match "WAIT: INST HEALTH_STATUS TEMP1 failed to be within"
|
|
524
|
+
stdout.rewind
|
|
525
|
+
end
|
|
526
|
+
end
|
|
527
|
+
end
|
|
528
|
+
|
|
529
|
+
describe "wait_expression" do
|
|
530
|
+
it "should wait for an expression to be true" do
|
|
531
|
+
capture_io do |stdout|
|
|
532
|
+
# Success
|
|
533
|
+
wait_expression("true == true", 5)
|
|
534
|
+
stdout.string.should match "WAIT: true == true is TRUE"
|
|
535
|
+
stdout.rewind
|
|
536
|
+
|
|
537
|
+
# Failure
|
|
538
|
+
wait_expression("true == false", 0.1)
|
|
539
|
+
stdout.string.should match "WAIT: true == false is FALSE"
|
|
540
|
+
stdout.rewind
|
|
541
|
+
end
|
|
542
|
+
end
|
|
543
|
+
end
|
|
544
|
+
|
|
545
|
+
describe "wait_check, wait_check_raw, wait_check_tolerance, wait_check_tolerance_raw" do
|
|
546
|
+
it "should wait for telemetry check to be true" do
|
|
547
|
+
capture_io do |stdout|
|
|
548
|
+
# Success
|
|
549
|
+
wait_check("INST HEALTH_STATUS TEMP1 == -100.0", 5)
|
|
550
|
+
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == -100.0"
|
|
551
|
+
stdout.rewind
|
|
552
|
+
wait_check_raw("INST HEALTH_STATUS TEMP1 == 0", 5)
|
|
553
|
+
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 == 0"
|
|
554
|
+
stdout.rewind
|
|
555
|
+
wait_check_tolerance("INST HEALTH_STATUS TEMP1", -100.0, 1, 5)
|
|
556
|
+
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 was within"
|
|
557
|
+
stdout.rewind
|
|
558
|
+
wait_check_tolerance_raw("INST HEALTH_STATUS TEMP1", 0, 1, 5)
|
|
559
|
+
stdout.string.should match "CHECK: INST HEALTH_STATUS TEMP1 was within"
|
|
560
|
+
stdout.rewind
|
|
561
|
+
end
|
|
562
|
+
|
|
563
|
+
# Failure
|
|
564
|
+
expect { wait_check("INST HEALTH_STATUS TEMP1 == -200.0", 0.1) }.to raise_error(CheckError, /CHECK: INST HEALTH_STATUS TEMP1 == -200.0 failed/)
|
|
565
|
+
expect { wait_check_raw("INST HEALTH_STATUS TEMP1 == 100", 0.1) }.to raise_error(CheckError, /CHECK: INST HEALTH_STATUS TEMP1 == 100 failed/)
|
|
566
|
+
expect { wait_check_tolerance("INST HEALTH_STATUS TEMP1", -200.0, 1, 0.1) }.to raise_error(CheckError, /CHECK: INST HEALTH_STATUS TEMP1 failed to be within/)
|
|
567
|
+
|
|
568
|
+
expect { wait_check_tolerance_raw("INST HEALTH_STATUS TEMP1", 100, 1, 0.1) }.to raise_error(CheckError, /CHECK: INST HEALTH_STATUS TEMP1 failed to be within/)
|
|
569
|
+
|
|
570
|
+
end
|
|
571
|
+
end
|
|
572
|
+
|
|
573
|
+
describe "wait_check_expression" do
|
|
574
|
+
it "should wait for an expression to be true" do
|
|
575
|
+
capture_io do |stdout|
|
|
576
|
+
# Success
|
|
577
|
+
wait_check_expression("true == true", 5)
|
|
578
|
+
stdout.string.should match "CHECK: true == true is TRUE"
|
|
579
|
+
stdout.rewind
|
|
580
|
+
end
|
|
581
|
+
|
|
582
|
+
# Failure
|
|
583
|
+
expect { wait_check_expression("true == false", 0.1) }.to raise_error(CheckError, /CHECK: true == false is FALSE/)
|
|
584
|
+
end
|
|
585
|
+
end
|
|
586
|
+
|
|
587
|
+
describe "wait_packet, wait_check_packet" do
|
|
588
|
+
it "should wait for a certain number of packets" do
|
|
589
|
+
capture_io do |stdout|
|
|
590
|
+
wait_packet("INST","HEALTH_STATUS",1,0.1)
|
|
591
|
+
end
|
|
592
|
+
|
|
593
|
+
expect { wait_check_packet("INST","HEALTH_STATUS",1,0.1) }.to raise_error(CheckError, /INST HEALTH_STATUS expected to be received 1 times but only received 0 times/)
|
|
594
|
+
end
|
|
595
|
+
end
|
|
596
|
+
|
|
597
|
+
describe "get_interface_names" do
|
|
598
|
+
it "should return all interfaces" do
|
|
599
|
+
get_interface_names.should include("INST_INT")
|
|
600
|
+
end
|
|
601
|
+
end
|
|
602
|
+
|
|
603
|
+
describe "connect_interface, disconnect_interface, interface_state" do
|
|
604
|
+
it "should connect, disconnect and return the state of the interface CTS-3" do
|
|
605
|
+
connect_interface("INST_INT")
|
|
606
|
+
interface_state("INST_INT").should eql "CONNECTED"
|
|
607
|
+
disconnect_interface("INST_INT")
|
|
608
|
+
end
|
|
609
|
+
end
|
|
610
|
+
|
|
611
|
+
describe "map_target_to_interface" do
|
|
612
|
+
it "should map a target name to an interface" do
|
|
613
|
+
map_target_to_interface("INST","INST_INT")
|
|
614
|
+
end
|
|
615
|
+
end
|
|
616
|
+
|
|
617
|
+
describe "connect_router, disconnect_router, get_router_names, router_state" do
|
|
618
|
+
it "should return connect, disconnect, and list the routers CTS-11" do
|
|
619
|
+
get_router_names.should include("PREIDENTIFIED_ROUTER")
|
|
620
|
+
connect_router("PREIDENTIFIED_ROUTER")
|
|
621
|
+
router_state("PREIDENTIFIED_ROUTER").should eql "CONNECTED"
|
|
622
|
+
disconnect_router("PREIDENTIFIED_ROUTER")
|
|
623
|
+
end
|
|
624
|
+
end
|
|
625
|
+
|
|
626
|
+
describe "logging methods" do
|
|
627
|
+
it "should start and stop logging and get filenames CTS-14" do
|
|
628
|
+
start_logging
|
|
629
|
+
stop_logging
|
|
630
|
+
get_cmd_log_filename
|
|
631
|
+
get_tlm_log_filename
|
|
632
|
+
start_cmd_log
|
|
633
|
+
start_tlm_log
|
|
634
|
+
get_cmd_log_filename
|
|
635
|
+
get_tlm_log_filename
|
|
636
|
+
stop_cmd_log
|
|
637
|
+
stop_tlm_log
|
|
638
|
+
get_cmd_log_filename
|
|
639
|
+
get_tlm_log_filename
|
|
640
|
+
start_raw_logging_interface
|
|
641
|
+
start_raw_logging_router
|
|
642
|
+
stop_raw_logging_interface
|
|
643
|
+
stop_raw_logging_router
|
|
644
|
+
|
|
645
|
+
start_new_server_message_log
|
|
646
|
+
sleep 0.1
|
|
647
|
+
filename = get_server_message_log_filename
|
|
648
|
+
filename.should match /server_messages.txt/
|
|
649
|
+
end
|
|
650
|
+
end
|
|
651
|
+
|
|
652
|
+
end
|
|
653
|
+
end
|
|
654
|
+
|