cosmos 4.1.1-java → 4.2.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/.gitignore +0 -2
- data/.travis.yml +2 -0
- data/.yardopts +1 -0
- data/Gemfile +1 -0
- data/Manifest.txt +130 -0
- data/autohotkey/tools/ConfigEditorAHK +19 -0
- data/autohotkey/tools/cmd_extractor.ahk +4 -4
- data/autohotkey/tools/cmd_sequence.ahk +9 -5
- data/autohotkey/tools/config_editor.ahk +197 -0
- data/autohotkey/tools/packet_viewer.ahk +12 -6
- data/autohotkey/tools/replay.ahk +29 -29
- data/autohotkey/tools/script_runner.ahk +10 -2
- data/autohotkey/tools/tlm_extractor.ahk +7 -8
- data/autohotkey/tools/tlm_grapher.ahk +21 -9
- data/bin/dart_import +2 -0
- data/cosmos.gemspec +18 -16
- data/data/config/cmd_tlm_server.yaml +9 -0
- data/data/config/interface_modifiers.yaml +17 -0
- data/data/config/item_modifiers.yaml +3 -3
- data/data/crc.txt +184 -90
- data/data/dart.png +0 -0
- data/demo/Gemfile +1 -0
- data/demo/Rakefile +4 -0
- data/demo/config/dart/Gemfile +54 -0
- data/demo/config/data/crc.txt +28 -21
- data/demo/config/system/system.txt +3 -0
- data/demo/config/system/system2.txt +3 -0
- data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +3 -3
- data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +1 -1
- data/demo/config/targets/INST/lib/sim_inst.rb +1 -1
- data/demo/config/targets/INST/screens/adcs.txt +2 -1
- data/demo/config/targets/INST/screens/array.txt +1 -1
- data/demo/config/targets/INST/screens/block.txt +1 -1
- data/demo/config/targets/INST/screens/commanding.txt +7 -2
- data/demo/config/targets/INST/screens/graphs.txt +1 -1
- data/demo/config/targets/INST/screens/ground.txt +1 -1
- data/demo/config/targets/INST/screens/hs.txt +2 -1
- data/demo/config/targets/INST/screens/latest.txt +1 -1
- data/demo/config/targets/INST/screens/limits.txt +1 -1
- data/demo/config/targets/INST/screens/other.txt +1 -1
- data/demo/config/targets/INST/screens/tabs.txt +1 -1
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
- data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +3 -1
- data/demo/config/tools/launcher/launcher.txt +3 -2
- data/demo/tools/Dart +16 -0
- data/demo/tools/Dart.bat +9 -0
- data/demo/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +0 -0
- data/demo/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +0 -0
- data/install/Gemfile +1 -0
- data/install/Rakefile +4 -0
- data/install/config/dart/Gemfile +54 -0
- data/install/config/data/crc.txt +6 -3
- data/install/config/system/system.txt +3 -0
- data/install/config/tools/launcher/launcher.txt +3 -2
- data/install/tools/Dart +16 -0
- data/install/tools/Dart.bat +9 -0
- data/install/tools/mac/CmdSequence.app/Contents/MacOS/main.sh +0 -0
- data/install/tools/mac/ConfigEditor.app/Contents/MacOS/main.sh +0 -0
- data/lib/cosmos/core_ext/time.rb +8 -8
- data/lib/cosmos/dart/.rspec +1 -0
- data/lib/cosmos/dart/Gemfile +69 -0
- data/lib/cosmos/dart/Rakefile +7 -0
- data/lib/cosmos/dart/app/assets/config/manifest.js +4 -0
- data/lib/cosmos/dart/app/assets/images/.keep +0 -0
- data/lib/cosmos/dart/app/assets/javascripts/application.js +13 -0
- data/lib/cosmos/dart/app/assets/javascripts/cable.js +13 -0
- data/lib/cosmos/dart/app/assets/stylesheets/application.css.scss +15 -0
- data/lib/cosmos/dart/app/channels/application_cable/channel.rb +4 -0
- data/lib/cosmos/dart/app/channels/application_cable/connection.rb +4 -0
- data/lib/cosmos/dart/app/controllers/application_controller.rb +3 -0
- data/lib/cosmos/dart/app/helpers/application_helper.rb +2 -0
- data/lib/cosmos/dart/app/jobs/application_job.rb +2 -0
- data/lib/cosmos/dart/app/mailers/application_mailer.rb +4 -0
- data/lib/cosmos/dart/app/models/application_record.rb +3 -0
- data/lib/cosmos/dart/app/models/item.rb +6 -0
- data/lib/cosmos/dart/app/models/item_to_decom_table_mapping.rb +9 -0
- data/lib/cosmos/dart/app/models/packet.rb +4 -0
- data/lib/cosmos/dart/app/models/packet_config.rb +7 -0
- data/lib/cosmos/dart/app/models/packet_log.rb +3 -0
- data/lib/cosmos/dart/app/models/packet_log_entry.rb +41 -0
- data/lib/cosmos/dart/app/models/system_config.rb +2 -0
- data/lib/cosmos/dart/app/models/target.rb +4 -0
- data/lib/cosmos/dart/app/views/layouts/application.html.erb +14 -0
- data/lib/cosmos/dart/app/views/layouts/mailer.html.erb +13 -0
- data/lib/cosmos/dart/app/views/layouts/mailer.text.erb +1 -0
- data/lib/cosmos/dart/bin/bundle +3 -0
- data/lib/cosmos/dart/bin/rails +4 -0
- data/lib/cosmos/dart/bin/rake +4 -0
- data/lib/cosmos/dart/bin/setup +34 -0
- data/lib/cosmos/dart/bin/update +29 -0
- data/lib/cosmos/dart/config.ru +5 -0
- data/lib/cosmos/dart/config/application.rb +29 -0
- data/lib/cosmos/dart/config/boot.rb +3 -0
- data/lib/cosmos/dart/config/cable.yml +9 -0
- data/lib/cosmos/dart/config/database.yml +23 -0
- data/lib/cosmos/dart/config/environment.rb +5 -0
- data/lib/cosmos/dart/config/environments/development.rb +62 -0
- data/lib/cosmos/dart/config/environments/production.rb +84 -0
- data/lib/cosmos/dart/config/environments/test.rb +42 -0
- data/lib/cosmos/dart/config/initializers/application_controller_renderer.rb +6 -0
- data/lib/cosmos/dart/config/initializers/assets.rb +12 -0
- data/lib/cosmos/dart/config/initializers/backtrace_silencers.rb +7 -0
- data/lib/cosmos/dart/config/initializers/cookies_serializer.rb +5 -0
- data/lib/cosmos/dart/config/initializers/filter_parameter_logging.rb +4 -0
- data/lib/cosmos/dart/config/initializers/inflections.rb +16 -0
- data/lib/cosmos/dart/config/initializers/mime_types.rb +4 -0
- data/lib/cosmos/dart/config/initializers/new_framework_defaults.rb +25 -0
- data/lib/cosmos/dart/config/initializers/session_store.rb +3 -0
- data/lib/cosmos/dart/config/initializers/wrap_parameters.rb +14 -0
- data/lib/cosmos/dart/config/locales/en.yml +23 -0
- data/lib/cosmos/dart/config/puma.rb +47 -0
- data/lib/cosmos/dart/config/routes.rb +3 -0
- data/lib/cosmos/dart/config/secrets.yml +22 -0
- data/lib/cosmos/dart/db/migrate/20170406172907_create_targets.rb +8 -0
- data/lib/cosmos/dart/db/migrate/20170406172927_create_packets.rb +10 -0
- data/lib/cosmos/dart/db/migrate/20170406172937_create_packet_logs.rb +9 -0
- data/lib/cosmos/dart/db/migrate/20170406172943_create_packet_log_entries.rb +16 -0
- data/lib/cosmos/dart/db/migrate/20170406183500_change_packet_log_entries_primary_key.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20170407153618_add_unique_requirements.rb +7 -0
- data/lib/cosmos/dart/db/migrate/20170511155447_add_meta_id_to_packet_log_entries.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170523185056_rename_received_time_and_add_is_tlm_to_packet_log_entries.rb +7 -0
- data/lib/cosmos/dart/db/migrate/20170525201157_create_items.rb +10 -0
- data/lib/cosmos/dart/db/migrate/20170525201315_create_system_configs.rb +9 -0
- data/lib/cosmos/dart/db/migrate/20170525201624_create_packet_configs.rb +11 -0
- data/lib/cosmos/dart/db/migrate/20170525201745_create_item_to_decom_table_mappings.rb +12 -0
- data/lib/cosmos/dart/db/migrate/20170525201939_create_decom_tables.rb +12 -0
- data/lib/cosmos/dart/db/migrate/20170525202051_add_decom_state_to_packet_log_entry.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20170913160409_update_items.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170913160558_update_item_to_decom_table_mapping.rb +11 -0
- data/lib/cosmos/dart/db/migrate/20170913160916_udpate_decom_table.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170913212026_add_ready_to_packet_configs.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20170913223556_modify_tables.rb +9 -0
- data/lib/cosmos/dart/db/migrate/20170914215744_modify_mapping_table.rb +6 -0
- data/lib/cosmos/dart/db/migrate/20170919201433_add_system_config_id_to_packet_config.rb +11 -0
- data/lib/cosmos/dart/db/migrate/20170919210307_add_max_table_index_to_packet_configs.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20171215225546_add_ready_to_packet_log_entries.rb +5 -0
- data/lib/cosmos/dart/db/migrate/20180116214338_add_index_for_ple_ready_to_packet_log_entries.rb +5 -0
- data/lib/cosmos/dart/db/schema.rb +103 -0
- data/lib/cosmos/dart/db/seeds.rb +7 -0
- data/lib/cosmos/dart/examples/dart_decom_client.rb +45 -0
- data/lib/cosmos/dart/examples/dart_stream_client.rb +93 -0
- data/lib/cosmos/dart/lib/dart_common.rb +749 -0
- data/lib/cosmos/dart/lib/dart_database_cleaner.rb +172 -0
- data/lib/cosmos/dart/lib/dart_decom_query.rb +184 -0
- data/lib/cosmos/dart/lib/dart_decommutator.rb +235 -0
- data/lib/cosmos/dart/lib/dart_importer.rb +154 -0
- data/lib/cosmos/dart/lib/dart_logging.rb +50 -0
- data/lib/cosmos/dart/lib/dart_packet_log_writer.rb +139 -0
- data/lib/cosmos/dart/lib/dart_reducer_manager.rb +85 -0
- data/lib/cosmos/dart/lib/dart_reducer_worker_thread.rb +263 -0
- data/lib/cosmos/dart/lib/dart_tcpip_server_interface.rb +142 -0
- data/lib/cosmos/dart/processes/dart.rb +145 -0
- data/lib/cosmos/dart/processes/dart_decom_server.rb +39 -0
- data/lib/cosmos/dart/processes/dart_import.rb +63 -0
- data/lib/cosmos/dart/processes/dart_ingester.rb +92 -0
- data/lib/cosmos/dart/processes/dart_reducer.rb +27 -0
- data/lib/cosmos/dart/processes/dart_stream_server.rb +31 -0
- data/lib/cosmos/dart/processes/dart_worker.rb +37 -0
- data/lib/cosmos/dart/spec/dart/dart_common_spec.rb +333 -0
- data/lib/cosmos/dart/spec/dart/dart_database_cleaner_spec.rb +455 -0
- data/lib/cosmos/dart/spec/dart/dart_decom_query_spec.rb +153 -0
- data/lib/cosmos/dart/spec/dart/dart_decommutator_spec.rb +336 -0
- data/lib/cosmos/dart/spec/dart/dart_importer_spec.rb +83 -0
- data/lib/cosmos/dart/spec/dart/dart_logging_spec.rb +30 -0
- data/lib/cosmos/dart/spec/dart/dart_packet_log_writer_spec.rb +149 -0
- data/lib/cosmos/dart/spec/dart/dart_reducer_manager_spec.rb +289 -0
- data/lib/cosmos/dart/spec/dart/dart_tcpip_server_interface_spec.rb +241 -0
- data/lib/cosmos/dart/spec/rails_helper.rb +60 -0
- data/lib/cosmos/dart/spec/spec_helper.rb +139 -0
- data/lib/cosmos/gui/dialogs/about_dialog.rb +1 -1
- data/lib/cosmos/gui/dialogs/dart_dialog.rb +60 -0
- data/lib/cosmos/gui/dialogs/legal_dialog.rb +1 -0
- data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +0 -3
- data/lib/cosmos/gui/qt.rb +10 -1
- data/lib/cosmos/gui/text/completion.rb +10 -9
- data/lib/cosmos/gui/text/completion_text_edit.rb +16 -14
- data/lib/cosmos/gui/text/ruby_editor.rb +2 -2
- data/lib/cosmos/gui/widgets/dart_frame.rb +142 -0
- data/lib/cosmos/gui/widgets/dart_meta_frame.rb +119 -0
- data/lib/cosmos/gui/widgets/packet_log_frame.rb +42 -12
- data/lib/cosmos/interfaces/interface.rb +1 -2
- data/lib/cosmos/interfaces/protocols/crc_protocol.rb +26 -8
- data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +8 -2
- data/lib/cosmos/interfaces/protocols/protocol.rb +2 -1
- data/lib/cosmos/interfaces/protocols/template_protocol.rb +1 -1
- data/lib/cosmos/interfaces/stream_interface.rb +1 -0
- data/lib/cosmos/interfaces/tcpip_server_interface.rb +2 -3
- data/lib/cosmos/io/json_drb_object.rb +1 -1
- data/lib/cosmos/io/json_rpc.rb +2 -1
- data/lib/cosmos/io/win32_serial_driver.rb +2 -9
- data/lib/cosmos/packet_logs/packet_log_writer.rb +1 -1
- data/lib/cosmos/packets/packet.rb +22 -12
- data/lib/cosmos/packets/packet_config.rb +2 -1
- data/lib/cosmos/packets/packet_item.rb +26 -24
- data/lib/cosmos/packets/parsers/macro_parser.rb +5 -2
- data/lib/cosmos/packets/parsers/packet_item_parser.rb +35 -17
- data/lib/cosmos/packets/parsers/packet_parser.rb +3 -10
- data/lib/cosmos/packets/parsers/xtce_converter.rb +21 -35
- data/lib/cosmos/packets/parsers/xtce_parser.rb +54 -46
- data/lib/cosmos/packets/structure.rb +10 -2
- data/lib/cosmos/packets/structure_item.rb +22 -8
- data/lib/cosmos/processors/statistics_processor.rb +2 -0
- data/lib/cosmos/script/api_shared.rb +13 -12
- data/lib/cosmos/script/cmd_tlm_server.rb +4 -0
- data/lib/cosmos/script/commands.rb +3 -15
- data/lib/cosmos/script/script.rb +69 -23
- data/lib/cosmos/streams/tcpip_client_stream.rb +2 -2
- data/lib/cosmos/system/system.rb +42 -25
- data/lib/cosmos/system/target.rb +6 -2
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +177 -36
- data/lib/cosmos/tools/cmd_sender/cmd_param_table_item_delegate.rb +3 -2
- data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +34 -8
- data/lib/cosmos/tools/cmd_sequence/cmd_sequence.rb +80 -25
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +19 -4
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +15 -14
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +15 -9
- data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +1 -9
- data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +1 -6
- data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +1 -3
- data/lib/cosmos/tools/cmd_tlm_server/gui/replay_tab.rb +84 -7
- data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +0 -1
- data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +1 -5
- data/lib/cosmos/tools/cmd_tlm_server/limits_groups_background_task.rb +3 -2
- data/lib/cosmos/tools/cmd_tlm_server/replay_backend.rb +159 -27
- data/lib/cosmos/tools/cmd_tlm_server/routers.rb +1 -1
- data/lib/cosmos/tools/config_editor/config_editor.rb +17 -52
- data/lib/cosmos/tools/config_editor/config_editor_frame.rb +0 -5
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +111 -0
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +31 -18
- data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +12 -3
- data/lib/cosmos/tools/script_runner/script_runner.rb +27 -14
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +104 -37
- data/lib/cosmos/tools/table_manager/table_config.rb +1 -1
- data/lib/cosmos/tools/table_manager/table_item_parser.rb +4 -2
- data/lib/cosmos/tools/table_manager/table_manager.rb +0 -5
- data/lib/cosmos/tools/table_manager/table_manager_core.rb +0 -1
- data/lib/cosmos/tools/test_runner/test.rb +1 -3
- data/lib/cosmos/tools/test_runner/test_runner.rb +26 -15
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +290 -137
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +122 -25
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +67 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +28 -0
- data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +36 -0
- data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +42 -3
- data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +88 -14
- data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +2 -5
- data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +2 -6
- data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +74 -18
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +3 -7
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_dart_thread.rb +159 -0
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +49 -2
- data/lib/cosmos/tools/tlm_viewer/screen.rb +3 -0
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +0 -2
- data/lib/cosmos/tools/tlm_viewer/widgets.rb +1 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/backgroundbutton_widget.rb +54 -0
- data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +5 -5
- data/lib/cosmos/top_level.rb +1 -0
- data/lib/cosmos/utilities/crc.rb +3 -0
- data/lib/cosmos/utilities/csv.rb +1 -0
- data/lib/cosmos/utilities/message_log.rb +2 -1
- data/lib/cosmos/utilities/simulated_target.rb +8 -8
- data/lib/cosmos/version.rb +5 -5
- data/lib/cosmos/win32/win32.rb +4 -10
- data/run_gui_tests.bat +2 -1
- data/spec/config/config_parser_spec.rb +4 -4
- data/spec/core_ext/array_spec.rb +1 -1
- data/spec/core_ext/exception_spec.rb +12 -12
- data/spec/core_ext/file_spec.rb +6 -6
- data/spec/core_ext/hash_spec.rb +1 -1
- data/spec/core_ext/socket_spec.rb +2 -2
- data/spec/core_ext/string_spec.rb +13 -13
- data/spec/core_ext/time_spec.rb +0 -2
- data/spec/gui/utilities/script_module_gui_spec.rb +3 -3
- data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +6 -6
- data/spec/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +4 -0
- data/spec/interfaces/cmd_tlm_server_interface_spec.rb +6 -2
- data/spec/interfaces/interface_spec.rb +0 -1
- data/spec/interfaces/linc_interface_spec.rb +0 -5
- data/spec/interfaces/protocols/crc_protocol_spec.rb +201 -85
- data/spec/interfaces/protocols/fixed_protocol_spec.rb +33 -9
- data/spec/interfaces/protocols/length_protocol_spec.rb +1 -1
- data/spec/interfaces/protocols/override_protocol_spec.rb +6 -2
- data/spec/interfaces/protocols/preidentified_protocol_spec.rb +1 -5
- data/spec/interfaces/protocols/template_protocol_spec.rb +0 -1
- data/spec/interfaces/simulated_target_interface_spec.rb +5 -5
- data/spec/interfaces/udp_interface_spec.rb +2 -4
- data/spec/io/buffered_file_spec.rb +8 -12
- data/spec/io/json_drb_spec.rb +9 -9
- data/spec/io/json_rpc_spec.rb +4 -4
- data/spec/io/raw_logger_spec.rb +4 -3
- data/spec/packet_logs/packet_log_reader_spec.rb +3 -6
- data/spec/packet_logs/packet_log_writer_spec.rb +4 -4
- data/spec/packets/binary_accessor_spec.rb +5 -8
- data/spec/packets/commands_spec.rb +2 -2
- data/spec/packets/limits_spec.rb +2 -2
- data/spec/packets/packet_config_spec.rb +12 -0
- data/spec/packets/packet_item_limits_spec.rb +1 -1
- data/spec/packets/packet_item_spec.rb +9 -9
- data/spec/packets/packet_spec.rb +15 -5
- data/spec/packets/parsers/packet_item_parser_spec.rb +27 -0
- data/spec/packets/parsers/xtce_parser_spec.rb +27 -30
- data/spec/packets/structure_spec.rb +2 -1
- data/spec/packets/telemetry_spec.rb +3 -5
- data/spec/processors/statistics_processor_spec.rb +35 -0
- data/spec/script/cmd_tlm_server_spec.rb +4 -21
- data/spec/script/commands_disconnect_spec.rb +46 -58
- data/spec/script/commands_spec.rb +40 -61
- data/spec/script/limits_spec.rb +1 -21
- data/spec/script/script_spec.rb +32 -41
- data/spec/script/scripting_spec.rb +166 -185
- data/spec/script/telemetry_spec.rb +10 -5
- data/spec/script/tools_spec.rb +2 -24
- data/spec/spec_helper.rb +11 -5
- data/spec/system/system_spec.rb +17 -12
- data/spec/tools/cmd_tlm_server/api_spec.rb +21 -10
- data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +15 -16
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +0 -1
- data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +16 -27
- data/spec/tools/cmd_tlm_server/commanding_spec.rb +2 -6
- data/spec/tools/cmd_tlm_server/connections_spec.rb +0 -4
- data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +13 -13
- data/spec/tools/cmd_tlm_server/interfaces_spec.rb +5 -9
- data/spec/tools/cmd_tlm_server/limits_groups_background_task_spec.rb +11 -3
- data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +0 -4
- data/spec/tools/cmd_tlm_server/router_thread_spec.rb +5 -5
- data/spec/tools/cmd_tlm_server/routers_spec.rb +5 -9
- data/spec/tools/table_manager/table_config_spec.rb +0 -1
- data/spec/tools/table_manager/tablemanager_core_spec.rb +23 -23
- data/spec/tools/tlm_viewer/tlm_viewer_config_spec.rb +6 -4
- data/spec/top_level/top_level_spec.rb +9 -9
- data/spec/utilities/csv_spec.rb +2 -12
- data/spec/utilities/logger_spec.rb +6 -6
- data/spec/utilities/message_log_spec.rb +3 -11
- data/tasks/gemfile_stats.rake +2 -2
- metadata +167 -60
|
@@ -13,21 +13,7 @@ require 'cosmos'
|
|
|
13
13
|
require 'cosmos/tools/cmd_tlm_server/cmd_tlm_server'
|
|
14
14
|
|
|
15
15
|
module Cosmos
|
|
16
|
-
|
|
17
16
|
describe CmdTlmServer do
|
|
18
|
-
before(:all) do
|
|
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|
|
|
22
|
-
file.puts 'INTERFACE SYSTEM_INT cmd_tlm_server_interface.rb'
|
|
23
|
-
file.puts ' TARGET SYSTEM'
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
after(:all) do
|
|
28
|
-
clean_config()
|
|
29
|
-
end
|
|
30
|
-
|
|
31
17
|
before(:each) do
|
|
32
18
|
allow_any_instance_of(Interface).to receive(:connect).and_return(true)
|
|
33
19
|
allow_any_instance_of(Interface).to receive(:connected?).and_return(true)
|
|
@@ -112,7 +98,7 @@ module Cosmos
|
|
|
112
98
|
cts.stop
|
|
113
99
|
sleep 0.2
|
|
114
100
|
|
|
115
|
-
expect(stdout.string).to match
|
|
101
|
+
expect(stdout.string).to match("Staleness Monitor thread unexpectedly died")
|
|
116
102
|
end
|
|
117
103
|
end
|
|
118
104
|
end
|
|
@@ -125,23 +111,23 @@ module Cosmos
|
|
|
125
111
|
pkt = Packet.new("TGT","PKT")
|
|
126
112
|
pi = PacketItem.new("TEST", 0, 32, :UINT, :BIG_ENDIAN, nil)
|
|
127
113
|
cts.limits_change_callback(pkt, pi, :STALE, 100, true)
|
|
128
|
-
expect(stdout.string).to match
|
|
114
|
+
expect(stdout.string).to match("TGT PKT TEST = 100 is UNKNOWN")
|
|
129
115
|
|
|
130
116
|
pi.limits.state = :BLUE
|
|
131
117
|
cts.limits_change_callback(pkt, pi, :STALE, 100, true)
|
|
132
|
-
expect(stdout.string).to match
|
|
118
|
+
expect(stdout.string).to match("<B>TGT PKT TEST = 100 is BLUE")
|
|
133
119
|
|
|
134
120
|
pi.limits.state = :GREEN
|
|
135
121
|
cts.limits_change_callback(pkt, pi, :STALE, 100, true)
|
|
136
|
-
expect(stdout.string).to match
|
|
122
|
+
expect(stdout.string).to match("<G>TGT PKT TEST = 100 is GREEN")
|
|
137
123
|
|
|
138
124
|
pi.limits.state = :YELLOW
|
|
139
125
|
cts.limits_change_callback(pkt, pi, :STALE, 100, true)
|
|
140
|
-
expect(stdout.string).to match
|
|
126
|
+
expect(stdout.string).to match("<Y>TGT PKT TEST = 100 is YELLOW")
|
|
141
127
|
|
|
142
128
|
pi.limits.state = :RED
|
|
143
129
|
cts.limits_change_callback(pkt, pi, :STALE, 100, true)
|
|
144
|
-
expect(stdout.string).to match
|
|
130
|
+
expect(stdout.string).to match("<R>TGT PKT TEST = 100 is RED")
|
|
145
131
|
ensure
|
|
146
132
|
cts.stop
|
|
147
133
|
sleep 0.2
|
|
@@ -152,7 +138,7 @@ module Cosmos
|
|
|
152
138
|
it "calls the limits response" do
|
|
153
139
|
cts = CmdTlmServer.new
|
|
154
140
|
begin
|
|
155
|
-
|
|
141
|
+
packet = Packet.new("TGT","PKT")
|
|
156
142
|
pi = PacketItem.new("TEST", 0, 32, :UINT, :BIG_ENDIAN, nil)
|
|
157
143
|
lr = LimitsResponse.new
|
|
158
144
|
pi.limits.response = lr
|
|
@@ -164,7 +150,7 @@ module Cosmos
|
|
|
164
150
|
expect(state).to eql :GREEN
|
|
165
151
|
end
|
|
166
152
|
pi.limits.state = :GREEN
|
|
167
|
-
cts.limits_change_callback(
|
|
153
|
+
cts.limits_change_callback(packet, pi, :YELLOW, 100, true)
|
|
168
154
|
ensure
|
|
169
155
|
cts.stop
|
|
170
156
|
sleep 0.2
|
|
@@ -183,7 +169,7 @@ module Cosmos
|
|
|
183
169
|
pi.limits.state = :GREEN
|
|
184
170
|
cts.limits_change_callback(pkt, pi, :YELLOW, 100, true)
|
|
185
171
|
sleep 0.1
|
|
186
|
-
expect(stdout.string).to match
|
|
172
|
+
expect(stdout.string).to match("TGT PKT TEST Limits Response Exception!")
|
|
187
173
|
ensure
|
|
188
174
|
cts.stop
|
|
189
175
|
sleep 0.2
|
|
@@ -256,7 +242,7 @@ module Cosmos
|
|
|
256
242
|
cts.limits_change_callback(pkt, pi, :GREEN, 100, true)
|
|
257
243
|
|
|
258
244
|
# Pull off one
|
|
259
|
-
|
|
245
|
+
CmdTlmServer.get_limits_event(id)
|
|
260
246
|
|
|
261
247
|
# Add two more to put us over the limit
|
|
262
248
|
cts.limits_change_callback(pkt, pi, :GREEN, 100, true)
|
|
@@ -289,7 +275,7 @@ module Cosmos
|
|
|
289
275
|
cts.limits_change_callback(pkt, pi, :GREEN, 100, true)
|
|
290
276
|
|
|
291
277
|
# Get one
|
|
292
|
-
|
|
278
|
+
CmdTlmServer.get_limits_event(id)
|
|
293
279
|
|
|
294
280
|
# Unsubscribe and try to get the other one
|
|
295
281
|
CmdTlmServer.unsubscribe_limits_events(id)
|
|
@@ -413,12 +399,15 @@ module Cosmos
|
|
|
413
399
|
end
|
|
414
400
|
|
|
415
401
|
it "works in disconnect mode" do
|
|
416
|
-
|
|
402
|
+
CmdTlmServer.new(CmdTlmServer::DEFAULT_CONFIG_FILE, false, true)
|
|
417
403
|
id = CmdTlmServer.subscribe_packet_data([["SYSTEM","LIMITS_CHANGE"]])
|
|
418
|
-
buffer,tgt,pkt,tv_sec,tv_usec,cnt = CmdTlmServer.get_packet_data(id, true)
|
|
404
|
+
buffer, tgt, pkt, tv_sec, tv_usec, cnt = CmdTlmServer.get_packet_data(id, true)
|
|
419
405
|
expect(buffer).not_to be_nil
|
|
420
406
|
expect(tgt).to eql "SYSTEM"
|
|
421
407
|
expect(pkt).to eql "LIMITS_CHANGE"
|
|
408
|
+
expect(tv_sec).to be > 0
|
|
409
|
+
expect(tv_usec).to be > 0
|
|
410
|
+
expect(cnt).to eql 1
|
|
422
411
|
end
|
|
423
412
|
end
|
|
424
413
|
|
|
@@ -17,10 +17,6 @@ require 'cosmos/tools/cmd_tlm_server/cmd_tlm_server_config'
|
|
|
17
17
|
module Cosmos
|
|
18
18
|
|
|
19
19
|
describe Commanding do
|
|
20
|
-
after(:all) do
|
|
21
|
-
clean_config()
|
|
22
|
-
end
|
|
23
|
-
|
|
24
20
|
describe "send_command_to_target" do
|
|
25
21
|
it "complains about unknown targets" do
|
|
26
22
|
tf = Tempfile.new('unittest')
|
|
@@ -109,7 +105,7 @@ module Cosmos
|
|
|
109
105
|
expect(System.commands.packet("UNKNOWN","UNKNOWN").buffer).to eql pkt.buffer
|
|
110
106
|
tf.unlink
|
|
111
107
|
|
|
112
|
-
expect(stdout.string).to match
|
|
108
|
+
expect(stdout.string).to match("Unidentified packet")
|
|
113
109
|
Logger.level = Logger::FATAL
|
|
114
110
|
$stdout = STDOUT
|
|
115
111
|
end
|
|
@@ -140,7 +136,7 @@ module Cosmos
|
|
|
140
136
|
cmd.send_raw('MY_INT', "\x00\x01")
|
|
141
137
|
tf.unlink
|
|
142
138
|
|
|
143
|
-
expect(stdout.string).to match
|
|
139
|
+
expect(stdout.string).to match("Unlogged raw data of 2 bytes being sent to interface MY_INT")
|
|
144
140
|
Logger.level = Logger::FATAL
|
|
145
141
|
$stdout = STDOUT
|
|
146
142
|
end
|
|
@@ -64,7 +64,7 @@ module Cosmos
|
|
|
64
64
|
sleep 0.2
|
|
65
65
|
expect(running_threads.length).to eql(1)
|
|
66
66
|
|
|
67
|
-
expect(stdout.string).to match
|
|
67
|
+
expect(stdout.string).to match("Connection Failed: RuntimeError : ConnectError")
|
|
68
68
|
end
|
|
69
69
|
end
|
|
70
70
|
|
|
@@ -89,7 +89,7 @@ module Cosmos
|
|
|
89
89
|
expect(running_threads.length).to eql(1)
|
|
90
90
|
expect(error_count).to eql 2
|
|
91
91
|
|
|
92
|
-
expect(stdout.string).not_to match
|
|
92
|
+
expect(stdout.string).not_to match("Connection Failed: ConnectError")
|
|
93
93
|
end
|
|
94
94
|
end
|
|
95
95
|
|
|
@@ -103,7 +103,7 @@ module Cosmos
|
|
|
103
103
|
sleep 0.2
|
|
104
104
|
expect(running_threads.length).to eql(1)
|
|
105
105
|
|
|
106
|
-
expect(stdout.string).to match
|
|
106
|
+
expect(stdout.string).to match("Connection Success")
|
|
107
107
|
end
|
|
108
108
|
end
|
|
109
109
|
|
|
@@ -122,7 +122,7 @@ module Cosmos
|
|
|
122
122
|
expect(running_threads.length).to eql(1)
|
|
123
123
|
expect(callback_called).to be true
|
|
124
124
|
|
|
125
|
-
expect(stdout.string).not_to match
|
|
125
|
+
expect(stdout.string).not_to match("Connection Success")
|
|
126
126
|
end
|
|
127
127
|
end
|
|
128
128
|
|
|
@@ -141,7 +141,7 @@ module Cosmos
|
|
|
141
141
|
sleep 0.2
|
|
142
142
|
expect(running_threads.length).to eql(1)
|
|
143
143
|
|
|
144
|
-
expect(stdout.string).to match
|
|
144
|
+
expect(stdout.string).to match("Connection Lost")
|
|
145
145
|
end
|
|
146
146
|
end
|
|
147
147
|
|
|
@@ -164,7 +164,7 @@ module Cosmos
|
|
|
164
164
|
expect(running_threads.length).to eql(1)
|
|
165
165
|
expect(callback_called).to be true
|
|
166
166
|
|
|
167
|
-
expect(stdout.string).not_to match
|
|
167
|
+
expect(stdout.string).not_to match("Connection Lost")
|
|
168
168
|
end
|
|
169
169
|
end
|
|
170
170
|
|
|
@@ -178,7 +178,7 @@ module Cosmos
|
|
|
178
178
|
thread.stop
|
|
179
179
|
sleep 0.2
|
|
180
180
|
expect(running_threads.length).to eql(1)
|
|
181
|
-
expect(stdout.string).to match
|
|
181
|
+
expect(stdout.string).to match("ReadError")
|
|
182
182
|
end
|
|
183
183
|
end
|
|
184
184
|
|
|
@@ -197,7 +197,7 @@ module Cosmos
|
|
|
197
197
|
sleep 0.2
|
|
198
198
|
expect(running_threads.length).to eql(1)
|
|
199
199
|
|
|
200
|
-
expect(stdout.string).to match
|
|
200
|
+
expect(stdout.string).to match("ECONNRESET")
|
|
201
201
|
end
|
|
202
202
|
end
|
|
203
203
|
|
|
@@ -210,7 +210,7 @@ module Cosmos
|
|
|
210
210
|
thread.stop
|
|
211
211
|
sleep 0.2
|
|
212
212
|
|
|
213
|
-
expect(stdout.string).to match
|
|
213
|
+
expect(stdout.string).to match("Packet reading thread unexpectedly died")
|
|
214
214
|
end
|
|
215
215
|
end
|
|
216
216
|
|
|
@@ -229,7 +229,7 @@ module Cosmos
|
|
|
229
229
|
sleep 0.2
|
|
230
230
|
expect(callback_called).to be true
|
|
231
231
|
|
|
232
|
-
expect(stdout.string).not_to match
|
|
232
|
+
expect(stdout.string).not_to match("Packet reading thread unexpectedly died")
|
|
233
233
|
end
|
|
234
234
|
end
|
|
235
235
|
|
|
@@ -244,7 +244,7 @@ module Cosmos
|
|
|
244
244
|
sleep 0.2
|
|
245
245
|
expect(running_threads.length).to eql(1)
|
|
246
246
|
|
|
247
|
-
expect(stdout.string).to match
|
|
247
|
+
expect(stdout.string).to match("Unknown 2 byte packet")
|
|
248
248
|
end
|
|
249
249
|
end
|
|
250
250
|
|
|
@@ -261,7 +261,7 @@ module Cosmos
|
|
|
261
261
|
thread.stop
|
|
262
262
|
sleep 0.2
|
|
263
263
|
expect(running_threads.length).to eql(1)
|
|
264
|
-
expect(stdout.string).to match
|
|
264
|
+
expect(stdout.string).to match("Received unknown identified telemetry: BOB SMITH")
|
|
265
265
|
end
|
|
266
266
|
end
|
|
267
267
|
|
|
@@ -281,7 +281,7 @@ module Cosmos
|
|
|
281
281
|
sleep 0.2
|
|
282
282
|
expect(running_threads.length).to eql(1)
|
|
283
283
|
|
|
284
|
-
expect(stdout.string).to match
|
|
284
|
+
expect(stdout.string).to match("Problem writing to router")
|
|
285
285
|
end
|
|
286
286
|
end
|
|
287
287
|
|
|
@@ -17,10 +17,6 @@ require 'cosmos/tools/cmd_tlm_server/cmd_tlm_server_config'
|
|
|
17
17
|
module Cosmos
|
|
18
18
|
|
|
19
19
|
describe Interfaces do
|
|
20
|
-
after(:all) do
|
|
21
|
-
clean_config()
|
|
22
|
-
end
|
|
23
|
-
|
|
24
20
|
describe "map_all_targets" do
|
|
25
21
|
it "complains about an unknown interface" do
|
|
26
22
|
tf = Tempfile.new('unittest')
|
|
@@ -100,7 +96,7 @@ module Cosmos
|
|
|
100
96
|
interfaces.all['MY_INT'].connect_on_startup = true
|
|
101
97
|
interfaces.start
|
|
102
98
|
|
|
103
|
-
expect(stdout.string).to match
|
|
99
|
+
expect(stdout.string).to match("Creating thread for interface MY_INT")
|
|
104
100
|
|
|
105
101
|
interfaces.stop
|
|
106
102
|
sleep 0.1
|
|
@@ -133,7 +129,7 @@ module Cosmos
|
|
|
133
129
|
sleep 0.5
|
|
134
130
|
expect(interfaces.state("MY_INT")).to eql "DISCONNECTED"
|
|
135
131
|
|
|
136
|
-
expect(stdout.string).to match
|
|
132
|
+
expect(stdout.string).to match("Disconnected from interface MY_INT")
|
|
137
133
|
|
|
138
134
|
sleep 0.1
|
|
139
135
|
end
|
|
@@ -187,14 +183,14 @@ module Cosmos
|
|
|
187
183
|
expect(config.interfaces['DEST2'].routers[0].name).to eql "MY_ROUTER"
|
|
188
184
|
interfaces.connect("DEST1")
|
|
189
185
|
sleep 0.2
|
|
190
|
-
expect(stdout.string).to match
|
|
186
|
+
expect(stdout.string).to match("Connecting to DEST1")
|
|
191
187
|
interfaces.disconnect("DEST1")
|
|
192
188
|
interfaces.connect("DEST1",'localhost',8888,8888,6,6,'length')
|
|
193
189
|
sleep 0.2
|
|
194
190
|
expect(config.interfaces['DEST1'].routers[0].name).to eql "MY_ROUTER"
|
|
195
191
|
expect(config.interfaces['DEST2'].routers[0].name).to eql "MY_ROUTER"
|
|
196
|
-
expect(stdout.string).to match
|
|
197
|
-
expect(stdout.string).to match
|
|
192
|
+
expect(stdout.string).to match("Disconnected from interface DEST1")
|
|
193
|
+
expect(stdout.string).to match("Connecting to DEST1")
|
|
198
194
|
interfaces.disconnect("DEST1")
|
|
199
195
|
interfaces.stop
|
|
200
196
|
|
|
@@ -32,12 +32,20 @@ module Cosmos
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
describe "call" do
|
|
35
|
-
it "
|
|
35
|
+
it "warns if the group is not defined" do
|
|
36
36
|
class MyLimitsGroups1 < LimitsGroupsBackgroundTask
|
|
37
37
|
def check_blah
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
|
-
expect
|
|
40
|
+
expect(Logger).to receive(:warn) do |msg|
|
|
41
|
+
expect(msg).to match(/check_blah doesn't match a group name/)
|
|
42
|
+
end
|
|
43
|
+
thread = Thread.new do
|
|
44
|
+
MyLimitsGroups1.new.call
|
|
45
|
+
end
|
|
46
|
+
sleep 0.1
|
|
47
|
+
thread.kill
|
|
48
|
+
thread.join
|
|
41
49
|
end
|
|
42
50
|
|
|
43
51
|
it "requires a floating point delay parameter" do
|
|
@@ -137,7 +145,7 @@ module Cosmos
|
|
|
137
145
|
my.call
|
|
138
146
|
end
|
|
139
147
|
sleep 0.3
|
|
140
|
-
expect(my.status).to match
|
|
148
|
+
expect(my.status).to match(/Checking groups took 0.\d+/)
|
|
141
149
|
Cosmos.kill_thread(self, thread)
|
|
142
150
|
end
|
|
143
151
|
end
|
|
@@ -43,7 +43,7 @@ module Cosmos
|
|
|
43
43
|
thread.stop
|
|
44
44
|
sleep 0.5
|
|
45
45
|
expect(running_threads.length).to eql(1)
|
|
46
|
-
expect(stdout.string).to match
|
|
46
|
+
expect(stdout.string).to match("disconnected interface")
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
|
|
@@ -61,7 +61,7 @@ module Cosmos
|
|
|
61
61
|
thread.stop
|
|
62
62
|
sleep 0.5
|
|
63
63
|
expect(running_threads.length).to eql(1)
|
|
64
|
-
expect(stdout.string).to match
|
|
64
|
+
expect(stdout.string).to match("Error routing command")
|
|
65
65
|
end
|
|
66
66
|
end
|
|
67
67
|
|
|
@@ -85,7 +85,7 @@ module Cosmos
|
|
|
85
85
|
thread.stop
|
|
86
86
|
sleep 0.5
|
|
87
87
|
expect(running_threads.length).to eql(1)
|
|
88
|
-
expect(stdout.string).to match
|
|
88
|
+
expect(stdout.string).to match("Received unknown identified command: BOB SMITH")
|
|
89
89
|
end
|
|
90
90
|
end
|
|
91
91
|
|
|
@@ -113,7 +113,7 @@ module Cosmos
|
|
|
113
113
|
thread.stop
|
|
114
114
|
sleep 0.5
|
|
115
115
|
expect(running_threads.length).to eql(1)
|
|
116
|
-
expect(stdout.string).to match
|
|
116
|
+
expect(stdout.string).to match("Received unknown identified command: BOB SMITH")
|
|
117
117
|
end
|
|
118
118
|
expect(target).to have_received(:interface).at_least(2).times #and_return(@interface)
|
|
119
119
|
end
|
|
@@ -142,7 +142,7 @@ module Cosmos
|
|
|
142
142
|
thread.stop
|
|
143
143
|
sleep 0.5
|
|
144
144
|
expect(running_threads.length).to eql(1)
|
|
145
|
-
expect(stdout.string).to match
|
|
145
|
+
expect(stdout.string).to match("target with no interface")
|
|
146
146
|
end
|
|
147
147
|
end
|
|
148
148
|
end
|
|
@@ -16,10 +16,6 @@ require 'tempfile'
|
|
|
16
16
|
module Cosmos
|
|
17
17
|
|
|
18
18
|
describe Routers do
|
|
19
|
-
after(:all) do
|
|
20
|
-
clean_config()
|
|
21
|
-
end
|
|
22
|
-
|
|
23
19
|
describe "start" do
|
|
24
20
|
it "connects each router" do
|
|
25
21
|
tf = Tempfile.new('unittest')
|
|
@@ -37,7 +33,7 @@ module Cosmos
|
|
|
37
33
|
routers.all['MY_ROUTER'].connect_on_startup = true
|
|
38
34
|
routers.start
|
|
39
35
|
|
|
40
|
-
expect(stdout.string).to match
|
|
36
|
+
expect(stdout.string).to match("Creating thread for router MY_ROUTER")
|
|
41
37
|
routers.stop
|
|
42
38
|
end
|
|
43
39
|
tf.unlink
|
|
@@ -67,7 +63,7 @@ module Cosmos
|
|
|
67
63
|
sleep 0.1
|
|
68
64
|
expect(routers.state("MY_ROUTER")).to eql "DISCONNECTED"
|
|
69
65
|
|
|
70
|
-
expect(stdout.string).to match
|
|
66
|
+
expect(stdout.string).to match("Disconnected from router MY_ROUTER")
|
|
71
67
|
end
|
|
72
68
|
tf.unlink
|
|
73
69
|
sleep(0.2)
|
|
@@ -156,12 +152,12 @@ module Cosmos
|
|
|
156
152
|
expect(config.interfaces['DEST2'].routers[0].name).to eql "MY_ROUTER"
|
|
157
153
|
routers.connect("MY_ROUTER")
|
|
158
154
|
sleep 0.1
|
|
159
|
-
expect(stdout.string).to match
|
|
155
|
+
expect(stdout.string).to match("Connecting to MY_ROUTER")
|
|
160
156
|
routers.disconnect("MY_ROUTER")
|
|
161
157
|
routers.connect("MY_ROUTER",'localhost',8888,8888,6,6,'length')
|
|
162
158
|
sleep 0.1
|
|
163
|
-
expect(stdout.string).to match
|
|
164
|
-
expect(stdout.string).to match
|
|
159
|
+
expect(stdout.string).to match("Disconnected from router MY_ROUTER")
|
|
160
|
+
expect(stdout.string).to match("Connecting to MY_ROUTER")
|
|
165
161
|
expect(routers.all["MY_ROUTER"].interfaces[0].name).to eql "DEST1"
|
|
166
162
|
expect(routers.all["MY_ROUTER"].interfaces[1].name).to eql "DEST2"
|
|
167
163
|
expect(config.interfaces['DEST1'].routers[0].name).to eql "MY_ROUTER"
|