cosmos 4.2.4-java → 4.5.0-java
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/.dockerignore +2 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +30 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
- data/.github/ISSUE_TEMPLATE/help---usage---general-question.md +12 -0
- data/.gitignore +2 -0
- data/.travis.yml +6 -6
- data/Dockerfile +69 -0
- data/Gemfile +1 -1
- data/Manifest.txt +130 -46
- data/README.md +9 -0
- data/Rakefile +57 -0
- data/appveyor.yml +18 -7
- data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -1
- data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +5 -5
- data/autohotkey/config/targets/INST/lib/sim_inst.rb +3 -1
- data/autohotkey/config/tools/cmd_sequence/cmd_sequence.txt +2 -0
- data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
- data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
- data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
- data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
- data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
- data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/autohotkey/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
- data/autohotkey/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
- data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +2 -4
- data/autohotkey/config/tools/table_manager/SubTables/OneDimensionalSubTable_def.txt +31 -0
- data/autohotkey/config/tools/table_manager/SubTables/TwoDimensionalSubTable_def.txt +28 -0
- data/autohotkey/config/tools/test_runner/test_runner.txt +1 -1
- data/autohotkey/config/tools/test_runner/test_runner2.txt +1 -1
- data/autohotkey/config/tools/test_runner/test_runner3.txt +1 -1
- data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -1
- data/autohotkey/lib/cmd_sequence_exporter.rb +52 -0
- data/autohotkey/procedures/collect.rb +2 -2
- data/autohotkey/procedures/collect_util.rb +1 -1
- data/autohotkey/procedures/script_test.rb +1 -1
- data/autohotkey/tools/CmdSenderAHK2 +18 -0
- data/autohotkey/tools/cmd_sender.ahk +34 -6
- data/autohotkey/tools/cmd_sender2.ahk +4 -0
- data/autohotkey/tools/cmd_sequence.ahk +36 -22
- data/autohotkey/tools/cmd_sequence2.ahk +1 -1
- data/autohotkey/tools/config_editor.ahk +5 -5
- data/autohotkey/tools/launcher.ahk +1 -0
- data/autohotkey/tools/limits_monitor.ahk +1 -1
- data/autohotkey/tools/packet_viewer.ahk +7 -6
- data/autohotkey/tools/script_runner.ahk +16 -4
- data/autohotkey/tools/test_runner.ahk +8 -8
- data/bin/cosmos +38 -1
- data/bin/cstol_converter +1 -1
- data/bin/dart_util +0 -0
- data/bin/rubysloc +73 -28
- data/bin/xtce_converter +1 -1
- data/cosmos.gemspec +7 -9
- data/data/config/_interfaces.yaml +4 -0
- data/data/config/cmd_sequence.yaml +14 -0
- data/data/config/command_modifiers.yaml +16 -1
- data/data/config/housekeeping_params.yaml +14 -0
- data/data/config/interface_modifiers.yaml +14 -2
- data/data/config/item_modifiers.yaml +11 -1
- data/data/config/launcher.yaml +12 -2
- data/data/config/param_item_modifiers.yaml +7 -2
- data/data/config/parameter_modifiers.yaml +20 -0
- data/data/config/screen.yaml +2 -0
- data/data/config/script_runner.yaml +9 -0
- data/data/config/system.yaml +152 -28
- data/data/config/table_manager.yaml +7 -0
- data/data/config/target.yaml +12 -0
- data/data/config/telemetry_modifiers.yaml +19 -2
- data/data/config/test_runner.yaml +10 -9
- data/data/config/widgets.yaml +174 -11
- data/data/crc.txt +428 -415
- data/demo/Gemfile +1 -1
- data/demo/Launcher.bat +1 -9
- data/demo/Launcher2.bat +1 -0
- data/demo/LauncherMini.bat +1 -0
- data/demo/Rakefile +2 -0
- data/demo/config/dart/Gemfile +2 -7
- data/demo/config/data/crc.txt +243 -219
- data/demo/config/system/system.txt +42 -3
- data/demo/config/system/system2.txt +34 -5
- data/demo/config/system/system_alt_ports.txt +80 -0
- data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +1 -0
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +5 -4
- data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +12 -7
- data/demo/config/targets/INST/cmd_tlm/inst_tlm_override.txt +12 -0
- data/demo/config/targets/INST/cmd_tlm_server.txt +2 -0
- data/demo/config/targets/INST/lib/sim_inst.rb +15 -3
- data/demo/config/targets/INST/screens/adcs.txt +2 -2
- data/demo/config/targets/INST/screens/block.txt +1 -1
- data/demo/config/targets/INST/screens/commanding.txt +1 -1
- data/demo/config/targets/INST/screens/ground.txt +27 -5
- data/demo/config/targets/INST/screens/ground_error.gif +0 -0
- data/demo/config/{data/groundoff.gif → targets/INST/screens/ground_off.gif} +0 -0
- data/demo/config/{data/groundon.gif → targets/INST/screens/ground_on.gif} +0 -0
- data/demo/config/targets/INST/screens/limits.txt +69 -31
- data/demo/config/targets/INST/screens/other.txt +13 -3
- data/demo/config/targets/INST/screens/params.txt +54 -0
- data/demo/config/targets/INST/screens/satellite.gif +0 -0
- data/demo/config/targets/INST/target.txt +1 -0
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server_chain.txt +18 -0
- data/demo/config/tools/data_viewer/data_viewer.txt +3 -0
- data/demo/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
- data/demo/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
- data/demo/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
- data/demo/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
- data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
- data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/demo/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
- data/demo/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
- data/demo/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
- data/demo/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
- data/demo/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
- data/demo/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
- data/demo/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
- data/demo/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
- data/demo/config/tools/handbook_creator/default_toc.xsl +59 -59
- data/demo/config/tools/script_runner/script_runner.txt +1 -2
- data/demo/config/tools/test_runner/test_runner.txt +3 -1
- data/demo/lib/example_background_task.rb +1 -0
- data/demo/procedures/cosmos_api_test.rb +26 -22
- data/demo/procedures/interactive.rb +22 -0
- data/demo/procedures/local_screen_example.rb +51 -0
- data/ext/cosmos/ext/cosmos_io/cosmos_io.c +32 -4
- data/ext/cosmos/ext/packet/packet.c +6 -77
- data/ext/mkrf_conf.rb +2 -2
- data/extensions/vscode/.gitignore +4 -0
- data/extensions/vscode/.vscode/launch.json +32 -0
- data/extensions/vscode/.vscode/settings.json +13 -0
- data/extensions/vscode/.vscode/tasks.json +79 -0
- data/extensions/vscode/License.txt +879 -0
- data/extensions/vscode/README.md +9 -0
- data/extensions/vscode/client/License.txt +879 -0
- data/extensions/vscode/client/README.md +39 -0
- data/extensions/vscode/client/cosmos.configuration.json +23 -0
- data/extensions/vscode/client/images/icon.png +0 -0
- data/extensions/vscode/client/package-lock.json +414 -0
- data/extensions/vscode/client/package.json +105 -0
- data/extensions/vscode/client/src/extension.ts +132 -0
- data/extensions/vscode/client/src/screen_preview.rb +25 -0
- data/extensions/vscode/client/syntaxes/cosmos.tmLanguage.json +219 -0
- data/extensions/vscode/client/tsconfig.json +17 -0
- data/extensions/vscode/package-lock.json +26 -0
- data/extensions/vscode/package.json +35 -0
- data/extensions/vscode/server/License.txt +879 -0
- data/extensions/vscode/server/package-lock.json +236 -0
- data/extensions/vscode/server/package.json +29 -0
- data/extensions/vscode/server/src/server.ts +59 -0
- data/extensions/vscode/server/tsconfig.json +16 -0
- data/install/Gemfile +1 -1
- data/install/Launcher.bat +1 -9
- data/install/config/dart/Gemfile +3 -8
- data/install/config/data/crc.txt +148 -132
- data/install/config/system/system.txt +36 -3
- data/install/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
- data/install/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
- data/install/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
- data/install/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
- data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
- data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/install/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
- data/install/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
- data/install/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
- data/install/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
- data/install/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
- data/install/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
- data/install/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
- data/install/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
- data/install/config/tools/handbook_creator/default_toc.xsl +59 -59
- data/lib/cosmos/config/config_parser.rb +4 -5
- data/lib/cosmos/conversions.rb +2 -0
- data/lib/cosmos/conversions/packet_time_formatted_conversion.rb +38 -0
- data/lib/cosmos/conversions/packet_time_seconds_conversion.rb +38 -0
- data/lib/cosmos/core_ext/cosmos_io.rb +2 -1
- data/lib/cosmos/core_ext/time.rb +3 -1
- data/lib/cosmos/dart/config/boot.rb +1 -1
- data/lib/cosmos/dart/config/database.yml +2 -0
- data/lib/cosmos/dart/examples/dart_decom_client.rb +1 -1
- data/lib/cosmos/dart/examples/dart_stream_client.rb +6 -2
- data/lib/cosmos/dart/lib/dart_common.rb +13 -6
- data/lib/cosmos/dart/lib/dart_constants.rb +15 -0
- data/lib/cosmos/dart/lib/dart_database_cleaner.rb +2 -2
- data/lib/cosmos/dart/lib/dart_decom_query.rb +5 -6
- data/lib/cosmos/dart/lib/dart_decommutator.rb +64 -54
- data/lib/cosmos/dart/lib/dart_importer.rb +3 -3
- data/lib/cosmos/dart/lib/dart_master_query.rb +71 -0
- data/lib/cosmos/dart/lib/dart_packet_log_writer.rb +2 -2
- data/lib/cosmos/dart/lib/dart_reducer_worker_thread.rb +165 -134
- data/lib/cosmos/dart/processes/dart.rb +4 -2
- data/lib/cosmos/dart/processes/dart_decom_server.rb +3 -3
- data/lib/cosmos/dart/processes/dart_ingester.rb +40 -1
- data/lib/cosmos/dart/processes/dart_master.rb +44 -0
- data/lib/cosmos/dart/processes/dart_util.rb +119 -4
- data/lib/cosmos/dart/spec/dart/dart_reducer_manager_spec.rb +3 -3
- data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +9 -5
- data/lib/cosmos/gui/dialogs/details_dialog.rb +44 -29
- data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +3 -3
- data/lib/cosmos/gui/dialogs/interface_raw_dialog.rb +2 -2
- data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +11 -10
- data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +4 -2
- data/lib/cosmos/gui/opengl/earth_model.rb +1 -1
- data/lib/cosmos/gui/qt.rb +13 -2
- data/lib/cosmos/gui/qt_tool.rb +71 -43
- data/lib/cosmos/gui/text/ruby_editor.rb +91 -49
- data/lib/cosmos/gui/utilities/classification_banner.rb +60 -0
- data/lib/cosmos/gui/utilities/screenshot.rb +1 -1
- data/lib/cosmos/gui/utilities/script_module_gui.rb +117 -91
- data/lib/cosmos/gui/widgets/dart_meta_frame.rb +22 -3
- data/lib/cosmos/interfaces.rb +2 -0
- data/lib/cosmos/interfaces/dart_status_interface.rb +1 -1
- data/lib/cosmos/interfaces/interface.rb +9 -1
- data/lib/cosmos/interfaces/linc_interface.rb +3 -3
- data/lib/cosmos/interfaces/protocols/burst_protocol.rb +1 -1
- data/lib/cosmos/interfaces/protocols/crc_protocol.rb +1 -1
- data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +40 -18
- data/lib/cosmos/interfaces/protocols/ignore_packet_protocol.rb +46 -0
- data/lib/cosmos/interfaces/protocols/length_protocol.rb +5 -0
- data/lib/cosmos/interfaces/protocols/preidentified_protocol.rb +68 -23
- data/lib/cosmos/interfaces/protocols/template_protocol.rb +9 -4
- data/lib/cosmos/interfaces/serial_interface.rb +7 -1
- data/lib/cosmos/interfaces/simulated_target_interface.rb +14 -5
- data/lib/cosmos/interfaces/stream_interface.rb +1 -1
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +13 -13
- data/lib/cosmos/io/json_drb.rb +16 -12
- data/lib/cosmos/io/json_drb_object.rb +7 -2
- data/lib/cosmos/io/json_drb_rack.rb +25 -5
- data/lib/cosmos/io/json_rpc.rb +1 -1
- data/lib/cosmos/io/posix_serial_driver.rb +60 -22
- data/lib/cosmos/io/serial_driver.rb +11 -8
- data/lib/cosmos/io/win32_serial_driver.rb +31 -3
- data/lib/cosmos/packet_logs/packet_log_reader.rb +71 -28
- data/lib/cosmos/packet_logs/packet_log_writer.rb +13 -1
- data/lib/cosmos/packets/commands.rb +30 -9
- data/lib/cosmos/packets/packet.rb +105 -34
- data/lib/cosmos/packets/packet_config.rb +60 -10
- data/lib/cosmos/packets/parsers/format_string_parser.rb +0 -1
- data/lib/cosmos/packets/parsers/state_parser.rb +0 -1
- data/lib/cosmos/packets/parsers/xtce_converter.rb +2 -0
- data/lib/cosmos/packets/parsers/xtce_parser.rb +5 -4
- data/lib/cosmos/packets/structure.rb +32 -4
- data/lib/cosmos/packets/structure_item.rb +5 -1
- data/lib/cosmos/packets/telemetry.rb +30 -4
- data/lib/cosmos/script/api_shared.rb +22 -10
- data/lib/cosmos/script/extract.rb +1 -1
- data/lib/cosmos/script/limits.rb +4 -0
- data/lib/cosmos/script/script.rb +29 -20
- data/lib/cosmos/script/scripting.rb +16 -14
- data/lib/cosmos/script/telemetry.rb +3 -1
- data/lib/cosmos/script/tools.rb +18 -8
- data/lib/cosmos/streams/serial_stream.rb +11 -6
- data/lib/cosmos/system/system.rb +214 -76
- data/lib/cosmos/system/target.rb +39 -9
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +116 -55
- data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +15 -0
- data/lib/cosmos/tools/cmd_sender/cmd_params.rb +382 -0
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +54 -340
- data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +74 -52
- data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +40 -333
- data/lib/cosmos/tools/cmd_sequence/sequence_list.rb +16 -11
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +13 -0
- data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +2 -0
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +44 -15
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +8 -1
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +18 -20
- data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +13 -2
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +2 -2
- data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +13 -13
- data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +9 -6
- data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +8 -8
- data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +5 -5
- data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +35 -20
- data/lib/cosmos/tools/cmd_tlm_server/replay_backend.rb +15 -11
- data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +5 -0
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +2 -0
- data/lib/cosmos/tools/config_editor/config_editor.rb +181 -94
- data/lib/cosmos/tools/config_editor/config_editor_frame.rb +10 -9
- data/lib/cosmos/tools/config_editor/system_config_dialog.rb +158 -0
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +57 -47
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +1 -0
- data/lib/cosmos/tools/data_viewer/dump_component.rb +3 -9
- data/lib/cosmos/tools/data_viewer/text_component.rb +77 -0
- data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +68 -42
- data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +1 -1
- data/lib/cosmos/tools/launcher/launcher.rb +2 -1
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +59 -41
- data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +42 -42
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +64 -59
- data/lib/cosmos/tools/script_runner/script_runner.rb +198 -123
- data/lib/cosmos/tools/script_runner/script_runner_config.rb +14 -0
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +87 -35
- data/lib/cosmos/tools/table_manager/table_config.rb +5 -3
- data/lib/cosmos/tools/table_manager/table_manager.rb +48 -45
- data/lib/cosmos/tools/test_runner/test.rb +5 -2
- data/lib/cosmos/tools/test_runner/test_runner.rb +61 -38
- data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +24 -12
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +48 -48
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +5 -8
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +20 -16
- data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +3 -3
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +7 -7
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +10 -10
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +10 -3
- data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +6 -6
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +14 -14
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_dart_thread.rb +21 -17
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +5 -8
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +94 -91
- data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +27 -26
- data/lib/cosmos/tools/tlm_viewer/screen.rb +76 -14
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +51 -34
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +3 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +4 -5
- data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +3 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +4 -5
- data/lib/cosmos/tools/tlm_viewer/widgets/canvas_clickable.rb +16 -2
- data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +17 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb +1 -2
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasellipse_widget.rb +40 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +12 -7
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +79 -29
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +1 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +2 -1
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +2 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +4 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +33 -25
- data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +5 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +5 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +1 -1
- data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +4 -7
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +5 -5
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +6 -7
- data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +2 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +10 -8
- data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/labelled_widget.rb +58 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +3 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +2 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +2 -1
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +3 -5
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitscolumn_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangecolumn_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +3 -5
- data/lib/cosmos/tools/tlm_viewer/widgets/led_widget.rb +108 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/limits_widget.rb +60 -10
- data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +22 -8
- data/lib/cosmos/tools/tlm_viewer/widgets/limitscolor_widget.rb +19 -13
- data/lib/cosmos/tools/tlm_viewer/widgets/limitscolumn_widget.rb +22 -8
- data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +4 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +1 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +10 -5
- data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +7 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +4 -6
- data/lib/cosmos/tools/tlm_viewer/widgets/rangecolumn_widget.rb +3 -5
- data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +4 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +4 -6
- data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +13 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +3 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +3 -8
- data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +6 -12
- data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +5 -10
- data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +5 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +4 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitscolumn_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +3 -4
- data/lib/cosmos/tools/tlm_viewer/widgets/valuerangecolumn_widget.rb +2 -3
- data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +8 -7
- data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +9 -7
- data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +60 -47
- data/lib/cosmos/top_level.rb +37 -13
- data/lib/cosmos/utilities/ruby_lex_utils.rb +34 -30
- data/lib/cosmos/version.rb +5 -5
- data/lib/cosmos/win32/excel.rb +81 -24
- data/make_gems.sh +10 -0
- data/run_gui_tests.bat +1 -0
- data/spec/conversions/packet_time_formatted_conversion_spec.rb +58 -0
- data/spec/conversions/packet_time_seconds_conversion_spec.rb +60 -0
- data/spec/core_ext/socket_spec.rb +1 -1
- data/spec/core_ext/time_spec.rb +4 -0
- data/spec/gui/utilities/script_module_gui_spec.rb +44 -63
- data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -1
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +5 -5
- data/spec/install/yaml_docs_spec.rb +132 -0
- data/spec/interfaces/linc_interface_spec.rb +1 -1
- data/spec/interfaces/protocols/fixed_protocol_spec.rb +20 -9
- data/spec/interfaces/protocols/ignore_packet_protocol_spec.rb +243 -0
- data/spec/interfaces/protocols/length_protocol_spec.rb +39 -0
- data/spec/interfaces/protocols/preidentified_protocol_spec.rb +227 -4
- data/spec/interfaces/protocols/template_protocol_spec.rb +78 -25
- data/spec/io/json_drb_rack_spec.rb +166 -0
- data/spec/io/json_drb_spec.rb +14 -0
- data/spec/io/json_rpc_spec.rb +4 -5
- data/spec/io/posix_serial_driver_spec.rb +81 -0
- data/spec/io/serial_driver_spec.rb +15 -13
- data/spec/io/win32_serial_driver_spec.rb +33 -3
- data/spec/packet_logs/packet_log_reader_spec.rb +106 -52
- data/spec/packets/commands_spec.rb +22 -0
- data/spec/packets/packet_config_spec.rb +29 -16
- data/spec/packets/packet_item_spec.rb +2 -2
- data/spec/packets/packet_spec.rb +39 -6
- data/spec/packets/parsers/format_string_parser_spec.rb +0 -11
- data/spec/packets/parsers/macro_parser_spec.rb +36 -36
- data/spec/packets/parsers/state_parser_spec.rb +69 -11
- data/spec/packets/structure_spec.rb +93 -2
- data/spec/packets/telemetry_spec.rb +63 -10
- data/spec/script/extract_spec.rb +4 -1
- data/spec/script/script_spec.rb +2 -3
- data/spec/script/scripting_spec.rb +2 -1
- data/spec/script/tools_spec.rb +0 -1
- data/spec/streams/tcpip_socket_stream_spec.rb +32 -27
- data/spec/system/system_spec.rb +187 -4
- data/spec/system/target_spec.rb +62 -1
- data/spec/tools/cmd_tlm_server/api_spec.rb +29 -21
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +15 -7
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +33 -0
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +25 -1
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +15 -0
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +2 -3
- data/spec/top_level/top_level_spec.rb +29 -5
- data/spec/utilities/message_log_spec.rb +6 -3
- data/tasks/gemfile_stats.rake +38 -14
- data/test/performance/config/system/system.txt +0 -0
- data/test/performance/config/targets/PACKET/cmd_tlm/packet_tlm.txt +5 -5
- data/test/performance/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
- data/test/performance/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
- data/test/performance/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
- data/test/performance/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
- data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
- data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
- data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
- data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
- data/test/performance/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
- data/test/performance/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
- data/test/performance/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
- data/test/performance/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
- data/test/performance/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
- data/test/performance/config/tools/test_runner/test_runner.txt +1 -1
- data/test/performance/procedures/cosmos_api_test.rb +1 -1
- data/test/performance/tools/identify_performance.rb +82 -0
- metadata +146 -62
- data/lib/cosmos/dart/Gemfile +0 -69
|
@@ -114,21 +114,23 @@ module Cosmos
|
|
|
114
114
|
|
|
115
115
|
it "returns all items from packet TGT1/PKT1" do
|
|
116
116
|
items = @tlm.items("TGT1","PKT1")
|
|
117
|
-
expect(items.length).to eql
|
|
118
|
-
expect(items[0].name).to eql "
|
|
119
|
-
expect(items[1].name).to eql "
|
|
120
|
-
expect(items[2].name).to eql "
|
|
121
|
-
expect(items[3].name).to eql "
|
|
122
|
-
expect(items[4].name).to eql "
|
|
123
|
-
expect(items[5].name).to eql "
|
|
124
|
-
expect(items[6].name).to eql "
|
|
117
|
+
expect(items.length).to eql 9
|
|
118
|
+
expect(items[0].name).to eql "PACKET_TIMESECONDS"
|
|
119
|
+
expect(items[1].name).to eql "PACKET_TIMEFORMATTED"
|
|
120
|
+
expect(items[2].name).to eql "RECEIVED_TIMESECONDS"
|
|
121
|
+
expect(items[3].name).to eql "RECEIVED_TIMEFORMATTED"
|
|
122
|
+
expect(items[4].name).to eql "RECEIVED_COUNT"
|
|
123
|
+
expect(items[5].name).to eql "ITEM1"
|
|
124
|
+
expect(items[6].name).to eql "ITEM2"
|
|
125
|
+
expect(items[7].name).to eql "ITEM3"
|
|
126
|
+
expect(items[8].name).to eql "ITEM4"
|
|
125
127
|
end
|
|
126
128
|
end
|
|
127
129
|
|
|
128
130
|
describe "item_names" do
|
|
129
131
|
it "returns all the items for a given target and packet" do
|
|
130
132
|
items = @tlm.item_names("TGT1","PKT1")
|
|
131
|
-
expect(items).to contain_exactly('RECEIVED_TIMEFORMATTED','RECEIVED_TIMESECONDS','RECEIVED_COUNT','ITEM1','ITEM2','ITEM3','ITEM4')
|
|
133
|
+
expect(items).to contain_exactly('PACKET_TIMEFORMATTED', 'PACKET_TIMESECONDS', 'RECEIVED_TIMEFORMATTED','RECEIVED_TIMESECONDS','RECEIVED_COUNT','ITEM1','ITEM2','ITEM3','ITEM4')
|
|
132
134
|
|
|
133
135
|
items = @tlm.item_names("TGT1","LATEST")
|
|
134
136
|
expect(items).to contain_exactly('ITEM1','ITEM2','ITEM3','ITEM4')
|
|
@@ -255,6 +257,29 @@ module Cosmos
|
|
|
255
257
|
expect(pkt.item3).to eql 6.0
|
|
256
258
|
expect(pkt.item4).to eql 8.0
|
|
257
259
|
end
|
|
260
|
+
|
|
261
|
+
it "works in unique id mode and not" do
|
|
262
|
+
System.targets["TGT1"] = Target.new("TGT1")
|
|
263
|
+
target = System.targets["TGT1"]
|
|
264
|
+
buffer = "\x01\x02\x03\x04"
|
|
265
|
+
target.tlm_unique_id_mode = false
|
|
266
|
+
pkt = @tlm.identify!(buffer,["TGT1"])
|
|
267
|
+
pkt.enable_method_missing
|
|
268
|
+
expect(pkt.item1).to eql 1
|
|
269
|
+
expect(pkt.item2).to eql 2
|
|
270
|
+
expect(pkt.item3).to eql 6.0
|
|
271
|
+
expect(pkt.item4).to eql 8.0
|
|
272
|
+
buffer = "\x01\x02\x01\x02"
|
|
273
|
+
target.tlm_unique_id_mode = true
|
|
274
|
+
@tlm.identify!(buffer,["TGT1"])
|
|
275
|
+
pkt = @tlm.packet("TGT1","PKT1")
|
|
276
|
+
pkt.enable_method_missing
|
|
277
|
+
expect(pkt.item1).to eql 1
|
|
278
|
+
expect(pkt.item2).to eql 2
|
|
279
|
+
expect(pkt.item3).to eql 2.0
|
|
280
|
+
expect(pkt.item4).to eql 4.0
|
|
281
|
+
target.tlm_unique_id_mode = false
|
|
282
|
+
end
|
|
258
283
|
|
|
259
284
|
it "returns nil with unknown targets given" do
|
|
260
285
|
buffer = "\x01\x02\x03\x04"
|
|
@@ -571,6 +596,34 @@ module Cosmos
|
|
|
571
596
|
end
|
|
572
597
|
end
|
|
573
598
|
|
|
599
|
+
describe "all_item_strings" do
|
|
600
|
+
it "returns hidden TGT,PKT,ITEMs in the system" do
|
|
601
|
+
@tlm.packet("TGT1","PKT1").hidden = true
|
|
602
|
+
@tlm.packet("TGT1","PKT2").disabled = true
|
|
603
|
+
default = @tlm.all_item_strings() # Return only those not hidden or disabled
|
|
604
|
+
strings = @tlm.all_item_strings(true) # Return everything, even hidden & disabled
|
|
605
|
+
expect(default).to_not eq strings
|
|
606
|
+
# Spot check the default
|
|
607
|
+
expect(default).to include("TGT2 PKT1 ITEM1")
|
|
608
|
+
expect(default).to include("TGT2 PKT1 ITEM2")
|
|
609
|
+
expect(default).to_not include("TGT1 PKT1 ITEM1") # hidden
|
|
610
|
+
expect(default).to_not include("TGT1 PKT2 ITEM1") # disabled
|
|
611
|
+
|
|
612
|
+
items = {}
|
|
613
|
+
# Built from the before(:each) section
|
|
614
|
+
items['TGT1 PKT1'] = %w(ITEM1 ITEM2 ITEM3 ITEM4)
|
|
615
|
+
items['TGT1 PKT2'] = %w(ITEM1 ITEM2)
|
|
616
|
+
items['TGT2 PKT1'] = %w(ITEM1 ITEM2)
|
|
617
|
+
items.each do |tgt_pkt, items|
|
|
618
|
+
Packet::RESERVED_ITEM_NAMES.each do |item|
|
|
619
|
+
expect(strings).to include("#{tgt_pkt} #{item}")
|
|
620
|
+
end
|
|
621
|
+
items.each do |item|
|
|
622
|
+
expect(strings).to include("#{tgt_pkt} #{item}")
|
|
623
|
+
end
|
|
624
|
+
end
|
|
625
|
+
end
|
|
626
|
+
end
|
|
627
|
+
|
|
574
628
|
end
|
|
575
629
|
end
|
|
576
|
-
|
data/spec/script/extract_spec.rb
CHANGED
|
@@ -148,6 +148,10 @@ module Cosmos
|
|
|
148
148
|
expect(extract_fields_from_check_text("TARGET PACKET ITEM < 5")).to eql(['TARGET', 'PACKET', 'ITEM', '< 5'])
|
|
149
149
|
end
|
|
150
150
|
|
|
151
|
+
it "should support target packet items named the same" do
|
|
152
|
+
expect(extract_fields_from_check_text("TEST TEST TEST == 5")).to eql(['TEST', 'TEST', 'TEST', '== 5'])
|
|
153
|
+
end
|
|
154
|
+
|
|
151
155
|
it "should complain about trying to do an = comparison" do
|
|
152
156
|
expect { extract_fields_from_check_text("TARGET PACKET ITEM = 5") }.to raise_error(/ERROR: Use/)
|
|
153
157
|
end
|
|
@@ -160,4 +164,3 @@ module Cosmos
|
|
|
160
164
|
|
|
161
165
|
end
|
|
162
166
|
end
|
|
163
|
-
|
data/spec/script/script_spec.rb
CHANGED
|
@@ -67,9 +67,8 @@ module Cosmos
|
|
|
67
67
|
expect { get_limits_groups() }.to raise_error(DRb::DRbConnError)
|
|
68
68
|
expect { set_limits_set("DEFAULT") }.to raise_error(DRb::DRbConnError)
|
|
69
69
|
ignore = []
|
|
70
|
-
ignore << %w(
|
|
71
|
-
ignore << %w(
|
|
72
|
-
ignore << %w(INST HEALTH_STATUS GROUND2STATUS)
|
|
70
|
+
ignore << %w(SYSTEM META COMPUTER)
|
|
71
|
+
ignore << %w(SYSTEM META VERSION)
|
|
73
72
|
expect { get_overall_limits_state(ignore) }.to raise_error(DRb::DRbConnError)
|
|
74
73
|
|
|
75
74
|
clear_disconnected_targets()
|
|
@@ -36,7 +36,7 @@ module Cosmos
|
|
|
36
36
|
describe "play_wav_file" do
|
|
37
37
|
it "plays a wav file if Qt is available" do
|
|
38
38
|
module Qt
|
|
39
|
-
def self.execute_in_main_thread(bool); yield; end
|
|
39
|
+
def self.execute_in_main_thread(bool = true); yield; end
|
|
40
40
|
class CoreApplication; def self.instance; true; end; end;
|
|
41
41
|
class Sound; def self.isAvailable; true; end; end
|
|
42
42
|
end
|
|
@@ -670,6 +670,7 @@ module Cosmos
|
|
|
670
670
|
class ScriptRunnerFrame; def self.instance; true; end; end
|
|
671
671
|
allow(ScriptRunnerFrame).to receive_message_chain(:instance, :pause?).and_return(true)
|
|
672
672
|
expect(ScriptRunnerFrame).to receive_message_chain(:instance, :perform_pause)
|
|
673
|
+
expect(ScriptRunnerFrame).to receive_message_chain(:instance, :active_script_highlight)
|
|
673
674
|
cosmos_script_sleep(0.1)
|
|
674
675
|
end
|
|
675
676
|
end
|
data/spec/script/tools_spec.rb
CHANGED
|
@@ -57,82 +57,87 @@ module Cosmos
|
|
|
57
57
|
ss = TcpipSocketStream.new('write',nil,nil,nil)
|
|
58
58
|
ss.connect
|
|
59
59
|
expect { ss.read }.to raise_error("Attempt to read from write only stream")
|
|
60
|
+
ss.disconnect
|
|
60
61
|
end
|
|
61
62
|
|
|
62
63
|
it "calls read_nonblock from the socket" do
|
|
63
64
|
server = TCPServer.new(2000) # Server bound to port 2000
|
|
64
65
|
thread = Thread.new do
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
client.close
|
|
70
|
-
end
|
|
66
|
+
client = server.accept # Wait for a client to connect
|
|
67
|
+
sleep 0.1
|
|
68
|
+
client.write "test"
|
|
69
|
+
client.close
|
|
71
70
|
end
|
|
71
|
+
sleep 0.1
|
|
72
72
|
socket = TCPSocket.new('localhost', 2000)
|
|
73
73
|
ss = TcpipSocketStream.new(nil,socket,nil,nil)
|
|
74
74
|
expect(ss.read_nonblock).to eql ''
|
|
75
75
|
sleep 0.2
|
|
76
76
|
expect(ss.read_nonblock).to eql 'test'
|
|
77
|
+
thread.join
|
|
77
78
|
Cosmos.close_socket(socket)
|
|
78
79
|
Cosmos.close_socket(server)
|
|
79
|
-
thread.kill
|
|
80
80
|
sleep 0.1
|
|
81
|
+
ss.disconnect
|
|
81
82
|
end
|
|
82
83
|
|
|
83
84
|
it "handles socket blocking exceptions" do
|
|
84
85
|
server = TCPServer.new(2000) # Server bound to port 2000
|
|
85
86
|
thread = Thread.new do
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
client.close
|
|
91
|
-
end
|
|
87
|
+
client = server.accept # Wait for a client to connect
|
|
88
|
+
sleep 0.2
|
|
89
|
+
client.write "test"
|
|
90
|
+
client.close
|
|
92
91
|
end
|
|
92
|
+
sleep 0.1
|
|
93
93
|
socket = TCPSocket.new('localhost', 2000)
|
|
94
94
|
ss = TcpipSocketStream.new(nil,socket,nil,nil)
|
|
95
95
|
expect(ss.read).to eql 'test'
|
|
96
|
+
thread.join
|
|
96
97
|
Cosmos.close_socket(socket)
|
|
97
98
|
Cosmos.close_socket(server)
|
|
98
|
-
thread.kill
|
|
99
99
|
sleep 0.1
|
|
100
|
+
ss.disconnect
|
|
100
101
|
end
|
|
101
102
|
|
|
102
103
|
it "handles socket timeouts" do
|
|
103
104
|
server = TCPServer.new(2000) # Server bound to port 2000
|
|
104
105
|
thread = Thread.new do
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
client.close
|
|
109
|
-
end
|
|
106
|
+
client = server.accept # Wait for a client to connect
|
|
107
|
+
sleep 0.2
|
|
108
|
+
client.close
|
|
110
109
|
end
|
|
111
110
|
socket = TCPSocket.new('localhost', 2000)
|
|
112
111
|
ss = TcpipSocketStream.new(nil,socket,nil,0.1)
|
|
113
112
|
expect { ss.read }.to raise_error(Timeout::Error)
|
|
113
|
+
thread.join
|
|
114
114
|
sleep 0.2
|
|
115
115
|
Cosmos.close_socket(socket)
|
|
116
116
|
Cosmos.close_socket(server)
|
|
117
|
-
|
|
117
|
+
ss.disconnect
|
|
118
118
|
sleep 0.1
|
|
119
119
|
end
|
|
120
120
|
|
|
121
121
|
it "handles socket connection reset exceptions" do
|
|
122
122
|
server = TCPServer.new(2000) # Server bound to port 2000
|
|
123
123
|
thread = Thread.new do
|
|
124
|
-
|
|
125
|
-
|
|
124
|
+
client = server.accept # Wait for a client to connect
|
|
125
|
+
sleep 0.2
|
|
126
|
+
begin
|
|
126
127
|
client.close
|
|
128
|
+
rescue IOError
|
|
129
|
+
# Closing the socket causes an IOError
|
|
127
130
|
end
|
|
128
131
|
end
|
|
129
132
|
socket = TCPSocket.new('localhost', 2000)
|
|
130
133
|
ss = TcpipSocketStream.new(nil,socket,nil,5)
|
|
134
|
+
sleep 0.1 # Allow the server thread to accept
|
|
131
135
|
# Close the socket before trying to read from it
|
|
132
136
|
Cosmos.close_socket(socket)
|
|
133
137
|
expect(ss.read).to eql ''
|
|
134
138
|
Cosmos.close_socket(server)
|
|
135
|
-
thread.
|
|
139
|
+
thread.join
|
|
140
|
+
ss.disconnect
|
|
136
141
|
sleep 0.1
|
|
137
142
|
end
|
|
138
143
|
end
|
|
@@ -142,6 +147,7 @@ module Cosmos
|
|
|
142
147
|
ss = TcpipSocketStream.new(nil,'read',nil,nil)
|
|
143
148
|
ss.connect
|
|
144
149
|
expect { ss.write('test') }.to raise_error("Attempt to write to read only stream")
|
|
150
|
+
ss.disconnect
|
|
145
151
|
end
|
|
146
152
|
|
|
147
153
|
it "calls write from the driver" do
|
|
@@ -151,6 +157,7 @@ module Cosmos
|
|
|
151
157
|
ss = TcpipSocketStream.new(write,nil,nil,nil)
|
|
152
158
|
ss.connect
|
|
153
159
|
ss.write('test')
|
|
160
|
+
ss.disconnect
|
|
154
161
|
end
|
|
155
162
|
|
|
156
163
|
it "handles socket blocking exceptions" do
|
|
@@ -169,6 +176,7 @@ module Cosmos
|
|
|
169
176
|
ss = TcpipSocketStream.new(write,nil,nil,nil)
|
|
170
177
|
ss.connect
|
|
171
178
|
ss.write('test')
|
|
179
|
+
ss.disconnect
|
|
172
180
|
end
|
|
173
181
|
|
|
174
182
|
it "handles socket timeouts" do
|
|
@@ -178,6 +186,7 @@ module Cosmos
|
|
|
178
186
|
ss = TcpipSocketStream.new(write,nil,nil,nil)
|
|
179
187
|
ss.connect
|
|
180
188
|
expect { ss.write('test') }.to raise_error(Timeout::Error)
|
|
189
|
+
ss.disconnect
|
|
181
190
|
end
|
|
182
191
|
end
|
|
183
192
|
|
|
@@ -217,10 +226,6 @@ module Cosmos
|
|
|
217
226
|
expect(ss.connected?).to be false
|
|
218
227
|
end
|
|
219
228
|
end
|
|
220
|
-
|
|
221
229
|
end
|
|
222
|
-
|
|
223
230
|
end # TEMP for Jruby
|
|
224
|
-
|
|
225
231
|
end
|
|
226
|
-
|
data/spec/system/system_spec.rb
CHANGED
|
@@ -45,7 +45,7 @@ module Cosmos
|
|
|
45
45
|
describe "instance" do
|
|
46
46
|
it "creates default ports" do
|
|
47
47
|
# Don't check the actual port numbers but just that they exist
|
|
48
|
-
expect(System.ports.keys).to eql %w(CTS_API TLMVIEWER_API CTS_PREIDENTIFIED CTS_CMD_ROUTER REPLAY_API REPLAY_PREIDENTIFIED REPLAY_CMD_ROUTER DART_DECOM
|
|
48
|
+
expect(System.ports.keys).to eql %w(CTS_API TLMVIEWER_API CTS_PREIDENTIFIED CTS_CMD_ROUTER REPLAY_API REPLAY_PREIDENTIFIED REPLAY_CMD_ROUTER DART_STREAM DART_DECOM DART_MASTER)
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
it "creates default paths" do
|
|
@@ -263,7 +263,7 @@ module Cosmos
|
|
|
263
263
|
end
|
|
264
264
|
|
|
265
265
|
describe "packets and System.packets" do
|
|
266
|
-
it "calculates
|
|
266
|
+
it "calculates hash strings across all the target files" do
|
|
267
267
|
capture_io do |stdout|
|
|
268
268
|
# This line actually does the work of reading the configuration
|
|
269
269
|
expect(System.telemetry.target_names).to eql ['INST', 'SYSTEM']
|
|
@@ -349,7 +349,7 @@ module Cosmos
|
|
|
349
349
|
# Try loading something that doesn't exist
|
|
350
350
|
# It should fail and reload the original configuration
|
|
351
351
|
name, err = System.load_configuration("BLAH")
|
|
352
|
-
expect(err).to eql
|
|
352
|
+
expect(err.message).to eql "Unable to find configuration: BLAH"
|
|
353
353
|
expect(name).to eql original_config_name
|
|
354
354
|
|
|
355
355
|
# Now load the second configuration. It shouldn't have the most
|
|
@@ -488,6 +488,8 @@ module Cosmos
|
|
|
488
488
|
tf.close
|
|
489
489
|
FileUtils.mkdir_p(File.join(@config_targets, 'TGT'))
|
|
490
490
|
System.instance.process_file(tf.path)
|
|
491
|
+
expect(System.targets.key?('TGT')).to be true
|
|
492
|
+
expect(System.targets.key?('SYSTEM')).to be true
|
|
491
493
|
tf.unlink
|
|
492
494
|
end
|
|
493
495
|
|
|
@@ -701,6 +703,114 @@ module Cosmos
|
|
|
701
703
|
end
|
|
702
704
|
end
|
|
703
705
|
|
|
706
|
+
context "with ALLOW_ROUTER_COMMANDING" do
|
|
707
|
+
it "takes 0 parameters" do
|
|
708
|
+
tf = Tempfile.new('unittest')
|
|
709
|
+
tf.puts("ALLOW_ROUTER_COMMANDING BLAH TRUE")
|
|
710
|
+
tf.close
|
|
711
|
+
expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Too many parameters for ALLOW_ROUTER_COMMANDING./)
|
|
712
|
+
tf.unlink
|
|
713
|
+
end
|
|
714
|
+
|
|
715
|
+
it "allows router commanding" do
|
|
716
|
+
tf = Tempfile.new('unittest')
|
|
717
|
+
tf.puts("ALLOW_ROUTER_COMMANDING")
|
|
718
|
+
tf.close
|
|
719
|
+
expect(System.allow_router_commanding).to be false
|
|
720
|
+
System.instance.process_file(tf.path)
|
|
721
|
+
expect(System.allow_router_commanding).to be true
|
|
722
|
+
tf.unlink
|
|
723
|
+
end
|
|
724
|
+
|
|
725
|
+
it "it disallows router commanding if not present" do
|
|
726
|
+
tf = Tempfile.new('unittest')
|
|
727
|
+
|
|
728
|
+
tf.close
|
|
729
|
+
expect(System.allow_router_commanding).to be false
|
|
730
|
+
System.instance.process_file(tf.path)
|
|
731
|
+
expect(System.allow_router_commanding).to be false
|
|
732
|
+
tf.unlink
|
|
733
|
+
end
|
|
734
|
+
end
|
|
735
|
+
|
|
736
|
+
context "with X_CSRF_TOKEN" do
|
|
737
|
+
it "takes 1 parameters" do
|
|
738
|
+
tf = Tempfile.new('unittest')
|
|
739
|
+
tf.puts("X_CSRF_TOKEN")
|
|
740
|
+
tf.close
|
|
741
|
+
expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Not enough parameters for X_CSRF_TOKEN./)
|
|
742
|
+
tf.unlink
|
|
743
|
+
|
|
744
|
+
tf = Tempfile.new('unittest')
|
|
745
|
+
tf.puts("X_CSRF_TOKEN localhost true")
|
|
746
|
+
tf.close
|
|
747
|
+
expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Too many parameters for X_CSRF_TOKEN./)
|
|
748
|
+
tf.unlink
|
|
749
|
+
end
|
|
750
|
+
|
|
751
|
+
it "updates the CSRF token" do
|
|
752
|
+
tf = Tempfile.new('unittest')
|
|
753
|
+
tf.puts("X_CSRF_TOKEN ExtraSpecial")
|
|
754
|
+
tf.close
|
|
755
|
+
expect(System.x_csrf_token).to eql "SuperSecret"
|
|
756
|
+
System.instance.process_file(tf.path)
|
|
757
|
+
expect(System.x_csrf_token).to eql "ExtraSpecial"
|
|
758
|
+
tf.unlink
|
|
759
|
+
end
|
|
760
|
+
end
|
|
761
|
+
|
|
762
|
+
context "with ALLOW_HOST" do
|
|
763
|
+
it "takes 1 parameters" do
|
|
764
|
+
tf = Tempfile.new('unittest')
|
|
765
|
+
tf.puts("ALLOW_HOST")
|
|
766
|
+
tf.close
|
|
767
|
+
expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Not enough parameters for ALLOW_HOST./)
|
|
768
|
+
tf.unlink
|
|
769
|
+
|
|
770
|
+
tf = Tempfile.new('unittest')
|
|
771
|
+
tf.puts("ALLOW_HOST localhost true")
|
|
772
|
+
tf.close
|
|
773
|
+
expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Too many parameters for ALLOW_HOST./)
|
|
774
|
+
tf.unlink
|
|
775
|
+
end
|
|
776
|
+
|
|
777
|
+
it "adds to allowed hosts" do
|
|
778
|
+
tf = Tempfile.new('unittest')
|
|
779
|
+
tf.puts("ALLOW_HOST 1.2.3.4:8888")
|
|
780
|
+
tf.close
|
|
781
|
+
expect(System.allowed_hosts).to_not include("1.2.3.4:8888")
|
|
782
|
+
System.instance.process_file(tf.path)
|
|
783
|
+
expect(System.allowed_hosts).to include("1.2.3.4:8888")
|
|
784
|
+
tf.unlink
|
|
785
|
+
end
|
|
786
|
+
end
|
|
787
|
+
|
|
788
|
+
context "with ALLOW_ORIGIN" do
|
|
789
|
+
it "takes 1 parameters" do
|
|
790
|
+
tf = Tempfile.new('unittest')
|
|
791
|
+
tf.puts("ALLOW_ORIGIN")
|
|
792
|
+
tf.close
|
|
793
|
+
expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Not enough parameters for ALLOW_ORIGIN./)
|
|
794
|
+
tf.unlink
|
|
795
|
+
|
|
796
|
+
tf = Tempfile.new('unittest')
|
|
797
|
+
tf.puts("ALLOW_ORIGIN localhost true")
|
|
798
|
+
tf.close
|
|
799
|
+
expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Too many parameters for ALLOW_ORIGIN./)
|
|
800
|
+
tf.unlink
|
|
801
|
+
end
|
|
802
|
+
|
|
803
|
+
it "adds to allowed origins" do
|
|
804
|
+
tf = Tempfile.new('unittest')
|
|
805
|
+
tf.puts("ALLOW_ORIGIN 1.2.3.4:8888")
|
|
806
|
+
tf.close
|
|
807
|
+
expect(System.allowed_origins).to_not include("1.2.3.4:8888")
|
|
808
|
+
System.instance.process_file(tf.path)
|
|
809
|
+
expect(System.allowed_origins).to include("1.2.3.4:8888")
|
|
810
|
+
tf.unlink
|
|
811
|
+
end
|
|
812
|
+
end
|
|
813
|
+
|
|
704
814
|
context "with ALLOW_ACCESS" do
|
|
705
815
|
it "takes 1 parameters" do
|
|
706
816
|
tf = Tempfile.new('unittest')
|
|
@@ -870,12 +980,85 @@ module Cosmos
|
|
|
870
980
|
tf.puts("ADD_MD5_FILE #{File.expand_path(md5f.path)}")
|
|
871
981
|
tf.close
|
|
872
982
|
System.instance.process_file(tf.path)
|
|
873
|
-
expect(System.
|
|
983
|
+
expect(System.additional_hashing_files.include?(File.expand_path(md5f.path))).to be true
|
|
874
984
|
md5f.close
|
|
875
985
|
md5f.unlink
|
|
876
986
|
tf.unlink
|
|
877
987
|
end
|
|
878
988
|
end
|
|
989
|
+
|
|
990
|
+
context "with ADD_HASH_FILE" do
|
|
991
|
+
it "takes 1 parameter" do
|
|
992
|
+
tf = Tempfile.new('unittest')
|
|
993
|
+
tf.puts("ADD_HASH_FILE")
|
|
994
|
+
tf.close
|
|
995
|
+
expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Not enough parameters for ADD_HASH_FILE./)
|
|
996
|
+
tf.unlink
|
|
997
|
+
|
|
998
|
+
tf = Tempfile.new('unittest')
|
|
999
|
+
tf.puts("ADD_HASH_FILE 1 2")
|
|
1000
|
+
tf.close
|
|
1001
|
+
expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Too many parameters for ADD_HASH_FILE./)
|
|
1002
|
+
tf.unlink
|
|
1003
|
+
end
|
|
1004
|
+
|
|
1005
|
+
it "complains about missing files" do
|
|
1006
|
+
tf = Tempfile.new('unittest')
|
|
1007
|
+
tf.puts("ADD_HASH_FILE missing_file")
|
|
1008
|
+
tf.close
|
|
1009
|
+
expect { System.instance.process_file(tf.path) }.to raise_error(/Missing expected file: missing_file/)
|
|
1010
|
+
tf.unlink
|
|
1011
|
+
end
|
|
1012
|
+
|
|
1013
|
+
it "adds a file to the hashing sum calculation" do
|
|
1014
|
+
hashf = Tempfile.new('hash_file')
|
|
1015
|
+
tf = Tempfile.new('unittest')
|
|
1016
|
+
tf.puts("ADD_HASH_FILE #{File.expand_path(hashf.path)}")
|
|
1017
|
+
tf.close
|
|
1018
|
+
System.instance.process_file(tf.path)
|
|
1019
|
+
expect(System.additional_hashing_files.include?(File.expand_path(hashf.path))).to be true
|
|
1020
|
+
hashf.close
|
|
1021
|
+
hashf.unlink
|
|
1022
|
+
tf.unlink
|
|
1023
|
+
end
|
|
1024
|
+
end
|
|
1025
|
+
|
|
1026
|
+
context "with HASHING_ALGORITHM" do
|
|
1027
|
+
it "takes 1 parameter" do
|
|
1028
|
+
tf = Tempfile.new('unittest')
|
|
1029
|
+
tf.puts("HASHING_ALGORITHM")
|
|
1030
|
+
tf.close
|
|
1031
|
+
expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Not enough parameters for HASHING_ALGORITHM./)
|
|
1032
|
+
tf.unlink
|
|
1033
|
+
|
|
1034
|
+
tf = Tempfile.new('unittest')
|
|
1035
|
+
tf.puts("HASHING_ALGORITHM 1 2")
|
|
1036
|
+
tf.close
|
|
1037
|
+
expect { System.instance.process_file(tf.path) }.to raise_error(ConfigParser::Error, /Too many parameters for HASHING_ALGORITHM./)
|
|
1038
|
+
tf.unlink
|
|
1039
|
+
end
|
|
1040
|
+
|
|
1041
|
+
it "complains about invalid algorithms" do
|
|
1042
|
+
tf = Tempfile.new('unittest')
|
|
1043
|
+
tf.puts("HASHING_ALGORITHM BAD")
|
|
1044
|
+
tf.close
|
|
1045
|
+
expect(Logger).to receive(:error) do |msg|
|
|
1046
|
+
expect(msg).to eql "Unrecognized hashing algorithm: BAD, using default algorithm MD5"
|
|
1047
|
+
end
|
|
1048
|
+
System.instance.process_file(tf.path)
|
|
1049
|
+
expect(System.hashing_algorithm).to eql 'MD5'
|
|
1050
|
+
tf.unlink
|
|
1051
|
+
end
|
|
1052
|
+
|
|
1053
|
+
it "sets the hashing algorithm" do
|
|
1054
|
+
tf = Tempfile.new('unittest')
|
|
1055
|
+
tf.puts("HASHING_ALGORITHM SHA256")
|
|
1056
|
+
tf.close
|
|
1057
|
+
System.instance.process_file(tf.path)
|
|
1058
|
+
expect(System.hashing_algorithm).to eql 'SHA256'
|
|
1059
|
+
tf.unlink
|
|
1060
|
+
end
|
|
1061
|
+
end
|
|
879
1062
|
end
|
|
880
1063
|
|
|
881
1064
|
describe "Cosmos.write_exception_file" do
|