cosmos 3.4.2 → 3.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Manifest.txt +69 -11
- data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +23 -0
- data/autohotkey/tools/TestRunnerAHK5 +17 -0
- data/autohotkey/tools/TestRunnerAHK6 +17 -0
- data/autohotkey/tools/cmd_extractor.ahk +6 -0
- data/autohotkey/tools/data_viewer.ahk +6 -0
- data/autohotkey/tools/limits_monitor.ahk +67 -14
- data/autohotkey/tools/replay.ahk +6 -0
- data/autohotkey/tools/test_runner5.ahk +8 -0
- data/autohotkey/tools/test_runner6.ahk +5 -0
- data/autohotkey/tools/tlm_extractor.ahk +25 -1
- data/autohotkey/tools/tlm_grapher.ahk +6 -0
- data/cosmos.gemspec +19 -19
- data/data/crc.txt +46 -46
- data/data/critical.wav +0 -0
- data/data/information.wav +0 -0
- data/data/input.wav +0 -0
- data/data/message.wav +0 -0
- data/data/question.wav +0 -0
- data/data/warning.wav +0 -0
- data/demo/Gemfile +5 -1
- data/demo/Launcher +5 -4
- data/demo/Launcher.bat +6 -56
- data/demo/config/data/crc.txt +73 -55
- data/demo/config/system/system.txt +1 -0
- data/demo/config/targets/EXAMPLE/cmd_tlm/example_tlm.txt +2 -0
- data/demo/procedures/example_test.rb +17 -16
- data/demo/tools/CmdExtractor +6 -5
- data/demo/tools/CmdExtractor.bat +6 -56
- data/demo/tools/CmdSender +6 -5
- data/demo/tools/CmdSender.bat +6 -56
- data/demo/tools/CmdTlmServer +6 -5
- data/demo/tools/CmdTlmServer.bat +6 -56
- data/demo/tools/DataViewer +6 -5
- data/demo/tools/DataViewer.bat +6 -56
- data/demo/tools/ExampleTarget +6 -5
- data/demo/tools/ExampleTarget.bat +6 -56
- data/demo/tools/HandbookCreator +6 -5
- data/demo/tools/HandbookCreator.bat +6 -58
- data/demo/tools/Launcher +6 -5
- data/demo/tools/Launcher.bat +6 -56
- data/demo/tools/LimitsMonitor +6 -5
- data/demo/tools/LimitsMonitor.bat +6 -56
- data/demo/tools/OpenGLBuilder +6 -5
- data/demo/tools/OpenGLBuilder.bat +6 -56
- data/demo/tools/PacketViewer +6 -5
- data/demo/tools/PacketViewer.bat +6 -56
- data/demo/tools/Replay +6 -5
- data/demo/tools/Replay.bat +6 -56
- data/demo/tools/ScpiTarget +6 -5
- data/demo/tools/ScpiTarget.bat +6 -56
- data/demo/tools/ScriptRunner +6 -5
- data/demo/tools/ScriptRunner.bat +6 -56
- data/demo/tools/TableManager +6 -5
- data/demo/tools/TableManager.bat +6 -56
- data/demo/tools/TestRunner +6 -5
- data/demo/tools/TestRunner.bat +6 -56
- data/demo/tools/TlmExtractor +6 -5
- data/demo/tools/TlmExtractor.bat +6 -56
- data/demo/tools/TlmGrapher +6 -5
- data/demo/tools/TlmGrapher.bat +6 -56
- data/demo/tools/TlmViewer +6 -5
- data/demo/tools/TlmViewer.bat +6 -56
- data/demo/tools/ToolLaunch.bat +63 -0
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +6 -5
- data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +6 -5
- data/demo/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +6 -5
- data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +6 -5
- data/demo/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +6 -5
- data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +6 -5
- data/demo/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +6 -5
- data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +6 -5
- data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +6 -5
- data/demo/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/Replay.app/Contents/MacOS/Replay.rb +6 -5
- data/demo/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +6 -5
- data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +6 -5
- data/demo/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +6 -5
- data/demo/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +6 -5
- data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +6 -5
- data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +6 -5
- data/demo/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/demo/tools/tool_launch.rb +38 -0
- data/install/Gemfile +5 -1
- data/install/Launcher +5 -3
- data/install/Launcher.bat +6 -56
- data/install/config/data/crc.txt +67 -49
- data/install/config/tools/launcher/launcher.txt +1 -0
- data/install/tools/CmdExtractor +6 -5
- data/install/tools/CmdExtractor.bat +6 -56
- data/install/tools/CmdSender +6 -5
- data/install/tools/CmdSender.bat +6 -56
- data/install/tools/CmdTlmServer +6 -5
- data/install/tools/CmdTlmServer.bat +6 -56
- data/install/tools/DataViewer +6 -5
- data/install/tools/DataViewer.bat +6 -56
- data/install/tools/HandbookCreator +6 -5
- data/install/tools/HandbookCreator.bat +6 -58
- data/install/tools/Launcher +6 -5
- data/install/tools/Launcher.bat +6 -56
- data/install/tools/LimitsMonitor +6 -5
- data/install/tools/LimitsMonitor.bat +6 -56
- data/install/tools/OpenGLBuilder +6 -5
- data/install/tools/OpenGLBuilder.bat +6 -56
- data/install/tools/PacketViewer +6 -5
- data/install/tools/PacketViewer.bat +6 -56
- data/install/tools/Replay +6 -5
- data/install/tools/Replay.bat +6 -56
- data/install/tools/ScriptRunner +6 -5
- data/install/tools/ScriptRunner.bat +6 -56
- data/install/tools/TableManager +6 -5
- data/install/tools/TableManager.bat +6 -56
- data/install/tools/TestRunner +6 -5
- data/install/tools/TestRunner.bat +6 -56
- data/install/tools/TlmExtractor +6 -5
- data/install/tools/TlmExtractor.bat +6 -56
- data/install/tools/TlmGrapher +6 -5
- data/install/tools/TlmGrapher.bat +6 -56
- data/install/tools/TlmViewer +6 -5
- data/install/tools/TlmViewer.bat +6 -56
- data/install/tools/ToolLaunch.bat +63 -0
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +6 -5
- data/install/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +6 -5
- data/install/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +6 -5
- data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +6 -5
- data/install/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +6 -5
- data/install/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +6 -5
- data/install/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +6 -5
- data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +6 -5
- data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +6 -5
- data/install/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/Replay.app/Contents/MacOS/Replay.rb +6 -5
- data/install/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +6 -5
- data/install/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +6 -5
- data/install/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +6 -5
- data/install/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +6 -5
- data/install/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +6 -5
- data/install/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +6 -5
- data/install/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -0
- data/install/tools/tool_launch.rb +38 -0
- data/lib/cosmos/core_ext/string.rb +3 -2
- data/lib/cosmos/gui/dialogs/about_dialog.rb +3 -7
- data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +200 -136
- data/lib/cosmos/gui/opengl/gl_viewer.rb +8 -8
- data/lib/cosmos/gui/qt.rb +56 -27
- data/lib/cosmos/gui/qt_tool.rb +3 -1
- data/lib/cosmos/gui/text/ruby_editor.rb +130 -110
- data/lib/cosmos/gui/utilities/script_module_gui.rb +150 -4
- data/lib/cosmos/io/json_drb.rb +1 -1
- data/lib/cosmos/io/win32_serial_driver.rb +2 -4
- data/lib/cosmos/packet_logs/ccsds_log_reader.rb +1 -0
- data/lib/cosmos/packet_logs/packet_log_reader.rb +13 -4
- data/lib/cosmos/packets/limits.rb +6 -3
- data/lib/cosmos/packets/telemetry.rb +34 -3
- data/lib/cosmos/processors/new_packet_log_processor.rb +1 -1
- data/lib/cosmos/script/commands.rb +20 -2
- data/lib/cosmos/script/extract.rb +11 -3
- data/lib/cosmos/script/limits.rb +6 -0
- data/lib/cosmos/script/scripting.rb +17 -9
- data/lib/cosmos/system/system.rb +73 -17
- data/lib/cosmos/system/target.rb +10 -5
- data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +1 -0
- data/lib/cosmos/tools/cmd_tlm_server/api.rb +95 -0
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +8 -4
- data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +55 -0
- data/lib/cosmos/tools/data_viewer/data_viewer.rb +5 -12
- data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +14 -48
- data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +1 -5
- data/lib/cosmos/tools/launcher/launcher.rb +4 -0
- data/lib/cosmos/tools/launcher/launcher_config.rb +50 -0
- data/lib/cosmos/tools/launcher/launcher_tool.rb +21 -9
- data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +607 -566
- data/lib/cosmos/tools/replay/replay.rb +51 -45
- data/lib/cosmos/tools/script_runner/script_runner.rb +13 -5
- data/lib/cosmos/tools/script_runner/script_runner_frame.rb +8 -109
- data/lib/cosmos/tools/test_runner/test.rb +65 -6
- data/lib/cosmos/tools/test_runner/test_runner.rb +4 -4
- data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +5 -0
- data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_logfile_thread.rb +3 -0
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +3 -2
- data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +9 -6
- data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +1 -5
- data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +1 -5
- data/lib/cosmos/top_level.rb +86 -3
- data/lib/cosmos/version.rb +5 -5
- data/lib/cosmos/win32/win32_main.rb +7 -1
- data/spec/packet_logs/packet_log_reader_spec.rb +67 -7
- data/spec/packets/limits_spec.rb +19 -1
- data/spec/packets/telemetry_spec.rb +44 -1
- data/spec/script/commands_spec.rb +14 -0
- data/spec/script/scripting_spec.rb +5 -1
- data/spec/script/telemetry_spec.rb +38 -3
- data/spec/system/system_spec.rb +24 -4
- data/spec/tools/cmd_tlm_server/api_spec.rb +30 -0
- data/test/benchmarks/gsub_benchmark.rb +42 -4
- data/test/benchmarks/is_a_benchmark.rb +34 -0
- data/test/performance/config/data/crc.txt +161 -171
- data/test/performance/config/system/system_packets.txt +10 -10
- data/test/performance/config/system/system_threads.txt +30 -30
- data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +7 -2
- data/test/performance/config/targets/PACKET/cmd_tlm/packet_cmds.txt +20 -0
- data/test/performance/config/targets/PACKET/cmd_tlm/packet_tlm.txt +98 -0
- data/test/performance/config/targets/{EXAMPLE → PACKET}/cmd_tlm_server.txt +2 -2
- data/test/performance/config/targets/PACKET/lib/packet_interface.rb +22 -0
- data/test/performance/config/targets/PACKET/lib/packet_limits_response.rb +24 -0
- data/test/performance/config/targets/PACKET/screens/status.txt +25 -0
- data/test/performance/config/targets/PACKET/target.txt +28 -0
- data/test/performance/config/targets/{EXAMPLE/cmd_tlm/example_cmds.txt → THREAD/cmd_tlm/thread_cmds.txt} +1 -1
- data/test/performance/config/targets/{EXAMPLE/cmd_tlm/example_tlm.txt → THREAD/cmd_tlm/thread_tlm.txt} +1 -1
- data/test/performance/config/targets/THREAD/cmd_tlm_server.txt +6 -0
- data/test/performance/config/targets/{EXAMPLE/lib/example_interface.rb → THREAD/lib/thread_interface.rb} +1 -1
- data/test/performance/config/targets/THREAD/screens/status.txt +25 -0
- data/test/performance/config/targets/{EXAMPLE → THREAD}/target.txt +0 -0
- data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_packets.txt +24 -30
- data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_threads.txt +31 -31
- data/test/performance/config/tools/launcher/launcher_packets.txt +16 -11
- data/test/performance/config/tools/launcher/launcher_threads.txt +41 -35
- data/test/performance/config/tools/tlm_grapher/tlm_grapher.txt +204 -0
- data/test/performance/config/tools/tlm_viewer/tlm_viewer.txt +10 -38
- data/test/performance/lib/packet_target.rb +126 -0
- data/test/performance/lib/{example_target.rb → thread_target.rb} +9 -9
- data/test/performance/tools/CmdTlmServerMemProf +1 -1
- data/test/performance/tools/{ExampleTarget → PacketTarget} +2 -2
- data/test/performance/tools/{ExampleTarget.bat → PacketTarget.bat} +0 -0
- data/test/performance/tools/ThreadTarget +14 -0
- data/test/performance/tools/ThreadTarget.bat +59 -0
- data/test/performance/tools/TlmGrapherMemProf +1 -1
- data/test/performance/tools/TlmViewerMemProf +19 -0
- data/{autohotkey/tools/Replay.bat → test/performance/tools/TlmViewerMemProf.bat} +1 -1
- metadata +107 -55
- data/test/performance/lib/example_background_task.rb +0 -57
- data/test/performance/lib/scpi_target.rb +0 -74
@@ -48,7 +48,7 @@ module Cosmos
|
|
48
48
|
end
|
49
49
|
|
50
50
|
# Initialize variables
|
51
|
-
@packet_log_reader
|
51
|
+
@packet_log_reader = System.default_packet_log_reader.new
|
52
52
|
@log_directory = System.paths['LOGS']
|
53
53
|
@log_directory << '/' unless @log_directory[-1..-1] == '\\' or @log_directory[-1..-1] == '/'
|
54
54
|
@log_filename = nil
|
@@ -225,6 +225,7 @@ module Cosmos
|
|
225
225
|
progress_dialog.set_overall_progress(0.0)
|
226
226
|
progress_dialog.cancel_callback = method(:cancel_callback)
|
227
227
|
progress_dialog.enable_cancel_button
|
228
|
+
Cosmos.check_log_configuration(@packet_log_reader, selection)
|
228
229
|
@packet_offsets = @packet_log_reader.packet_offsets(selection, lambda {|percentage| progress_dialog.set_overall_progress(percentage); @cancel})
|
229
230
|
@playback_index = 0
|
230
231
|
update_slider_and_current_time(nil)
|
@@ -393,55 +394,60 @@ module Cosmos
|
|
393
394
|
end
|
394
395
|
|
395
396
|
def handle_packet(packet)
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
#
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
397
|
+
# For replay we will try our best here but not crash on errors
|
398
|
+
begin
|
399
|
+
interface = nil
|
400
|
+
|
401
|
+
# Identify and update packet
|
402
|
+
if packet.identified?
|
403
|
+
# Preidentifed packet - place it into the current value table
|
404
|
+
identified_packet = System.telemetry.update!(packet.target_name,
|
405
|
+
packet.packet_name,
|
406
|
+
packet.buffer)
|
407
|
+
else
|
408
|
+
# Packet needs to be identified
|
409
|
+
identified_packet = System.telemetry.identify!(packet.buffer)
|
410
|
+
end
|
408
411
|
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
412
|
+
if identified_packet and packet.target_name != 'UNKNOWN'
|
413
|
+
identified_packet.received_time = packet.received_time
|
414
|
+
packet = identified_packet
|
415
|
+
target = System.targets[packet.target_name.upcase]
|
416
|
+
interface = target.interface if target
|
417
|
+
else
|
418
|
+
unknown_packet = System.telemetry.update!('UNKNOWN', 'UNKNOWN', packet.buffer)
|
419
|
+
unknown_packet.received_time = packet.received_time
|
420
|
+
packet = unknown_packet
|
421
|
+
data_length = packet.length
|
422
|
+
string = "Unknown #{data_length} byte packet starting: "
|
423
|
+
num_bytes_to_print = [UNKNOWN_BYTES_TO_PRINT, data_length].min
|
424
|
+
data_to_print = packet.buffer(false)[0..(num_bytes_to_print - 1)]
|
425
|
+
data_to_print.each_byte do |byte|
|
426
|
+
string << sprintf("%02X", byte)
|
427
|
+
end
|
428
|
+
time_string = ''
|
429
|
+
time_string = packet.received_time.formatted << ' ' if packet.received_time
|
430
|
+
puts "#{time_string}ERROR: #{string}"
|
424
431
|
end
|
425
|
-
time_string = ''
|
426
|
-
time_string = packet.received_time.formatted << ' ' if packet.received_time
|
427
|
-
puts "#{time_string}ERROR: #{string}"
|
428
|
-
end
|
429
432
|
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
433
|
+
target = System.targets[packet.target_name]
|
434
|
+
target.tlm_cnt += 1 if target
|
435
|
+
packet.received_count += 1
|
436
|
+
packet.check_limits(System.limits_set)
|
437
|
+
ReplayServer.instance.post_packet(packet)
|
438
|
+
|
439
|
+
# Write to routers
|
440
|
+
if interface
|
441
|
+
interface.routers.each do |router|
|
442
|
+
begin
|
443
|
+
router.write(packet) if router.write_allowed? and router.connected?
|
444
|
+
rescue => err
|
445
|
+
Logger.error "Problem writing to router #{router.name} - #{err.class}:#{err.message}"
|
446
|
+
end
|
443
447
|
end
|
444
448
|
end
|
449
|
+
rescue Exception => err
|
450
|
+
Logger.error "Problem handling packet #{packet.target_name} #{packet.packet_name} - #{err.class}:#{err.message}"
|
445
451
|
end
|
446
452
|
end
|
447
453
|
|
@@ -159,31 +159,39 @@ module Cosmos
|
|
159
159
|
@search_find_keyseq = Qt::KeySequence.new(tr('Ctrl+F'))
|
160
160
|
@search_find.shortcut = @search_find_keyseq
|
161
161
|
@search_find.statusTip = tr('Find text')
|
162
|
-
@search_find.connect(SIGNAL('triggered()'))
|
162
|
+
@search_find.connect(SIGNAL('triggered()')) do
|
163
|
+
FindReplaceDialog.show_find(active_script_runner_frame().script)
|
164
|
+
end
|
163
165
|
|
164
166
|
@search_find_next = Qt::Action.new(tr('Find &Next'), self)
|
165
167
|
@search_find_next_keyseq = Qt::KeySequence.new(tr('F3'))
|
166
168
|
@search_find_next.shortcut = @search_find_next_keyseq
|
167
169
|
@search_find_next.statusTip = tr('Find next instance')
|
168
|
-
@search_find_next.connect(SIGNAL('triggered()'))
|
170
|
+
@search_find_next.connect(SIGNAL('triggered()')) do
|
171
|
+
FindReplaceDialog.find_next(active_script_runner_frame().script)
|
172
|
+
end
|
169
173
|
|
170
174
|
@search_find_previous = Qt::Action.new(tr('Find &Previous'), self)
|
171
175
|
@search_find_previous_keyseq = Qt::KeySequence.new(tr('Shift+F3'))
|
172
176
|
@search_find_previous.shortcut = @search_find_previous_keyseq
|
173
177
|
@search_find_previous.statusTip = tr('Find previous instance')
|
174
|
-
@search_find_previous.connect(SIGNAL('triggered()'))
|
178
|
+
@search_find_previous.connect(SIGNAL('triggered()')) do
|
179
|
+
FindReplaceDialog.find_previous(active_script_runner_frame().script)
|
180
|
+
end
|
175
181
|
|
176
182
|
@search_replace = Qt::Action.new(tr('&Replace'), self)
|
177
183
|
@search_replace_keyseq = Qt::KeySequence.new(tr('Ctrl+H'))
|
178
184
|
@search_replace.shortcut = @search_replace_keyseq
|
179
185
|
@search_replace.statusTip = tr('Replace')
|
180
|
-
@search_replace.connect(SIGNAL('triggered()'))
|
186
|
+
@search_replace.connect(SIGNAL('triggered()')) do
|
187
|
+
FindReplaceDialog.show_replace(active_script_runner_frame().script)
|
188
|
+
end
|
181
189
|
|
182
190
|
# Script Actions
|
183
191
|
@script_syntax_all = Qt::Action.new(tr('&Ruby Syntax Check'), self)
|
184
192
|
@script_syntax_all.statusTip = tr('Check ruby syntax of this script')
|
185
193
|
@script_syntax_all.connect(SIGNAL('triggered()')) do
|
186
|
-
active_script_runner_frame().ruby_syntax_check_text(
|
194
|
+
active_script_runner_frame().ruby_syntax_check_text()
|
187
195
|
end
|
188
196
|
|
189
197
|
@script_mnemonic_all = Qt::Action.new(tr('&Mnemonic Check'), self)
|
@@ -37,11 +37,9 @@ module Cosmos
|
|
37
37
|
class ScriptRunnerDialog < Qt::Dialog
|
38
38
|
attr_reader :script_runner_frame
|
39
39
|
|
40
|
-
# Constructor
|
41
40
|
def initialize(parent,
|
42
41
|
title,
|
43
42
|
default_tab_text = 'Untitled')
|
44
|
-
# Call base class constructor
|
45
43
|
super(parent)
|
46
44
|
setWindowTitle(title)
|
47
45
|
setMinimumWidth(parent.width * 0.8)
|
@@ -52,7 +50,7 @@ module Cosmos
|
|
52
50
|
layout = Qt::VBoxLayout.new
|
53
51
|
layout.addWidget(@script_runner_frame)
|
54
52
|
setLayout(layout)
|
55
|
-
end
|
53
|
+
end
|
56
54
|
|
57
55
|
# Executes the given text and closes when complete
|
58
56
|
def execute_text_and_close_on_complete(text, text_binding = nil)
|
@@ -102,6 +100,7 @@ module Cosmos
|
|
102
100
|
attr_reader :script_class
|
103
101
|
attr_reader :top_level_instrumented_cache
|
104
102
|
attr_accessor :stdout_max_lines
|
103
|
+
attr_reader :script
|
105
104
|
|
106
105
|
@@instance = nil
|
107
106
|
@@run_thread = nil
|
@@ -650,7 +649,7 @@ module Cosmos
|
|
650
649
|
# Implement the breakpoint callbacks from the RubyEditor
|
651
650
|
######################################
|
652
651
|
def breakpoint_set(line)
|
653
|
-
ScriptRunnerFrame.
|
652
|
+
ScriptRunnerFrame.set_breakpoint(current_tab_filename(), line)
|
654
653
|
end
|
655
654
|
|
656
655
|
def breakpoint_cleared(line)
|
@@ -692,107 +691,6 @@ module Cosmos
|
|
692
691
|
@script.comment_or_uncomment_lines unless running?()
|
693
692
|
end
|
694
693
|
|
695
|
-
##################################################################
|
696
|
-
# Implement Search functionality in the frame (find, replace, etc)
|
697
|
-
##################################################################
|
698
|
-
def find
|
699
|
-
unless @find_dialog
|
700
|
-
@find_dialog = FindReplaceDialog.new(@script)
|
701
|
-
@find_dialog.connect(SIGNAL('find_next()')) { dialog_find(@find_dialog) }
|
702
|
-
end
|
703
|
-
@find_dialog.show
|
704
|
-
@find_dialog.raise
|
705
|
-
@find_dialog.activateWindow
|
706
|
-
end
|
707
|
-
|
708
|
-
def find_next
|
709
|
-
flags = FindReplaceDialog.find_flags
|
710
|
-
flags &= ~Qt::TextDocument::FindBackward.to_i
|
711
|
-
found = @script.find(FindReplaceDialog.find_text, flags)
|
712
|
-
if not found and FindReplaceDialog.wrap_around?
|
713
|
-
cursor = @script.textCursor
|
714
|
-
cursor.movePosition(Qt::TextCursor::Start)
|
715
|
-
@script.setTextCursor(cursor)
|
716
|
-
@script.find(FindReplaceDialog.find_text, flags)
|
717
|
-
end
|
718
|
-
end
|
719
|
-
|
720
|
-
def find_previous
|
721
|
-
flags = FindReplaceDialog.find_flags
|
722
|
-
flags |= Qt::TextDocument::FindBackward.to_i
|
723
|
-
found = @script.find(FindReplaceDialog.find_text, flags)
|
724
|
-
if not found and FindReplaceDialog.wrap_around?
|
725
|
-
cursor = @script.textCursor
|
726
|
-
cursor.movePosition(Qt::TextCursor::End)
|
727
|
-
@script.setTextCursor(cursor)
|
728
|
-
@script.find(FindReplaceDialog.find_text, flags)
|
729
|
-
end
|
730
|
-
end
|
731
|
-
|
732
|
-
def replace
|
733
|
-
unless @replace_dialog
|
734
|
-
@replace_dialog = FindReplaceDialog.new(@script, true)
|
735
|
-
@replace_dialog.connect(SIGNAL('find_next()')) { dialog_find(@replace_dialog) }
|
736
|
-
@replace_dialog.connect(SIGNAL('replace()')) { dialog_replace(@replace_dialog) }
|
737
|
-
@replace_dialog.connect(SIGNAL('replace_all()')) { dialog_replace_all(@replace_dialog) }
|
738
|
-
end
|
739
|
-
@replace_dialog.show
|
740
|
-
@replace_dialog.raise
|
741
|
-
@replace_dialog.activateWindow
|
742
|
-
end
|
743
|
-
|
744
|
-
def dialog_find(dialog)
|
745
|
-
found = @script.find(dialog.find_text, dialog.find_flags)
|
746
|
-
if not found and dialog.wrap_around?
|
747
|
-
cursor = @script.textCursor
|
748
|
-
if dialog.find_up?
|
749
|
-
cursor.movePosition(Qt::TextCursor::End)
|
750
|
-
else
|
751
|
-
cursor.movePosition(Qt::TextCursor::Start)
|
752
|
-
end
|
753
|
-
@script.setTextCursor(cursor)
|
754
|
-
@script.find(dialog.find_text, dialog.find_flags)
|
755
|
-
end
|
756
|
-
end
|
757
|
-
|
758
|
-
def dialog_replace(dialog)
|
759
|
-
if @script.textCursor.hasSelection &&
|
760
|
-
@script.textCursor.selectedText == dialog.find_text
|
761
|
-
found = true
|
762
|
-
else
|
763
|
-
found = @script.find(dialog.find_text, dialog.find_flags)
|
764
|
-
if not found and dialog.wrap_around?
|
765
|
-
cursor = @script.textCursor
|
766
|
-
if dialog.find_up?
|
767
|
-
cursor.movePosition(Qt::TextCursor::End)
|
768
|
-
else
|
769
|
-
cursor.movePosition(Qt::TextCursor::Start)
|
770
|
-
end
|
771
|
-
@script.setTextCursor(cursor)
|
772
|
-
found = @script.find(dialog.find_text, dialog.find_flags)
|
773
|
-
end
|
774
|
-
end
|
775
|
-
if found
|
776
|
-
@script.textCursor.removeSelectedText
|
777
|
-
@script.textCursor.insertText(dialog.replace_text)
|
778
|
-
cursor = @script.textCursor
|
779
|
-
cursor.setPosition(cursor.position-1)
|
780
|
-
cursor.select(Qt::TextCursor::WordUnderCursor)
|
781
|
-
@script.setTextCursor(cursor)
|
782
|
-
end
|
783
|
-
end
|
784
|
-
|
785
|
-
def dialog_replace_all(dialog)
|
786
|
-
cursor = @script.textCursor
|
787
|
-
cursor.movePosition(Qt::TextCursor::Start)
|
788
|
-
@script.setTextCursor(cursor)
|
789
|
-
|
790
|
-
while (@script.find(dialog.find_text, dialog.find_flags) == true)
|
791
|
-
@script.textCursor.removeSelectedText
|
792
|
-
@script.textCursor.insertText(dialog.replace_text)
|
793
|
-
end
|
794
|
-
end
|
795
|
-
|
796
694
|
##################################################################################
|
797
695
|
# Implement Script functionality in the frame (run selection, run from cursor, etc
|
798
696
|
##################################################################################
|
@@ -840,10 +738,11 @@ module Cosmos
|
|
840
738
|
end
|
841
739
|
end
|
842
740
|
|
843
|
-
def ruby_syntax_check_text(
|
741
|
+
def ruby_syntax_check_text(selection = nil)
|
844
742
|
unless self.class.running?()
|
743
|
+
selection = text() unless selection
|
845
744
|
check_process = IO.popen("ruby -c -rubygems 2>&1", 'r+')
|
846
|
-
check_process.write("require 'cosmos'; require 'cosmos/script'; " +
|
745
|
+
check_process.write("require 'cosmos'; require 'cosmos/script'; " + selection)
|
847
746
|
check_process.close_write
|
848
747
|
results = check_process.gets
|
849
748
|
check_process.close
|
@@ -1060,7 +959,7 @@ module Cosmos
|
|
1060
959
|
@debug_frame = nil
|
1061
960
|
end
|
1062
961
|
|
1063
|
-
def self.
|
962
|
+
def self.set_breakpoint(filename, line_number)
|
1064
963
|
filename = File.basename(filename)
|
1065
964
|
@@breakpoints[filename] ||= {}
|
1066
965
|
@@breakpoints[filename][line_number] = true
|
@@ -1645,7 +1544,7 @@ module Cosmos
|
|
1645
1544
|
breakpoints = @@breakpoints[File.basename(filename)]
|
1646
1545
|
if breakpoints
|
1647
1546
|
breakpoints.each do |line_number, present|
|
1648
|
-
@active_script.
|
1547
|
+
@active_script.add_breakpoint(line_number) if present
|
1649
1548
|
end
|
1650
1549
|
end
|
1651
1550
|
end
|
@@ -48,21 +48,30 @@ module Cosmos
|
|
48
48
|
class TestResult
|
49
49
|
attr_accessor :test
|
50
50
|
attr_accessor :test_case
|
51
|
+
attr_accessor :test_suite
|
51
52
|
attr_accessor :output
|
52
53
|
attr_accessor :exceptions
|
53
54
|
attr_accessor :stopped
|
54
55
|
attr_accessor :result
|
55
56
|
attr_accessor :message
|
56
57
|
|
58
|
+
@@test_suite = nil
|
59
|
+
|
57
60
|
def initialize
|
58
61
|
@test = nil
|
59
62
|
@test_case = nil
|
63
|
+
@test_suite = nil
|
64
|
+
@test_suite = @@test_suite.clone if @@test_suite
|
60
65
|
@output = nil
|
61
66
|
@exceptions = nil
|
62
67
|
@stopped = false
|
63
68
|
@result = :SKIP
|
64
69
|
@message = nil
|
65
70
|
end
|
71
|
+
|
72
|
+
def self.test_suite= (test_suite)
|
73
|
+
@@test_suite = test_suite
|
74
|
+
end
|
66
75
|
end # class TestResult
|
67
76
|
|
68
77
|
# TestGroup class
|
@@ -104,7 +113,7 @@ module Cosmos
|
|
104
113
|
# Name of the test
|
105
114
|
def name
|
106
115
|
if self.class != Test
|
107
|
-
self.class.to_s
|
116
|
+
self.class.to_s.split('::')[-1]
|
108
117
|
else
|
109
118
|
'UnnamedTest'
|
110
119
|
end
|
@@ -160,7 +169,7 @@ module Cosmos
|
|
160
169
|
$stdout.add_stream(@output_io)
|
161
170
|
$stderr.add_stream(@output_io)
|
162
171
|
|
163
|
-
result.test
|
172
|
+
result.test = object.class.to_s.split('::')[-1]
|
164
173
|
result.test_case = method_name.to_s
|
165
174
|
begin
|
166
175
|
if defined? ScriptRunnerFrame
|
@@ -273,6 +282,38 @@ module Cosmos
|
|
273
282
|
@@current_test_result.message << "\n"
|
274
283
|
end
|
275
284
|
end
|
285
|
+
|
286
|
+
def self.current_test_suite
|
287
|
+
if @@current_test_result
|
288
|
+
@@current_test_result.test_suite
|
289
|
+
else
|
290
|
+
nil
|
291
|
+
end
|
292
|
+
end
|
293
|
+
|
294
|
+
def self.current_test_group
|
295
|
+
if @@current_test_result
|
296
|
+
@@current_test_result.test
|
297
|
+
else
|
298
|
+
nil
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
302
|
+
def self.current_test
|
303
|
+
if @@current_test_result
|
304
|
+
@@current_test_result.test
|
305
|
+
else
|
306
|
+
nil
|
307
|
+
end
|
308
|
+
end
|
309
|
+
|
310
|
+
def self.current_test_case
|
311
|
+
if @@current_test_result
|
312
|
+
@@current_test_result.test_case
|
313
|
+
else
|
314
|
+
nil
|
315
|
+
end
|
316
|
+
end
|
276
317
|
end # class Test
|
277
318
|
|
278
319
|
class TestSuite
|
@@ -291,7 +332,7 @@ module Cosmos
|
|
291
332
|
# Name of the test suite
|
292
333
|
def name
|
293
334
|
if self.class != TestSuite
|
294
|
-
self.class.to_s
|
335
|
+
self.class.to_s.split('::')[-1]
|
295
336
|
else
|
296
337
|
'UnassignedTestSuite'
|
297
338
|
end
|
@@ -327,6 +368,7 @@ module Cosmos
|
|
327
368
|
|
328
369
|
# Run all the tests
|
329
370
|
def run(&block)
|
371
|
+
TestResult.test_suite = name()
|
330
372
|
TestStatus.instance.total = get_num_tests()
|
331
373
|
results = []
|
332
374
|
|
@@ -370,11 +412,14 @@ module Cosmos
|
|
370
412
|
raise StopScript if result.stopped
|
371
413
|
end
|
372
414
|
|
415
|
+
TestResult.test_suite = nil
|
373
416
|
results
|
374
417
|
end
|
375
418
|
|
376
419
|
# Run a specific test
|
377
420
|
def run_test(test_class, internal = false, &block)
|
421
|
+
TestResult.test_suite = name() unless internal
|
422
|
+
|
378
423
|
# Determine if this test_class is in the plan and the number of tests associated with this test_class
|
379
424
|
in_plan = false
|
380
425
|
num_tests = 0
|
@@ -422,43 +467,57 @@ module Cosmos
|
|
422
467
|
end
|
423
468
|
end
|
424
469
|
|
470
|
+
TestResult.test_suite = nil unless internal
|
425
471
|
return results
|
426
472
|
end
|
427
473
|
|
428
474
|
# Run a specific test case
|
429
475
|
def run_test_case(test_class, test_case, internal = false)
|
476
|
+
TestResult.test_suite = name() unless internal
|
430
477
|
TestStatus.instance.total = 1 unless internal
|
431
|
-
@tests[test_class].run_test_case(test_case)
|
478
|
+
result = @tests[test_class].run_test_case(test_case)
|
479
|
+
TestResult.test_suite = nil unless internal
|
480
|
+
result
|
432
481
|
end
|
433
482
|
|
434
483
|
def run_setup(internal = false)
|
484
|
+
TestResult.test_suite = name() unless internal
|
435
485
|
result = nil
|
436
486
|
if self.class.method_defined?(:setup) and @tests.length > 0
|
437
487
|
TestStatus.instance.total = 1 unless internal
|
438
488
|
TestStatus.instance.status = "#{self.class} : setup"
|
439
489
|
result = @tests[@tests.keys[0]].run_function(self, :setup)
|
440
490
|
end
|
491
|
+
TestResult.test_suite = nil unless internal
|
441
492
|
result
|
442
493
|
end
|
443
494
|
|
444
495
|
def run_teardown(internal = false)
|
496
|
+
TestResult.test_suite = name() unless internal
|
445
497
|
result = nil
|
446
498
|
if self.class.method_defined?(:teardown) and @tests.length > 0
|
447
499
|
TestStatus.instance.total = 1 unless internal
|
448
500
|
TestStatus.instance.status = "#{self.class} : teardown"
|
449
501
|
result = @tests[@tests.keys[0]].run_function(self, :teardown)
|
450
502
|
end
|
503
|
+
TestResult.test_suite = nil unless internal
|
451
504
|
result
|
452
505
|
end
|
453
506
|
|
454
507
|
def run_test_setup(test_class, internal = false)
|
508
|
+
TestResult.test_suite = name() unless internal
|
455
509
|
TestStatus.instance.total = 1 unless internal
|
456
|
-
@tests[test_class].run_setup
|
510
|
+
result = @tests[test_class].run_setup
|
511
|
+
TestResult.test_suite = nil unless internal
|
512
|
+
result
|
457
513
|
end
|
458
514
|
|
459
515
|
def run_test_teardown(test_class, internal = false)
|
516
|
+
TestResult.test_suite = name() unless internal
|
460
517
|
TestStatus.instance.total = 1 unless internal
|
461
|
-
@tests[test_class].run_teardown
|
518
|
+
result = @tests[test_class].run_teardown
|
519
|
+
TestResult.test_suite = nil unless internal
|
520
|
+
result
|
462
521
|
end
|
463
522
|
|
464
523
|
def get_num_tests
|