cosmos 3.9.2 → 4.0.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/.rubocop.yml +23 -0
- data/.travis.yml +1 -0
- data/.yardopts +3 -0
- data/Gemfile +1 -1
- data/Manifest.txt +137 -52
- data/Rakefile +50 -44
- data/autohotkey/config/system/system.txt +0 -5
- data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +6 -1
- data/autohotkey/config/targets/INST/screens/extra.txt +19 -0
- data/autohotkey/config/targets/INST/sequences/run_sequence.txt +1 -0
- data/autohotkey/config/targets/META/screens/data.txt +12 -0
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
- data/autohotkey/config/targets/{COSMOS/cmd_tlm/cosmos_server_cmds.txt → SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
- data/autohotkey/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
- data/autohotkey/config/targets/SYSTEM/screens/limits_change.txt +14 -0
- data/autohotkey/config/targets/SYSTEM/screens/meta.txt +14 -0
- data/autohotkey/config/targets/SYSTEM/target.txt +12 -0
- data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
- data/autohotkey/config/tools/test_runner/test_runner2.txt +1 -1
- data/autohotkey/tools/CmdSequence +14 -0
- data/autohotkey/tools/CmdSequenceAHK +23 -0
- data/autohotkey/tools/CmdSequenceAHK2 +16 -0
- data/autohotkey/tools/cmd_extractor.ahk +2 -2
- data/autohotkey/tools/cmd_sender.ahk +4 -6
- data/autohotkey/tools/cmd_sequence.ahk +215 -0
- data/autohotkey/tools/cmd_sequence2.ahk +23 -0
- data/autohotkey/tools/data_viewer.ahk +2 -3
- data/autohotkey/tools/limits_monitor.ahk +9 -11
- data/autohotkey/tools/open_gl_builder.ahk +1 -2
- data/autohotkey/tools/packet_viewer.ahk +51 -35
- data/autohotkey/tools/replay.ahk +1 -2
- data/autohotkey/tools/script_runner.ahk +1 -2
- data/autohotkey/tools/script_runner2.ahk +1 -2
- data/autohotkey/tools/test_runner2.ahk +1 -5
- data/autohotkey/tools/test_runner3.ahk +1 -3
- data/autohotkey/tools/tlm_grapher.ahk +1 -3
- data/autohotkey/tools/tlm_grapher3.ahk +1 -2
- data/autohotkey/tools/tlm_viewer.ahk +8 -3
- data/autohotkey/tools/tlm_viewer2.ahk +2 -3
- data/autohotkey/tools/tlm_viewer5.ahk +1 -2
- data/cosmos.gemspec +26 -20
- data/data/cmd_sequence.png +0 -0
- data/data/config/_array_params.yaml +23 -0
- data/data/config/_id_items.yaml +24 -0
- data/data/config/_id_params.yaml +58 -0
- data/data/config/_interfaces.yaml +206 -0
- data/data/config/_items.yaml +20 -0
- data/data/config/_params.yaml +58 -0
- data/data/config/cmd_tlm_server.yaml +110 -0
- data/data/config/command.yaml +38 -0
- data/data/config/command_modifiers.yaml +127 -0
- data/data/config/command_telemetry.yaml +3 -0
- data/data/config/data_viewer.yaml +43 -0
- data/data/config/handbook_creator.yaml +23 -0
- data/data/config/housekeeping_params.yaml +71 -0
- data/data/config/interface_modifiers.yaml +44 -0
- data/data/config/item_modifiers.yaml +172 -0
- data/data/config/launcher.yaml +117 -0
- data/data/config/limits_monitor.yaml +53 -0
- data/data/config/linegraph_params.yaml +30 -0
- data/data/config/linegraph_plot.yaml +106 -0
- data/data/config/page_modifiers.yaml +128 -0
- data/data/config/param_item_modifiers.yaml +41 -0
- data/data/config/parameter_modifiers.yaml +144 -0
- data/data/config/protocols.yaml +257 -0
- data/data/config/screen.yaml +151 -0
- data/data/config/script_runner.yaml +15 -0
- data/data/config/system.yaml +153 -0
- data/data/config/table_manager.yaml +76 -0
- data/data/config/table_parameter_modifiers.yaml +9 -0
- data/data/config/target.yaml +71 -0
- data/data/config/telemetry.yaml +73 -0
- data/data/config/telemetry_modifiers.yaml +129 -0
- data/data/config/test_runner.yaml +118 -0
- data/data/config/tlm_extractor.yaml +109 -0
- data/data/config/tlm_grapher.yaml +78 -0
- data/data/config/tlm_viewer.yaml +107 -0
- data/data/config/unknown.yaml +3 -0
- data/data/config/widgets.yaml +1339 -0
- data/data/config/xy_params.yaml +50 -0
- data/data/config/xy_plot.yaml +12 -0
- data/data/config_editor.png +0 -0
- data/data/crc.txt +172 -161
- data/data/delete.png +0 -0
- data/demo/config/data/crc.txt +56 -36
- data/demo/config/data/meta_init.txt +1 -4
- data/demo/config/system/system.txt +15 -3
- data/demo/config/system/system2.txt +13 -3
- data/demo/config/targets/EXAMPLE/lib/example_interface.rb +2 -6
- data/demo/config/targets/EXAMPLE/target.txt +3 -1
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -0
- data/demo/config/targets/INST/lib/inst_dump_component.rb +34 -0
- data/demo/config/targets/INST/screens/adcs.txt +39 -15
- data/demo/config/targets/INST/screens/commanding.txt +26 -19
- data/demo/config/targets/INST/screens/spacing_box.txt +44 -0
- data/demo/config/targets/INST/screens/spacing_grid.txt +78 -0
- data/demo/config/targets/INST/screens/tabs.txt +0 -2
- data/demo/config/targets/INST/sequences/sequence.tsv +3 -0
- data/demo/config/targets/INST/tables/EventAction.csv +9 -0
- data/demo/config/targets/INST/tables/EventAction.dat +0 -0
- data/demo/config/targets/INST/tables/McConfigTable.csv +20 -0
- data/demo/config/targets/INST/tables/McConfigTable.dat +0 -0
- data/demo/config/targets/INST/target.txt +4 -0
- data/demo/config/targets/INST/tools/data_viewer/data_viewer.txt +2 -0
- data/demo/config/targets/INST/tools/data_viewer/data_viewer2.txt +2 -0
- data/demo/config/targets/INST/tools/table_manager/EventAction_def.txt +6 -0
- data/demo/config/targets/INST/tools/table_manager/McConfigTable_def.txt +38 -0
- data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -3
- data/demo/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
- data/demo/config/targets/{COSMOS/cmd_tlm/cosmos_server_cmds.txt → SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
- data/demo/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
- data/demo/config/targets/{COSMOS → SYSTEM}/cmd_tlm_server.txt +2 -2
- data/demo/config/targets/SYSTEM/lib/limits_groups.rb +39 -0
- data/demo/config/targets/SYSTEM/screens/status.txt +1 -1
- data/demo/config/targets/SYSTEM/target.txt +12 -0
- data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +1 -1
- data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +8 -5
- data/demo/config/targets/TEMPLATED/target.txt +2 -0
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +15 -6
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +13 -5
- data/demo/config/tools/data_viewer/data_viewer.txt +9 -0
- data/demo/config/tools/launcher/launcher.txt +9 -6
- data/demo/config/tools/launcher/launcher2.txt +16 -13
- data/demo/config/tools/launcher/launcher_mini.txt +45 -0
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +12 -11
- data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +12 -11
- data/demo/config/tools/test_runner/test_runner.txt +1 -1
- data/demo/config/tools/tlm_viewer/tlm_viewer.txt +5 -5
- data/demo/lib/example_background_task.rb +9 -5
- data/demo/lib/example_target.rb +5 -15
- data/demo/lib/scpi_target.rb +4 -10
- data/demo/procedures/cosmos_api_test.rb +17 -0
- data/demo/tools/CmdSequence +16 -0
- data/demo/tools/CmdSequence.bat +9 -0
- data/demo/tools/ConfigEditor +16 -0
- data/demo/tools/ConfigEditor.bat +9 -0
- data/demo/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
- data/ext/cosmos/ext/packet/packet.c +5 -5
- data/install/config/data/crc.txt +12 -8
- data/install/config/system/system.txt +13 -3
- data/install/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +14 -0
- data/install/config/targets/SYSTEM/target.txt +12 -0
- data/install/tools/CmdSequence +16 -0
- data/install/tools/CmdSequence.bat +9 -0
- data/install/tools/ConfigEditor +16 -0
- data/install/tools/ConfigEditor.bat +9 -0
- data/install/tools/mac/CmdSequence.app/Contents/Info.plist +38 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/CmdSequence.rb +16 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +10 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/CmdSequence.app/Contents/Resources/appIcon.icns +0 -0
- data/lib/cosmos.rb +1 -1
- data/lib/cosmos/config/config_parser.rb +147 -59
- data/lib/cosmos/config/meta_config_parser.rb +57 -0
- data/lib/cosmos/conversions/polynomial_conversion.rb +20 -4
- data/lib/cosmos/conversions/unix_time_conversion.rb +4 -4
- data/lib/cosmos/core_ext/array.rb +45 -5
- data/lib/cosmos/core_ext/cosmos_io.rb +31 -15
- data/lib/cosmos/core_ext/file.rb +2 -2
- data/lib/cosmos/core_ext/kernel.rb +1 -6
- data/lib/cosmos/core_ext/objectspace.rb +0 -2
- data/lib/cosmos/core_ext/string.rb +27 -4
- data/lib/cosmos/core_ext/time.rb +39 -10
- data/lib/cosmos/gui/choosers/combobox_chooser.rb +37 -26
- data/lib/cosmos/gui/choosers/file_chooser.rb +23 -6
- data/lib/cosmos/gui/choosers/float_chooser.rb +13 -11
- data/lib/cosmos/gui/choosers/integer_chooser.rb +13 -11
- data/lib/cosmos/gui/choosers/string_chooser.rb +18 -36
- data/lib/cosmos/gui/choosers/telemetry_chooser.rb +64 -64
- data/lib/cosmos/gui/choosers/value_chooser.rb +15 -15
- data/lib/cosmos/gui/dialogs/about_dialog.rb +18 -13
- data/lib/cosmos/gui/dialogs/calendar_dialog.rb +11 -3
- data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/details_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/exception_dialog.rb +7 -7
- data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +20 -15
- data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +143 -0
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +6 -5
- data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +5 -2
- data/lib/cosmos/gui/dialogs/progress_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/pry_dialog.rb +4 -4
- data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +3 -0
- data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +7 -6
- data/lib/cosmos/gui/dialogs/splash.rb +1 -1
- data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +114 -0
- data/lib/cosmos/gui/line_graph/line_graph.rb +9 -10
- data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +7 -5
- data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +3 -7
- data/lib/cosmos/gui/line_graph/line_graph_popups.rb +3 -8
- data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +2 -7
- data/lib/cosmos/gui/line_graph/overview_graph.rb +6 -1
- data/lib/cosmos/gui/opengl/earth_model.rb +6 -3
- data/lib/cosmos/gui/opengl/gl_bounds.rb +11 -23
- data/lib/cosmos/gui/opengl/gl_light.rb +3 -4
- data/lib/cosmos/gui/opengl/gl_material.rb +3 -4
- data/lib/cosmos/gui/opengl/gl_scene.rb +10 -4
- data/lib/cosmos/gui/opengl/gl_shape.rb +6 -2
- data/lib/cosmos/gui/opengl/gl_viewer.rb +5 -5
- data/lib/cosmos/gui/opengl/gl_viewport.rb +11 -12
- data/lib/cosmos/gui/opengl/moon_model.rb +6 -3
- data/lib/cosmos/gui/opengl/stl_reader.rb +8 -9
- data/lib/cosmos/gui/opengl/stl_shape.rb +4 -5
- data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +7 -7
- data/lib/cosmos/gui/qt.rb +1 -1
- data/lib/cosmos/gui/qt_tool.rb +21 -10
- data/lib/cosmos/gui/text/completion.rb +23 -2
- data/lib/cosmos/gui/text/completion_text_edit.rb +38 -23
- data/lib/cosmos/gui/utilities/analyze_log.rb +1 -1
- data/lib/cosmos/gui/utilities/screenshot.rb +2 -2
- data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +11 -1
- data/lib/cosmos/gui/widgets/packet_log_frame.rb +19 -6
- data/lib/cosmos/interfaces.rb +10 -0
- data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +28 -47
- data/lib/cosmos/interfaces/interface.rb +240 -22
- data/lib/cosmos/interfaces/linc_interface.rb +3 -5
- data/lib/cosmos/interfaces/protocols/burst_protocol.rb +173 -0
- data/lib/cosmos/interfaces/protocols/crc_protocol.rb +141 -0
- data/lib/cosmos/{streams/fixed_stream_protocol.rb → interfaces/protocols/fixed_protocol.rb} +40 -37
- data/lib/cosmos/{streams/length_stream_protocol.rb → interfaces/protocols/length_protocol.rb} +55 -48
- data/lib/cosmos/interfaces/protocols/override_protocol.rb +52 -0
- data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +141 -0
- data/lib/cosmos/interfaces/protocols/protocol.rb +60 -0
- data/lib/cosmos/interfaces/protocols/template_protocol.rb +209 -0
- data/lib/cosmos/interfaces/protocols/terminated_protocol.rb +81 -0
- data/lib/cosmos/interfaces/serial_interface.rb +28 -23
- data/lib/cosmos/interfaces/simulated_target_interface.rb +27 -16
- data/lib/cosmos/interfaces/stream_interface.rb +36 -108
- data/lib/cosmos/interfaces/tcpip_client_interface.rb +21 -21
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +555 -94
- data/lib/cosmos/interfaces/udp_interface.rb +51 -83
- data/lib/cosmos/io/buffered_file.rb +92 -2
- data/lib/cosmos/io/json_drb.rb +2 -2
- data/lib/cosmos/io/posix_serial_driver.rb +3 -1
- data/lib/cosmos/io/raw_logger.rb +3 -3
- data/lib/cosmos/io/serial_driver.rb +14 -5
- data/lib/cosmos/io/win32_serial_driver.rb +16 -4
- data/lib/cosmos/packet_logs.rb +0 -1
- data/lib/cosmos/packet_logs/packet_log_reader.rb +11 -1
- data/lib/cosmos/packet_logs/packet_log_writer.rb +31 -13
- data/lib/cosmos/packets/binary_accessor.rb +599 -32
- data/lib/cosmos/packets/commands.rb +48 -24
- data/lib/cosmos/packets/packet.rb +140 -54
- data/lib/cosmos/packets/packet_config.rb +0 -2
- data/lib/cosmos/packets/parsers/packet_item_parser.rb +10 -2
- data/lib/cosmos/packets/structure.rb +81 -33
- data/lib/cosmos/packets/structure_item.rb +45 -5
- data/lib/cosmos/packets/telemetry.rb +149 -55
- data/lib/cosmos/script/api_shared.rb +1000 -0
- data/lib/cosmos/script/commands.rb +2 -2
- data/lib/cosmos/script/extract.rb +19 -4
- data/lib/cosmos/script/limits.rb +2 -0
- data/lib/cosmos/script/script.rb +1 -1
- data/lib/cosmos/script/scripting.rb +4 -784
- data/lib/cosmos/script/telemetry.rb +44 -23
- data/lib/cosmos/script/tools.rb +15 -69
- data/lib/cosmos/streams/serial_stream.rb +12 -19
- data/lib/cosmos/streams/stream.rb +2 -11
- data/lib/cosmos/streams/tcpip_socket_stream.rb +3 -13
- data/lib/cosmos/system/system.rb +187 -31
- data/lib/cosmos/system/target.rb +11 -2
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +12 -11
- data/lib/cosmos/tools/cmd_sender/{cmd_sender_item_delegate.rb → cmd_param_table_item_delegate.rb} +11 -10
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +209 -164
- data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +652 -0
- data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +510 -0
- data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +194 -0
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +179 -5
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +31 -14
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +23 -16
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +92 -20
- data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +1 -1
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +17 -4
- data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +0 -5
- data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +1 -2
- data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +4 -4
- data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +121 -0
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +8 -4
- data/lib/cosmos/tools/config_editor/config_editor.rb +720 -0
- data/lib/cosmos/tools/config_editor/config_editor_frame.rb +675 -0
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +44 -27
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +8 -22
- data/lib/cosmos/tools/launcher/launcher.rb +29 -12
- data/lib/cosmos/tools/launcher/launcher_config.rb +1 -1
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +153 -42
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +44 -6
- data/lib/cosmos/tools/replay/replay.rb +36 -20
- data/lib/cosmos/tools/replay/replay_server.rb +1 -1
- data/lib/cosmos/tools/script_runner/script_runner_config.rb +1 -1
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +31 -21
- data/lib/cosmos/tools/table_manager/table_config.rb +9 -3
- data/lib/cosmos/tools/table_manager/table_manager.rb +27 -7
- data/lib/cosmos/tools/test_runner/results_writer.rb +6 -6
- data/lib/cosmos/tools/test_runner/test_runner.rb +4 -6
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +4 -5
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +1 -1
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +1 -1
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +23 -6
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +44 -3
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +20 -7
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1 -1
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +11 -4
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +2 -2
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +1 -1
- data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +16 -0
- data/lib/cosmos/tools/tlm_viewer/screen.rb +36 -32
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +59 -50
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +2 -2
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +1 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +1 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +22 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +9 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +55 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +3 -2
- data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +3 -2
- data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +12 -12
- data/lib/cosmos/top_level.rb +34 -24
- data/lib/cosmos/utilities/crc.rb +108 -6
- data/lib/cosmos/utilities/csv.rb +68 -14
- data/lib/cosmos/utilities/logger.rb +2 -2
- data/lib/cosmos/utilities/low_fragmentation_array.rb +9 -1
- data/lib/cosmos/version.rb +6 -6
- data/lib/cosmos/win32/win32_main.rb +50 -46
- data/run_gui_tests.bat +3 -1
- data/spec/conversions/unix_time_formatted_conversion_spec.rb +2 -2
- data/spec/conversions/unix_time_seconds_conversion_spec.rb +2 -2
- data/spec/core_ext/file_spec.rb +1 -1
- data/spec/core_ext/objectspace_spec.rb +12 -9
- data/spec/core_ext/string_spec.rb +6 -0
- data/spec/core_ext/time_spec.rb +10 -0
- data/spec/gui/line_graph/line_clip_spec.rb +226 -224
- data/spec/gui/qt_spec.rb +81 -79
- data/spec/install/config/system/system.txt +0 -6
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +5 -5
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +8 -8
- data/spec/install/config/targets/SYSTEM/cmd_tlm/meta_cmd_tlm.txt +16 -0
- data/{install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt → spec/install/config/targets/SYSTEM/cmd_tlm/system_cmds.txt} +8 -8
- data/spec/install/config/targets/SYSTEM/cmd_tlm/system_tlm.txt +7 -0
- data/spec/install/config/targets/{COSMOS → SYSTEM}/cmd_tlm_server.txt +2 -2
- data/spec/install/config/targets/SYSTEM/screens/status.txt +12 -0
- data/spec/install/config/targets/SYSTEM/target.txt +12 -0
- data/spec/interfaces/cmd_tlm_server_interface_spec.rb +9 -13
- data/spec/interfaces/interface_spec.rb +402 -18
- data/spec/interfaces/linc_interface_spec.rb +37 -39
- data/spec/interfaces/protocols/burst_protocol_spec.rb +300 -0
- data/spec/interfaces/protocols/crc_protocol_spec.rb +709 -0
- data/spec/interfaces/protocols/fixed_protocol_spec.rb +119 -0
- data/spec/interfaces/protocols/length_protocol_spec.rb +499 -0
- data/spec/interfaces/protocols/override_protocol_spec.rb +158 -0
- data/spec/interfaces/protocols/preidentified_protocol_spec.rb +149 -0
- data/spec/interfaces/protocols/template_protocol_spec.rb +218 -0
- data/spec/interfaces/protocols/terminated_protocol_spec.rb +174 -0
- data/spec/interfaces/serial_interface_spec.rb +35 -34
- data/spec/interfaces/simulated_target_interface_spec.rb +13 -13
- data/spec/interfaces/tcpip_client_interface_spec.rb +21 -16
- data/spec/interfaces/tcpip_server_interface_spec.rb +66 -69
- data/spec/interfaces/udp_interface_spec.rb +120 -55
- data/spec/io/serial_driver_spec.rb +41 -39
- data/spec/io/udp_sockets_spec.rb +13 -8
- data/spec/io/win32_serial_driver_spec.rb +62 -59
- data/spec/packet_logs/packet_log_reader_spec.rb +68 -47
- data/spec/packet_logs/packet_log_writer_spec.rb +7 -5
- data/spec/packets/commands_spec.rb +5 -5
- data/spec/packets/packet_spec.rb +2 -14
- data/spec/script/extract_spec.rb +21 -7
- data/spec/script/scripting_spec.rb +261 -6
- data/spec/script/telemetry_spec.rb +17 -9
- data/spec/spec_helper.rb +26 -10
- data/spec/streams/serial_stream_spec.rb +87 -82
- data/spec/streams/tcpip_client_stream_spec.rb +12 -4
- data/spec/streams/tcpip_socket_stream_spec.rb +5 -0
- data/spec/system/system_spec.rb +66 -50
- data/spec/system/target_spec.rb +33 -11
- data/spec/tools/cmd_tlm_server/api_spec.rb +5 -5
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +75 -15
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +125 -5
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +244 -232
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +18 -18
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +124 -29
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +2 -2
- data/spec/tools/cmd_tlm_server/limits_groups_background_task_spec.rb +145 -0
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +50 -10
- data/spec/tools/table_manager/tablemanager_core_spec.rb +0 -1
- data/spec/top_level/top_level_spec.rb +39 -11
- data/spec/utilities/csv_spec.rb +62 -20
- data/tasks/gemfile_stats.rake +6 -3
- data/test/performance/config/system/system_packets.txt +0 -1
- data/test/performance/config/system/system_threads.txt +0 -1
- metadata +177 -92
- data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/autohotkey/config/targets/COSMOS/cmd_tlm_server.txt +0 -6
- data/autohotkey/config/targets/COSMOS/target.txt +0 -5
- data/autohotkey/userpath.txt +0 -1
- data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/demo/config/targets/COSMOS/screens/limits_change.txt +0 -20
- data/demo/config/targets/COSMOS/screens/version.txt +0 -19
- data/demo/config/targets/COSMOS/target.txt +0 -11
- data/demo/config/targets/META/cmd_tlm/meta_cmd.txt +0 -10
- data/demo/config/targets/META/cmd_tlm/meta_tlm.txt +0 -13
- data/demo/userpath.txt +0 -1
- data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/install/config/targets/COSMOS/cmd_tlm_server.txt +0 -6
- data/install/config/targets/COSMOS/screens/limits_change.txt +0 -20
- data/install/config/targets/COSMOS/screens/version.txt +0 -19
- data/install/config/targets/COSMOS/target.txt +0 -9
- data/install/config/targets/SYSTEM/README.txt +0 -1
- data/install/userpath.txt +0 -1
- data/lib/cosmos/io/tcpip_server.rb +0 -571
- data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +0 -107
- data/lib/cosmos/streams/burst_stream_protocol.rb +0 -25
- data/lib/cosmos/streams/preidentified_stream_protocol.rb +0 -118
- data/lib/cosmos/streams/stream_protocol.rb +0 -373
- data/lib/cosmos/streams/template_stream_protocol.rb +0 -140
- data/lib/cosmos/streams/terminated_stream_protocol.rb +0 -85
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +0 -41
- data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +0 -15
- data/spec/install/config/targets/COSMOS/screens/limits_change.txt +0 -20
- data/spec/install/config/targets/COSMOS/screens/version.txt +0 -19
- data/spec/install/config/targets/COSMOS/target.txt +0 -5
- data/spec/install/config/targets/META/cmd_tlm/meta_cmd.txt +0 -4
- data/spec/install/config/targets/META/cmd_tlm/meta_tlm.txt +0 -4
- data/spec/install/userpath.txt +0 -1
- data/spec/interfaces/stream_interface_spec.rb +0 -157
- data/spec/io/tcpip_server_spec.rb +0 -338
- data/spec/packet_logs/meta_packet_log_writer_spec.rb +0 -170
- data/spec/streams/burst_stream_protocol_spec.rb +0 -32
- data/spec/streams/fixed_stream_protocol_spec.rb +0 -113
- data/spec/streams/length_stream_protocol_spec.rb +0 -300
- data/spec/streams/preidentified_stream_protocol_spec.rb +0 -121
- data/spec/streams/stream_protocol_spec.rb +0 -346
- data/spec/streams/template_stream_protocol_spec.rb +0 -156
- data/spec/streams/terminated_stream_protocol_spec.rb +0 -127
- data/test/performance/userpath.txt +0 -1
data/spec/script/extract_spec.rb
CHANGED
|
@@ -19,25 +19,39 @@ module Cosmos
|
|
|
19
19
|
describe "add_cmd_parameter" do
|
|
20
20
|
it "should remove quotes and preserve quoted strings" do
|
|
21
21
|
cmd_params = {}
|
|
22
|
-
add_cmd_parameter('TEST', '"3"', cmd_params)
|
|
22
|
+
add_cmd_parameter('TEST', '"3"', nil, cmd_params)
|
|
23
23
|
expect(cmd_params['TEST']).to eql('3')
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
it "should convert unquoted strings to the correct value type" do
|
|
27
27
|
cmd_params = {}
|
|
28
|
-
add_cmd_parameter('TEST', '3', cmd_params)
|
|
28
|
+
add_cmd_parameter('TEST', '3', nil, cmd_params)
|
|
29
29
|
expect(cmd_params['TEST']).to eql(3)
|
|
30
|
-
add_cmd_parameter('TEST2', '3.0', cmd_params)
|
|
30
|
+
add_cmd_parameter('TEST2', '3.0', nil, cmd_params)
|
|
31
31
|
expect(cmd_params['TEST2']).to eql(3.0)
|
|
32
|
-
add_cmd_parameter('TEST3', '0xA', cmd_params)
|
|
32
|
+
add_cmd_parameter('TEST3', '0xA', nil, cmd_params)
|
|
33
33
|
expect(cmd_params['TEST3']).to eql(0xA)
|
|
34
|
-
add_cmd_parameter('TEST4', '3e3', cmd_params)
|
|
34
|
+
add_cmd_parameter('TEST4', '3e3', nil, cmd_params)
|
|
35
35
|
expect(cmd_params['TEST4']).to eql(3e3)
|
|
36
|
-
add_cmd_parameter('TEST5', 'Ryan', cmd_params)
|
|
36
|
+
add_cmd_parameter('TEST5', 'Ryan', nil, cmd_params)
|
|
37
37
|
expect(cmd_params['TEST5']).to eql('Ryan')
|
|
38
|
-
add_cmd_parameter('TEST6', '3 4', cmd_params)
|
|
38
|
+
add_cmd_parameter('TEST6', '3 4', nil, cmd_params)
|
|
39
39
|
expect(cmd_params['TEST6']).to eql('3 4')
|
|
40
40
|
end
|
|
41
|
+
|
|
42
|
+
it "should convert unquoted hex values into binary for blocks and strings" do
|
|
43
|
+
cmd_params = {}
|
|
44
|
+
packet = System.commands.packet("INST", "ASCIICMD").clone
|
|
45
|
+
add_cmd_parameter('STRING', '0xAABBCCDD', packet, cmd_params)
|
|
46
|
+
expect(cmd_params['STRING']).to eql("\xAA\xBB\xCC\xDD")
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "should preserve quoted hex values for blocks and strings" do
|
|
50
|
+
cmd_params = {}
|
|
51
|
+
packet = System.commands.packet("INST", "ASCIICMD").clone
|
|
52
|
+
add_cmd_parameter('STRING', "'0xAABBCCDD'", packet, cmd_params)
|
|
53
|
+
expect(cmd_params['STRING']).to eql("0xAABBCCDD")
|
|
54
|
+
end
|
|
41
55
|
end
|
|
42
56
|
|
|
43
57
|
describe "extract_fields_from_cmd_text" do
|
|
@@ -64,12 +64,14 @@ module Cosmos
|
|
|
64
64
|
end
|
|
65
65
|
end
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
if RUBY_ENGINE == 'ruby'
|
|
68
|
+
describe "status_bar" do
|
|
69
|
+
it "sets the ScriptRunner status bar" do
|
|
70
|
+
class ScriptRunner; end
|
|
71
|
+
sc = ScriptRunner.new
|
|
72
|
+
expect(sc).to receive(:script_set_status).with("HI")
|
|
73
|
+
status_bar("HI")
|
|
74
|
+
end
|
|
73
75
|
end
|
|
74
76
|
end
|
|
75
77
|
|
|
@@ -212,6 +214,88 @@ module Cosmos
|
|
|
212
214
|
stdout.rewind
|
|
213
215
|
end
|
|
214
216
|
end
|
|
217
|
+
|
|
218
|
+
it "handles array items" do
|
|
219
|
+
capture_io do |stdout|
|
|
220
|
+
check_tolerance("INST HEALTH_STATUS ARY2", 0.0, 0.1)
|
|
221
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[0\] was within range/
|
|
222
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[1\] was within range/
|
|
223
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[2\] was within range/
|
|
224
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[3\] was within range/
|
|
225
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[4\] was within range/
|
|
226
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[5\] was within range/
|
|
227
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[6\] was within range/
|
|
228
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[7\] was within range/
|
|
229
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[8\] was within range/
|
|
230
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[9\] was within range/
|
|
231
|
+
stdout.rewind
|
|
232
|
+
|
|
233
|
+
check_tolerance("INST", "HEALTH_STATUS", "ARY2", 0.0, 0.1)
|
|
234
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[0\] was within range/
|
|
235
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[1\] was within range/
|
|
236
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[2\] was within range/
|
|
237
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[3\] was within range/
|
|
238
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[4\] was within range/
|
|
239
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[5\] was within range/
|
|
240
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[6\] was within range/
|
|
241
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[7\] was within range/
|
|
242
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[8\] was within range/
|
|
243
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[9\] was within range/
|
|
244
|
+
stdout.rewind
|
|
245
|
+
|
|
246
|
+
exp_array = Array.new(10, 0.0)
|
|
247
|
+
tol_array = Array.new(10, 0.1)
|
|
248
|
+
check_tolerance("INST HEALTH_STATUS ARY2", exp_array, tol_array)
|
|
249
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[0\] was within range/
|
|
250
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[1\] was within range/
|
|
251
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[2\] was within range/
|
|
252
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[3\] was within range/
|
|
253
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[4\] was within range/
|
|
254
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[5\] was within range/
|
|
255
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[6\] was within range/
|
|
256
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[7\] was within range/
|
|
257
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[8\] was within range/
|
|
258
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[9\] was within range/
|
|
259
|
+
stdout.rewind
|
|
260
|
+
|
|
261
|
+
exp_array = Array.new(10, 0.0)
|
|
262
|
+
tol_array = Array.new(10, 0.1)
|
|
263
|
+
check_tolerance_raw("INST HEALTH_STATUS ARY2", exp_array, tol_array)
|
|
264
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[0\] was within range/
|
|
265
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[1\] was within range/
|
|
266
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[2\] was within range/
|
|
267
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[3\] was within range/
|
|
268
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[4\] was within range/
|
|
269
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[5\] was within range/
|
|
270
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[6\] was within range/
|
|
271
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[7\] was within range/
|
|
272
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[8\] was within range/
|
|
273
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[9\] was within range/
|
|
274
|
+
stdout.rewind
|
|
275
|
+
|
|
276
|
+
exp_array[0] = 0.11
|
|
277
|
+
expect { check_tolerance("INST HEALTH_STATUS ARY2", exp_array, tol_array) }.to raise_error(CheckError, /CHECK: INST HEALTH_STATUS ARY2\[0\] failed to be within range/)
|
|
278
|
+
stdout.rewind
|
|
279
|
+
|
|
280
|
+
exp_array[0] = 0.0
|
|
281
|
+
exp_array[9] = 0.11
|
|
282
|
+
expect { check_tolerance("INST HEALTH_STATUS ARY2", exp_array, tol_array) }.to raise_error(CheckError, /CHECK: INST HEALTH_STATUS ARY2\[9\] failed to be within range/)
|
|
283
|
+
stdout.rewind
|
|
284
|
+
|
|
285
|
+
exp_array = Array.new(10, 1)
|
|
286
|
+
tol_array = Array.new(10, 1.1)
|
|
287
|
+
tol_array[1] = 0.9
|
|
288
|
+
expect { check_tolerance("INST HEALTH_STATUS ARY2", exp_array, tol_array) }.to raise_error(CheckError, /CHECK: INST HEALTH_STATUS ARY2\[1\] failed to be within range/)
|
|
289
|
+
stdout.rewind
|
|
290
|
+
|
|
291
|
+
end
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
it "checks size of array parameters" do
|
|
295
|
+
bad_array = Array.new(9, 0)
|
|
296
|
+
expect { check_tolerance("INST HEALTH_STATUS ARY2", bad_array, 0.1) }.to raise_error(/Invalid array size for expected_value/)
|
|
297
|
+
expect { check_tolerance("INST HEALTH_STATUS ARY2", 0.0, bad_array) }.to raise_error(/Invalid array size for tolerance/)
|
|
298
|
+
end
|
|
215
299
|
end
|
|
216
300
|
|
|
217
301
|
describe "check_expression" do
|
|
@@ -314,6 +398,90 @@ module Cosmos
|
|
|
314
398
|
stdout.rewind
|
|
315
399
|
end
|
|
316
400
|
end
|
|
401
|
+
|
|
402
|
+
it "handles array items" do
|
|
403
|
+
capture_io do |stdout|
|
|
404
|
+
wait_tolerance("INST HEALTH_STATUS ARY2", 0.0, 0.1, 0.1)
|
|
405
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[0\] was within range/
|
|
406
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[1\] was within range/
|
|
407
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[2\] was within range/
|
|
408
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[3\] was within range/
|
|
409
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[4\] was within range/
|
|
410
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[5\] was within range/
|
|
411
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[6\] was within range/
|
|
412
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[7\] was within range/
|
|
413
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[8\] was within range/
|
|
414
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[9\] was within range/
|
|
415
|
+
stdout.rewind
|
|
416
|
+
|
|
417
|
+
wait_tolerance("INST", "HEALTH_STATUS", "ARY2", 0.0, 0.1, 0.1)
|
|
418
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[0\] was within range/
|
|
419
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[1\] was within range/
|
|
420
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[2\] was within range/
|
|
421
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[3\] was within range/
|
|
422
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[4\] was within range/
|
|
423
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[5\] was within range/
|
|
424
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[6\] was within range/
|
|
425
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[7\] was within range/
|
|
426
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[8\] was within range/
|
|
427
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[9\] was within range/
|
|
428
|
+
stdout.rewind
|
|
429
|
+
|
|
430
|
+
exp_array = Array.new(10, 0.0)
|
|
431
|
+
tol_array = Array.new(10, 0.1)
|
|
432
|
+
wait_tolerance("INST HEALTH_STATUS ARY2", exp_array, tol_array, 0.1)
|
|
433
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[0\] was within range/
|
|
434
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[1\] was within range/
|
|
435
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[2\] was within range/
|
|
436
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[3\] was within range/
|
|
437
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[4\] was within range/
|
|
438
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[5\] was within range/
|
|
439
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[6\] was within range/
|
|
440
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[7\] was within range/
|
|
441
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[8\] was within range/
|
|
442
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[9\] was within range/
|
|
443
|
+
stdout.rewind
|
|
444
|
+
|
|
445
|
+
exp_array = Array.new(10, 0.0)
|
|
446
|
+
tol_array = Array.new(10, 0.1)
|
|
447
|
+
wait_tolerance_raw("INST HEALTH_STATUS ARY2", exp_array, tol_array, 0.1)
|
|
448
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[0\] was within range/
|
|
449
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[1\] was within range/
|
|
450
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[2\] was within range/
|
|
451
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[3\] was within range/
|
|
452
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[4\] was within range/
|
|
453
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[5\] was within range/
|
|
454
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[6\] was within range/
|
|
455
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[7\] was within range/
|
|
456
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[8\] was within range/
|
|
457
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[9\] was within range/
|
|
458
|
+
stdout.rewind
|
|
459
|
+
|
|
460
|
+
exp_array[0] = 0.11
|
|
461
|
+
wait_tolerance("INST HEALTH_STATUS ARY2", exp_array, tol_array, 0.1)
|
|
462
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[0\] failed to be within range/
|
|
463
|
+
stdout.rewind
|
|
464
|
+
|
|
465
|
+
exp_array[0] = 0.0
|
|
466
|
+
exp_array[9] = 0.11
|
|
467
|
+
wait_tolerance("INST HEALTH_STATUS ARY2", exp_array, tol_array, 0.1)
|
|
468
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[9\] failed to be within range/
|
|
469
|
+
stdout.rewind
|
|
470
|
+
|
|
471
|
+
exp_array = Array.new(10, 1)
|
|
472
|
+
tol_array = Array.new(10, 1.1)
|
|
473
|
+
tol_array[1] = 0.9
|
|
474
|
+
wait_tolerance("INST HEALTH_STATUS ARY2", exp_array, tol_array, 0.1)
|
|
475
|
+
expect(stdout.string).to match /WAIT: INST HEALTH_STATUS ARY2\[1\] failed to be within range/
|
|
476
|
+
stdout.rewind
|
|
477
|
+
end
|
|
478
|
+
end
|
|
479
|
+
|
|
480
|
+
it "checks size of array parameters" do
|
|
481
|
+
bad_array = Array.new(9, 0)
|
|
482
|
+
expect { wait_tolerance("INST HEALTH_STATUS ARY2", bad_array, 0.1, 0.1) }.to raise_error(/Invalid array size for expected_value/)
|
|
483
|
+
expect { wait_tolerance("INST HEALTH_STATUS ARY2", 0.0, bad_array, 0.1) }.to raise_error(/Invalid array size for tolerance/)
|
|
484
|
+
end
|
|
317
485
|
end
|
|
318
486
|
|
|
319
487
|
describe "wait_expression" do
|
|
@@ -393,6 +561,87 @@ module Cosmos
|
|
|
393
561
|
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/)
|
|
394
562
|
|
|
395
563
|
end
|
|
564
|
+
|
|
565
|
+
it "handles array items" do
|
|
566
|
+
capture_io do |stdout|
|
|
567
|
+
wait_check_tolerance("INST HEALTH_STATUS ARY2", 0.0, 0.1, 0.1)
|
|
568
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[0\] was within range/
|
|
569
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[1\] was within range/
|
|
570
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[2\] was within range/
|
|
571
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[3\] was within range/
|
|
572
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[4\] was within range/
|
|
573
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[5\] was within range/
|
|
574
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[6\] was within range/
|
|
575
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[7\] was within range/
|
|
576
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[8\] was within range/
|
|
577
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[9\] was within range/
|
|
578
|
+
stdout.rewind
|
|
579
|
+
|
|
580
|
+
wait_check_tolerance("INST", "HEALTH_STATUS", "ARY2", 0.0, 0.1, 0.1)
|
|
581
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[0\] was within range/
|
|
582
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[1\] was within range/
|
|
583
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[2\] was within range/
|
|
584
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[3\] was within range/
|
|
585
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[4\] was within range/
|
|
586
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[5\] was within range/
|
|
587
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[6\] was within range/
|
|
588
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[7\] was within range/
|
|
589
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[8\] was within range/
|
|
590
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[9\] was within range/
|
|
591
|
+
stdout.rewind
|
|
592
|
+
|
|
593
|
+
exp_array = Array.new(10, 0.0)
|
|
594
|
+
tol_array = Array.new(10, 0.1)
|
|
595
|
+
wait_check_tolerance("INST HEALTH_STATUS ARY2", exp_array, tol_array, 0.1)
|
|
596
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[0\] was within range/
|
|
597
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[1\] was within range/
|
|
598
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[2\] was within range/
|
|
599
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[3\] was within range/
|
|
600
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[4\] was within range/
|
|
601
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[5\] was within range/
|
|
602
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[6\] was within range/
|
|
603
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[7\] was within range/
|
|
604
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[8\] was within range/
|
|
605
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[9\] was within range/
|
|
606
|
+
stdout.rewind
|
|
607
|
+
|
|
608
|
+
exp_array = Array.new(10, 0.0)
|
|
609
|
+
tol_array = Array.new(10, 0.1)
|
|
610
|
+
wait_check_tolerance("INST HEALTH_STATUS ARY2", exp_array, tol_array, 0.1)
|
|
611
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[0\] was within range/
|
|
612
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[1\] was within range/
|
|
613
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[2\] was within range/
|
|
614
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[3\] was within range/
|
|
615
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[4\] was within range/
|
|
616
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[5\] was within range/
|
|
617
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[6\] was within range/
|
|
618
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[7\] was within range/
|
|
619
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[8\] was within range/
|
|
620
|
+
expect(stdout.string).to match /CHECK: INST HEALTH_STATUS ARY2\[9\] was within range/
|
|
621
|
+
stdout.rewind
|
|
622
|
+
|
|
623
|
+
exp_array[0] = 0.11
|
|
624
|
+
expect { wait_check_tolerance("INST HEALTH_STATUS ARY2", exp_array, tol_array, 0.1) }.to raise_error(/CHECK: INST HEALTH_STATUS ARY2\[0\] failed to be within range/)
|
|
625
|
+
stdout.rewind
|
|
626
|
+
|
|
627
|
+
exp_array[0] = 0.0
|
|
628
|
+
exp_array[9] = 0.11
|
|
629
|
+
expect { wait_check_tolerance("INST HEALTH_STATUS ARY2", exp_array, tol_array, 0.1) }.to raise_error(/CHECK: INST HEALTH_STATUS ARY2\[9\] failed to be within range/)
|
|
630
|
+
stdout.rewind
|
|
631
|
+
|
|
632
|
+
exp_array = Array.new(10, 1)
|
|
633
|
+
tol_array = Array.new(10, 1.1)
|
|
634
|
+
tol_array[1] = 0.9
|
|
635
|
+
expect {wait_check_tolerance("INST HEALTH_STATUS ARY2", exp_array, tol_array, 0.1) }.to raise_error(/CHECK: INST HEALTH_STATUS ARY2\[1\] failed to be within range/)
|
|
636
|
+
stdout.rewind
|
|
637
|
+
end
|
|
638
|
+
end
|
|
639
|
+
|
|
640
|
+
it "checks size of array parameters" do
|
|
641
|
+
bad_array = Array.new(9, 0)
|
|
642
|
+
expect { wait_check_tolerance("INST HEALTH_STATUS ARY2", bad_array, 0.1, 0.1) }.to raise_error(/Invalid array size for expected_value/)
|
|
643
|
+
expect { wait_check_tolerance("INST HEALTH_STATUS ARY2", 0.0, bad_array, 0.1) }.to raise_error(/Invalid array size for tolerance/)
|
|
644
|
+
end
|
|
396
645
|
end
|
|
397
646
|
|
|
398
647
|
describe "wait_check_expression" do
|
|
@@ -447,9 +696,12 @@ module Cosmos
|
|
|
447
696
|
it "starts a script within ScriptRunnerFrame" do
|
|
448
697
|
class ScriptRunnerFrame
|
|
449
698
|
@@instrumented_cache = {}
|
|
699
|
+
@@file_cache = {}
|
|
450
700
|
def self.instance; true; end
|
|
451
701
|
def self.instrumented_cache; @@instrumented_cache; end
|
|
452
702
|
def self.instrumented_cache=(value); @@instrumented_cache = value; end
|
|
703
|
+
def self.file_cache; @@file_cache; end
|
|
704
|
+
def self.file_cache=(value); @@file_cache = value; end
|
|
453
705
|
def self.instrument_script(file_text, path, bool); "#"; end
|
|
454
706
|
end
|
|
455
707
|
start("cosmos.rb")
|
|
@@ -467,9 +719,12 @@ module Cosmos
|
|
|
467
719
|
it "requires a script within ScriptRunnerFrame" do
|
|
468
720
|
class ScriptRunnerFrame
|
|
469
721
|
@@instrumented_cache = {}
|
|
722
|
+
@@file_cache = {}
|
|
470
723
|
def self.instance; true; end
|
|
471
724
|
def self.instrumented_cache; @@instrumented_cache; end
|
|
472
725
|
def self.instrumented_cache=(value); @@instrumented_cache = value; end
|
|
726
|
+
def self.file_cache; @@file_cache; end
|
|
727
|
+
def self.file_cache=(value); @@file_cache = value; end
|
|
473
728
|
def self.instrument_script(file_text, path, bool); "#"; end
|
|
474
729
|
end
|
|
475
730
|
allow(ScriptRunnerFrame).to receive_message_chain(:instance, :use_instrumentation)
|
|
@@ -14,18 +14,16 @@ require 'cosmos/script/script'
|
|
|
14
14
|
require 'tempfile'
|
|
15
15
|
|
|
16
16
|
module Cosmos
|
|
17
|
-
|
|
18
17
|
describe Script do
|
|
19
|
-
|
|
20
18
|
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|
|
|
19
|
+
@cts = File.join(Cosmos::USERPATH,'config','tools','cmd_tlm_server','cmd_tlm_server.txt')
|
|
20
|
+
FileUtils.mkdir_p(File.dirname(@cts))
|
|
21
|
+
File.open(@cts,'w') do |file|
|
|
24
22
|
file.puts 'INTERFACE INST_INT interface.rb'
|
|
25
23
|
file.puts 'TARGET INST'
|
|
24
|
+
file.puts 'PROTOCOL READ override_protocol.rb'
|
|
26
25
|
end
|
|
27
26
|
System.class_eval('@@instance = nil')
|
|
28
|
-
|
|
29
27
|
require 'cosmos/script'
|
|
30
28
|
end
|
|
31
29
|
|
|
@@ -65,7 +63,7 @@ module Cosmos
|
|
|
65
63
|
end
|
|
66
64
|
end
|
|
67
65
|
|
|
68
|
-
describe "set_tlm, set_tlm_raw" do
|
|
66
|
+
describe "set_tlm, set_tlm_raw, override_tlm_raw" do
|
|
69
67
|
it "passes through to the cmd_tlm_server" do
|
|
70
68
|
expect {
|
|
71
69
|
set_tlm("INST HEALTH_STATUS TEMP3 = 1")
|
|
@@ -91,6 +89,12 @@ module Cosmos
|
|
|
91
89
|
expect(tlm_raw("INST HEALTH_STATUS ASCIICMD")).to eql 'Hello World'
|
|
92
90
|
set_tlm_raw("INST HEALTH_STATUS ASCIICMD='Hello = World'")
|
|
93
91
|
expect(tlm_raw("INST HEALTH_STATUS ASCIICMD")).to eql 'Hello = World'
|
|
92
|
+
override_tlm_raw("INST HEALTH_STATUS TEMP3 = 0")
|
|
93
|
+
override_tlm_raw("INST HEALTH_STATUS ASCIICMD = 'Hi'")
|
|
94
|
+
override_tlm_raw("INST HEALTH_STATUS ASCIICMD ='Hello'")
|
|
95
|
+
override_tlm_raw("INST HEALTH_STATUS ASCIICMD= 'Hello World'")
|
|
96
|
+
override_tlm_raw("INST HEALTH_STATUS ASCIICMD='Hello World'")
|
|
97
|
+
override_tlm_raw("INST HEALTH_STATUS ASCIICMD='Hello = World'")
|
|
94
98
|
}.to_not raise_error
|
|
95
99
|
end
|
|
96
100
|
|
|
@@ -99,6 +103,12 @@ module Cosmos
|
|
|
99
103
|
expect { set_tlm("INST HEALTH_STATUS = 5") }.to raise_error(/#{error_msg}/)
|
|
100
104
|
expect { set_tlm("INST HEALTH_STATUS TEMP3") }.to raise_error(/#{error_msg}/)
|
|
101
105
|
expect { set_tlm("INST HEALTH_STATUS TEMP3 = ") }.to raise_error(/#{error_msg}/)
|
|
106
|
+
expect { set_tlm_raw("INST HEALTH_STATUS = 5") }.to raise_error(/#{error_msg}/)
|
|
107
|
+
expect { set_tlm_raw("INST HEALTH_STATUS TEMP3") }.to raise_error(/#{error_msg}/)
|
|
108
|
+
expect { set_tlm_raw("INST HEALTH_STATUS = 5") }.to raise_error(/#{error_msg}/)
|
|
109
|
+
expect { override_tlm_raw("INST HEALTH_STATUS TEMP3") }.to raise_error(/#{error_msg}/)
|
|
110
|
+
expect { override_tlm_raw("INST HEALTH_STATUS TEMP3 = ") }.to raise_error(/#{error_msg}/)
|
|
111
|
+
expect { override_tlm_raw("INST HEALTH_STATUS TEMP3 = ") }.to raise_error(/#{error_msg}/)
|
|
102
112
|
end
|
|
103
113
|
end
|
|
104
114
|
|
|
@@ -160,7 +170,5 @@ module Cosmos
|
|
|
160
170
|
unsubscribe_packet_data(id)
|
|
161
171
|
end
|
|
162
172
|
end
|
|
163
|
-
|
|
164
173
|
end
|
|
165
174
|
end
|
|
166
|
-
|
data/spec/spec_helper.rb
CHANGED
|
@@ -11,14 +11,16 @@
|
|
|
11
11
|
# Redefine Object.load so simplecov doesn't overwrite the results after
|
|
12
12
|
# re-loading a file during test.
|
|
13
13
|
def load(file, wrap = false)
|
|
14
|
-
SimpleCov
|
|
15
|
-
|
|
14
|
+
if defined? SimpleCov
|
|
15
|
+
SimpleCov.start do
|
|
16
|
+
command_name "#{command_name}1"
|
|
17
|
+
end
|
|
16
18
|
end
|
|
17
19
|
Kernel.load(file, wrap)
|
|
18
20
|
end
|
|
19
21
|
|
|
20
22
|
# NOTE: You MUST require simplecov before anything else!
|
|
21
|
-
|
|
23
|
+
if RUBY_ENGINE == 'ruby' and !ENV['COSMOS_NO_SIMPLECOV']
|
|
22
24
|
require 'simplecov'
|
|
23
25
|
require 'coveralls'
|
|
24
26
|
Coveralls.wear!
|
|
@@ -45,7 +47,7 @@ unless ENV['COSMOS_NO_SIMPLECOV']
|
|
|
45
47
|
end
|
|
46
48
|
end
|
|
47
49
|
require 'rspec'
|
|
48
|
-
require 'ruby-prof'
|
|
50
|
+
require 'ruby-prof' if RUBY_ENGINE == 'ruby'
|
|
49
51
|
require 'benchmark/ips'
|
|
50
52
|
|
|
51
53
|
# Set the user path to our COSMOS configuration in the spec directory
|
|
@@ -85,18 +87,32 @@ RSpec.configure do |config|
|
|
|
85
87
|
Cosmos.disable_warnings do
|
|
86
88
|
Object.const_set(:STDOUT, $saved_stdout_const)
|
|
87
89
|
end
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
Thread.list.
|
|
91
|
-
|
|
90
|
+
if RUBY_ENGINE == 'ruby'
|
|
91
|
+
# Kill any leftover threads
|
|
92
|
+
if Thread.list.length > 1
|
|
93
|
+
Thread.list.each do |t|
|
|
94
|
+
t.kill if t != Thread.current
|
|
95
|
+
end
|
|
96
|
+
sleep(0.2)
|
|
97
|
+
end
|
|
98
|
+
else
|
|
99
|
+
# Kill any leftover threads
|
|
100
|
+
if Thread.list.length > 2
|
|
101
|
+
Thread.list[2..-1].each do |t|
|
|
102
|
+
t.kill if t != Thread.current
|
|
103
|
+
end
|
|
104
|
+
sleep(0.2)
|
|
92
105
|
end
|
|
93
|
-
sleep(0.2)
|
|
94
106
|
end
|
|
95
107
|
end
|
|
96
108
|
|
|
97
109
|
config.after(:each) do
|
|
98
110
|
# Make sure we didn't leave any lingering threads
|
|
99
|
-
|
|
111
|
+
if RUBY_ENGINE == 'ruby'
|
|
112
|
+
expect(Thread.list.length).to eql(1), "At end of test expect 1 remaining thread but found #{Thread.list.length}.\nEnsure you kill all spawned threads before the test finishes."
|
|
113
|
+
else
|
|
114
|
+
expect(Thread.list.length).to be <= 2, "At end of test expect 2 remaining thread but found #{Thread.list.length}.\nEnsure you kill all spawned threads before the test finishes."
|
|
115
|
+
end
|
|
100
116
|
end
|
|
101
117
|
end
|
|
102
118
|
|