cosmos 4.3.0-java → 4.4.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.
Files changed (288) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +30 -0
  3. data/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
  4. data/.github/ISSUE_TEMPLATE/help---usage---general-question.md +12 -0
  5. data/.gitignore +1 -0
  6. data/.travis.yml +5 -5
  7. data/Manifest.txt +81 -44
  8. data/Rakefile +9 -0
  9. data/appveyor.yml +2 -1
  10. data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -1
  11. data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +5 -5
  12. data/autohotkey/config/targets/INST/lib/sim_inst.rb +3 -1
  13. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  14. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  15. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  16. data/autohotkey/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  17. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  18. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  19. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  20. data/autohotkey/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  21. data/autohotkey/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  22. data/autohotkey/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  23. data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +2 -4
  24. data/autohotkey/config/tools/table_manager/SubTables/OneDimensionalSubTable_def.txt +31 -0
  25. data/autohotkey/config/tools/table_manager/SubTables/TwoDimensionalSubTable_def.txt +28 -0
  26. data/autohotkey/config/tools/test_runner/test_runner.txt +1 -1
  27. data/autohotkey/config/tools/test_runner/test_runner2.txt +1 -1
  28. data/autohotkey/config/tools/test_runner/test_runner3.txt +1 -1
  29. data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -1
  30. data/autohotkey/tools/limits_monitor.ahk +1 -1
  31. data/autohotkey/tools/packet_viewer.ahk +1 -1
  32. data/autohotkey/tools/script_runner.ahk +16 -4
  33. data/bin/cosmos +1 -1
  34. data/bin/xtce_converter +1 -1
  35. data/cosmos.gemspec +5 -7
  36. data/data/config/_interfaces.yaml +4 -0
  37. data/data/config/cmd_sequence.yaml +14 -0
  38. data/data/config/housekeeping_params.yaml +14 -0
  39. data/data/config/interface_modifiers.yaml +11 -0
  40. data/data/config/item_modifiers.yaml +2 -1
  41. data/data/config/launcher.yaml +12 -2
  42. data/data/config/param_item_modifiers.yaml +2 -2
  43. data/data/config/parameter_modifiers.yaml +20 -0
  44. data/data/config/screen.yaml +2 -0
  45. data/data/config/script_runner.yaml +9 -0
  46. data/data/config/system.yaml +47 -10
  47. data/data/config/table_manager.yaml +7 -0
  48. data/data/config/target.yaml +12 -0
  49. data/data/config/telemetry_modifiers.yaml +3 -1
  50. data/data/config/test_runner.yaml +10 -9
  51. data/data/config/widgets.yaml +174 -11
  52. data/data/crc.txt +128 -125
  53. data/demo/Gemfile +1 -1
  54. data/demo/Launcher.bat +1 -9
  55. data/demo/Launcher2.bat +1 -0
  56. data/demo/LauncherMini.bat +1 -0
  57. data/demo/config/data/crc.txt +40 -20
  58. data/demo/config/system/system.txt +1 -1
  59. data/demo/config/system/system_alt_ports.txt +1 -1
  60. data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +1 -0
  61. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +2 -1
  62. data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +7 -7
  63. data/demo/config/targets/INST/cmd_tlm_server.txt +2 -0
  64. data/demo/config/targets/INST/lib/sim_inst.rb +15 -3
  65. data/demo/config/targets/INST/screens/adcs.txt +2 -2
  66. data/demo/config/targets/INST/screens/block.txt +1 -1
  67. data/demo/config/targets/INST/screens/commanding.txt +1 -1
  68. data/demo/config/targets/INST/screens/ground.txt +27 -5
  69. data/demo/config/targets/INST/screens/ground_error.gif +0 -0
  70. data/demo/config/{data/groundoff.gif → targets/INST/screens/ground_off.gif} +0 -0
  71. data/demo/config/{data/groundon.gif → targets/INST/screens/ground_on.gif} +0 -0
  72. data/demo/config/targets/INST/screens/limits.txt +69 -31
  73. data/demo/config/targets/INST/screens/other.txt +13 -3
  74. data/demo/config/targets/INST/screens/params.txt +54 -0
  75. data/demo/config/targets/INST/screens/satellite.gif +0 -0
  76. data/demo/config/tools/data_viewer/data_viewer.txt +3 -0
  77. data/demo/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  78. data/demo/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  79. data/demo/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  80. data/demo/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  81. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  82. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  83. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  84. data/demo/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  85. data/demo/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
  86. data/demo/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
  87. data/demo/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
  88. data/demo/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  89. data/demo/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  90. data/demo/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
  91. data/demo/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
  92. data/demo/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
  93. data/demo/config/tools/script_runner/script_runner.txt +1 -2
  94. data/demo/config/tools/test_runner/test_runner.txt +3 -1
  95. data/demo/lib/example_background_task.rb +1 -0
  96. data/demo/procedures/cosmos_api_test.rb +1 -1
  97. data/demo/procedures/interactive.rb +22 -0
  98. data/ext/cosmos/ext/packet/packet.c +0 -77
  99. data/install/Gemfile +1 -1
  100. data/install/Launcher.bat +1 -9
  101. data/install/config/data/crc.txt +17 -1
  102. data/install/config/system/system.txt +1 -1
  103. data/install/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  104. data/install/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  105. data/install/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  106. data/install/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  107. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  108. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  109. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  110. data/install/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  111. data/install/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
  112. data/install/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
  113. data/install/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
  114. data/install/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  115. data/install/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  116. data/install/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
  117. data/install/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
  118. data/install/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
  119. data/lib/cosmos/config/config_parser.rb +4 -5
  120. data/lib/cosmos/dart/lib/dart_common.rb +1 -1
  121. data/lib/cosmos/gui/dialogs/details_dialog.rb +16 -1
  122. data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +1 -0
  123. data/lib/cosmos/gui/dialogs/tlm_graph_dialog.rb +4 -2
  124. data/lib/cosmos/gui/opengl/earth_model.rb +1 -1
  125. data/lib/cosmos/gui/qt.rb +3 -1
  126. data/lib/cosmos/gui/qt_tool.rb +46 -23
  127. data/lib/cosmos/gui/text/ruby_editor.rb +44 -41
  128. data/lib/cosmos/gui/utilities/screenshot.rb +1 -1
  129. data/lib/cosmos/gui/utilities/script_module_gui.rb +92 -92
  130. data/lib/cosmos/interfaces.rb +1 -0
  131. data/lib/cosmos/interfaces/interface.rb +5 -1
  132. data/lib/cosmos/interfaces/protocols/fixed_protocol.rb +40 -18
  133. data/lib/cosmos/interfaces/protocols/template_protocol.rb +6 -1
  134. data/lib/cosmos/interfaces/simulated_target_interface.rb +14 -5
  135. data/lib/cosmos/io/json_drb.rb +11 -7
  136. data/lib/cosmos/packets/commands.rb +28 -11
  137. data/lib/cosmos/packets/packet.rb +69 -32
  138. data/lib/cosmos/packets/packet_config.rb +34 -1
  139. data/lib/cosmos/packets/parsers/state_parser.rb +0 -1
  140. data/lib/cosmos/packets/parsers/xtce_converter.rb +2 -0
  141. data/lib/cosmos/packets/parsers/xtce_parser.rb +4 -3
  142. data/lib/cosmos/packets/structure.rb +4 -2
  143. data/lib/cosmos/packets/telemetry.rb +19 -3
  144. data/lib/cosmos/script/api_shared.rb +12 -9
  145. data/lib/cosmos/script/scripting.rb +16 -14
  146. data/lib/cosmos/system/system.rb +39 -20
  147. data/lib/cosmos/system/target.rb +39 -9
  148. data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +94 -35
  149. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +3 -0
  150. data/lib/cosmos/tools/cmd_sequence/sequence_item.rb +1 -1
  151. data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +2 -0
  152. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +30 -4
  153. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +1 -0
  154. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +9 -12
  155. data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +5 -2
  156. data/lib/cosmos/tools/cmd_tlm_server/routers.rb +2 -0
  157. data/lib/cosmos/tools/config_editor/config_editor.rb +80 -24
  158. data/lib/cosmos/tools/config_editor/config_editor_frame.rb +2 -0
  159. data/lib/cosmos/tools/data_viewer/data_viewer.rb +15 -9
  160. data/lib/cosmos/tools/data_viewer/dump_component.rb +2 -9
  161. data/lib/cosmos/tools/data_viewer/text_component.rb +77 -0
  162. data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +64 -38
  163. data/lib/cosmos/tools/launcher/launcher.rb +1 -0
  164. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +31 -17
  165. data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +8 -6
  166. data/lib/cosmos/tools/script_runner/script_runner.rb +87 -29
  167. data/lib/cosmos/tools/script_runner/script_runner_config.rb +14 -0
  168. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +41 -7
  169. data/lib/cosmos/tools/table_manager/table_config.rb +5 -3
  170. data/lib/cosmos/tools/table_manager/table_manager.rb +6 -3
  171. data/lib/cosmos/tools/test_runner/test_runner.rb +14 -9
  172. data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +21 -9
  173. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +3 -3
  174. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +5 -8
  175. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +11 -8
  176. data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +9 -15
  177. data/lib/cosmos/tools/tlm_viewer/screen.rb +3 -1
  178. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +19 -13
  179. data/lib/cosmos/tools/tlm_viewer/widgets.rb +2 -0
  180. data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +4 -5
  181. data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +3 -4
  182. data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +4 -5
  183. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_clickable.rb +16 -2
  184. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +17 -3
  185. data/lib/cosmos/tools/tlm_viewer/widgets/canvasdot_widget.rb +1 -2
  186. data/lib/cosmos/tools/tlm_viewer/widgets/canvasellipse_widget.rb +1 -1
  187. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +12 -7
  188. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +79 -29
  189. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +1 -0
  190. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +2 -1
  191. data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +2 -0
  192. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +4 -0
  193. data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +33 -25
  194. data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +5 -3
  195. data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +5 -3
  196. data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +1 -1
  197. data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +4 -7
  198. data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +5 -5
  199. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +6 -7
  200. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +2 -4
  201. data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +10 -8
  202. data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +2 -3
  203. data/lib/cosmos/tools/tlm_viewer/widgets/labelled_widget.rb +58 -0
  204. data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +3 -4
  205. data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +2 -4
  206. data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +2 -1
  207. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +3 -5
  208. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +2 -3
  209. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitscolumn_widget.rb +2 -3
  210. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +2 -3
  211. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangecolumn_widget.rb +2 -3
  212. data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +3 -5
  213. data/lib/cosmos/tools/tlm_viewer/widgets/led_widget.rb +108 -0
  214. data/lib/cosmos/tools/tlm_viewer/widgets/limits_widget.rb +60 -10
  215. data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +22 -8
  216. data/lib/cosmos/tools/tlm_viewer/widgets/limitscolor_widget.rb +19 -13
  217. data/lib/cosmos/tools/tlm_viewer/widgets/limitscolumn_widget.rb +22 -8
  218. data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +2 -3
  219. data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +4 -3
  220. data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +1 -3
  221. data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +10 -5
  222. data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +7 -4
  223. data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +4 -6
  224. data/lib/cosmos/tools/tlm_viewer/widgets/rangecolumn_widget.rb +3 -5
  225. data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +4 -3
  226. data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +2 -3
  227. data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +2 -3
  228. data/lib/cosmos/tools/tlm_viewer/widgets/spacer_widget.rb +4 -6
  229. data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +2 -3
  230. data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +2 -3
  231. data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +13 -4
  232. data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +3 -4
  233. data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +2 -7
  234. data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +6 -12
  235. data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +5 -10
  236. data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +5 -3
  237. data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +4 -4
  238. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +2 -3
  239. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitscolumn_widget.rb +2 -3
  240. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +3 -4
  241. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangecolumn_widget.rb +2 -3
  242. data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +8 -7
  243. data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +9 -7
  244. data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +54 -46
  245. data/lib/cosmos/top_level.rb +23 -12
  246. data/lib/cosmos/version.rb +4 -4
  247. data/spec/gui/utilities/script_module_gui_spec.rb +44 -63
  248. data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +1 -1
  249. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +5 -5
  250. data/spec/install/yaml_docs_spec.rb +112 -0
  251. data/spec/interfaces/protocols/fixed_protocol_spec.rb +20 -9
  252. data/spec/interfaces/protocols/template_protocol_spec.rb +78 -25
  253. data/spec/packets/commands_spec.rb +22 -0
  254. data/spec/packets/packet_config_spec.rb +24 -0
  255. data/spec/packets/packet_item_spec.rb +2 -2
  256. data/spec/packets/packet_spec.rb +39 -6
  257. data/spec/packets/parsers/state_parser_spec.rb +33 -11
  258. data/spec/packets/structure_spec.rb +41 -0
  259. data/spec/packets/telemetry_spec.rb +23 -0
  260. data/spec/streams/tcpip_socket_stream_spec.rb +32 -27
  261. data/spec/system/system_spec.rb +77 -2
  262. data/spec/system/target_spec.rb +62 -1
  263. data/spec/tools/cmd_tlm_server/api_spec.rb +1 -1
  264. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +15 -7
  265. data/spec/top_level/top_level_spec.rb +29 -5
  266. data/tasks/gemfile_stats.rake +28 -14
  267. data/test/performance/config/system/system.txt +0 -0
  268. data/test/performance/config/targets/PACKET/cmd_tlm/packet_tlm.txt +5 -5
  269. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap-theme.css +397 -0
  270. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap-theme.min.css +7 -0
  271. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap.css +7118 -0
  272. data/test/performance/config/tools/handbook_creator/assets/css/bootstrap.min.css +7 -0
  273. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  274. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.svg +229 -0
  275. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  276. data/test/performance/config/tools/handbook_creator/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  277. data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.bmp +0 -0
  278. data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.gif +0 -0
  279. data/test/performance/config/tools/handbook_creator/assets/img/ball_logo.jpg +0 -0
  280. data/test/performance/config/tools/handbook_creator/assets/js/bootstrap.js +2006 -0
  281. data/test/performance/config/tools/handbook_creator/assets/js/bootstrap.min.js +7 -0
  282. data/test/performance/config/tools/handbook_creator/assets/js/html5shiv.js +8 -0
  283. data/test/performance/config/tools/handbook_creator/assets/js/jquery-1.10.2.min.js +6 -0
  284. data/test/performance/config/tools/handbook_creator/assets/js/respond.min.js +6 -0
  285. data/test/performance/config/tools/test_runner/test_runner.txt +1 -1
  286. data/test/performance/procedures/cosmos_api_test.rb +1 -1
  287. data/test/performance/tools/identify_performance.rb +82 -0
  288. metadata +92 -55
@@ -85,9 +85,9 @@ module Cosmos
85
85
  when 'TABLEFILE'
86
86
  usage = "#{keyword} <File name>"
87
87
  parser.verify_num_parameters(1, 1, usage)
88
- filename = File.join(File.dirname(filename), params[0])
89
- raise parser.error("Table file #{filename} not found", usage) unless File.exist?(filename)
90
- process_file(filename)
88
+ table_filename = File.join(File.dirname(filename), params[0])
89
+ raise parser.error("Table file #{table_filename} not found", usage) unless File.exist?(table_filename)
90
+ process_file(table_filename)
91
91
 
92
92
  when 'TABLE'
93
93
  finish_packet()
@@ -172,6 +172,8 @@ module Cosmos
172
172
  # duplicated until the specified number of rows are created.
173
173
  def finish_packet
174
174
  if @current_packet
175
+ warnings = @current_packet.check_bit_offsets
176
+ raise "Overlapping items not allowed in tables.\n#{warnings}" if warnings.length > 0
175
177
  if @current_packet.type == :TWO_DIMENSIONAL
176
178
  items = @current_packet.sorted_items.clone
177
179
  (@current_packet.num_rows - 1).times do |row|
@@ -192,7 +192,7 @@ module Cosmos
192
192
  option_parser.on("-c", "--create FILE", "Use the specified definition file to create the table") do |arg|
193
193
  options.create = arg
194
194
  end
195
- option_parser.on("-o", "--output DIRECTORY", "Create files in the specified directory") do |arg|
195
+ option_parser.on("-o", "--output DIRECTORY", "Create files in the specified directory (required with --create)") do |arg|
196
196
  options.output_dir = File.expand_path(arg)
197
197
  end
198
198
  option_parser.on("--convert FILE", "Convert the specified configuration file to the new format") do |arg|
@@ -211,12 +211,15 @@ module Cosmos
211
211
  # command line
212
212
  # @return [Boolean] Whether to contine running the application
213
213
  def self.post_options_parsed_hook(options)
214
- if options.create
214
+ if options.create and options.output_dir
215
+ normalize_config_options(options)
215
216
  core = TableManagerCore.new
216
- core.file_new(options.create, options.output_dir)
217
+ create_path = self.config_path(options, options.create, ".txt", "table_manager")
218
+ core.file_new(create_path, options.output_dir)
217
219
  return false
218
220
  end
219
221
  if options.convert
222
+ normalize_config_options(options)
220
223
  if options.convert.include?("/")
221
224
  parts = options.convert.split("/")
222
225
  else
@@ -995,8 +995,9 @@ module Cosmos
995
995
  parser = ConfigParser.new("http://cosmosrb.com/docs/tools/#test-runner-configuration")
996
996
  parser.parse_file(filename) do |keyword, params|
997
997
  case keyword
998
- when 'REQUIRE_UTILITY'
999
- parser.verify_num_parameters(1, 1, "REQUIRE_UTILITY <filename>")
998
+ # REQUIRE_UTILITY was deprecated > 4.3.0 but left for compatibility purposes
999
+ when 'LOAD_UTILITY', 'REQUIRE_UTILITY'
1000
+ parser.verify_num_parameters(1, 1, "LOAD_UTILITY <filename>")
1000
1001
  begin
1001
1002
  require_utility params[0]
1002
1003
  @utilities << params[0]
@@ -1096,6 +1097,14 @@ module Cosmos
1096
1097
  parser.verify_num_parameters(0, 0, "#{keyword}")
1097
1098
  @@results_writer.metadata = true
1098
1099
 
1100
+ when 'DISABLE_TEST_SUITE_START'
1101
+ parser.verify_num_parameters(0, 0, "#{keyword}")
1102
+ Qt.execute_in_main_thread { @test_runner_chooser.test_suite_start_disabled = true }
1103
+
1104
+ when 'DISABLE_TEST_GROUP_START'
1105
+ parser.verify_num_parameters(0, 0, "#{keyword}")
1106
+ Qt.execute_in_main_thread { @test_runner_chooser.test_group_start_disabled = true }
1107
+
1099
1108
  else
1100
1109
  raise "Unhandled keyword: #{keyword}" if keyword
1101
1110
  end
@@ -1261,12 +1270,9 @@ module Cosmos
1261
1270
  options.height = 700
1262
1271
  options.title = "Test Runner"
1263
1272
  options.auto_size = false
1264
- options.config_file = File.join(Cosmos::USERPATH, 'config', 'tools', 'test_runner', 'test_runner.txt')
1265
1273
  options.server_config_file = CmdTlmServer::DEFAULT_CONFIG_FILE
1274
+ options.config_file = true # config_file is required
1266
1275
  option_parser.separator "Test Runner Specific Options:"
1267
- option_parser.on("-c", "--config FILE", "Use the specified configuration file") do |arg|
1268
- options.config_file = File.join(Cosmos::USERPATH, 'config', 'tools', 'test_runner', arg)
1269
- end
1270
1276
  option_parser.on("-s", "--server FILE", "Use the specified server configuration file for disconnect mode") do |arg|
1271
1277
  options.server_config_file = arg
1272
1278
  end
@@ -1292,6 +1298,5 @@ module Cosmos
1292
1298
  super(option_parser, options)
1293
1299
  end
1294
1300
  end
1295
- end # class TestRunner
1296
-
1297
- end # module Cosmos
1301
+ end
1302
+ end
@@ -54,6 +54,9 @@ module Cosmos
54
54
  # Callback called when the test teardown button is pressed - call(test_suite, test)
55
55
  attr_accessor :test_teardown_callback
56
56
 
57
+ # Whether the suite and group start button is disabled
58
+ attr_reader :test_suite_start_disabled, :test_group_start_disabled
59
+
57
60
  # Constructor
58
61
  def initialize(parent)
59
62
  super(parent)
@@ -65,6 +68,9 @@ module Cosmos
65
68
  setup_button_width = 60
66
69
  teardown_button_width = 60
67
70
 
71
+ @test_suite_start_disabled = false
72
+ @test_group_start_disabled = false
73
+
68
74
  # Test Suite Selection
69
75
  @test_suite_combobox = Qt::ComboBox.new
70
76
  @test_suite_combobox.setSizePolicy(Qt::SizePolicy::Minimum, Qt::SizePolicy::Minimum)
@@ -154,14 +160,20 @@ module Cosmos
154
160
  @test_setup_callback = nil
155
161
  @test_suite_teardown_callback = nil
156
162
  @test_teardown_callback = nil
163
+ end
164
+
165
+ def test_suite_start_disabled=(bool)
166
+ @test_suite_start_disabled = bool
167
+ if @test_suite_start_disabled
168
+ @test_suite_start_button.setEnabled(false)
169
+ end
170
+ end
157
171
 
158
- @test_suite_start_enabled = false
159
- @test_suite_setup_enabled = false
160
- @test_suite_teardown_enabled = false
161
- @test_start_enabled = false
162
- @test_setup_enabled = false
163
- @test_teardown_enabled = false
164
- @test_case_start_enabled = false
172
+ def test_group_start_disabled=(bool)
173
+ @test_group_start_disabled = bool
174
+ if @test_group_start_disabled
175
+ @test_start_button.setEnabled(false)
176
+ end
165
177
  end
166
178
 
167
179
  def select_suite(test_suite)
@@ -282,7 +294,7 @@ module Cosmos
282
294
  @test_suite_teardown_button.setEnabled(false)
283
295
  end
284
296
  end
285
- if @test_suites.keys.empty?
297
+ if @test_suites.keys.empty? || @test_suite_start_disabled
286
298
  @test_suite_start_button.setEnabled(false)
287
299
  else
288
300
  @test_suite_start_button.setEnabled(true)
@@ -311,7 +323,7 @@ module Cosmos
311
323
  @test_teardown_button.setEnabled(false)
312
324
  end
313
325
  end
314
- @test_start_button.setEnabled(true)
326
+ @test_start_button.setEnabled(true) unless @test_group_start_disabled
315
327
  else
316
328
  @test_start_button.setEnabled(false)
317
329
  end
@@ -93,6 +93,7 @@ module Cosmos
93
93
 
94
94
  System.telemetry
95
95
  @search_box.completion_list = System.telemetry.all_item_strings(true, splash)
96
+ # Always create the TlmExtractorConfig but note that it's optional to pass a config file
96
97
  @tlm_extractor_config = TlmExtractorConfig.new(options.config_file)
97
98
  @tlm_extractor_processor = TlmExtractorProcessor.new
98
99
  Qt.execute_in_main_thread(true) do
@@ -453,6 +454,8 @@ module Cosmos
453
454
 
454
455
  def self.post_options_parsed_hook(options)
455
456
  if options.input_files or options.dart
457
+ normalize_config_options(options)
458
+
456
459
  # Process config file
457
460
  raise "Configuration File must be specified for command line processing" unless options.config_file
458
461
 
@@ -500,9 +503,6 @@ module Cosmos
500
503
  options.title = "Telemetry Extractor"
501
504
  options.dart = false
502
505
  option_parser.separator "Telemetry Extractor Specific Options:"
503
- option_parser.on("-c", "--config FILE", "Use the specified configuration file") do |arg|
504
- options.config_file = File.join(Cosmos::USERPATH, 'config', 'tools', 'tlm_extractor', arg)
505
- end
506
506
  option_parser.on("-i", "--input FILE", "Process the specified input file") do |arg|
507
507
  options.input_files ||= []
508
508
  if arg[0..0] != '/' and arg[1..1] != ':'
@@ -16,11 +16,10 @@ module Cosmos
16
16
 
17
17
  # Thread used to gather telemetry in realtime and process it using a TabbedPlotsDefinition
18
18
  class TabbedPlotsRealtimeThread < InterfaceThread
19
-
20
19
  # Create a new TabbedPlotsRealtimeThread
21
20
  def initialize(tabbed_plots_config, connection_success_callback = nil, connection_failed_callback = nil, connection_lost_callback = nil, fatal_exception_callback = nil, replay_mode = false)
22
21
  if replay_mode
23
- interface = TcpipClientInterface.new(System.connect_hosts['REPLAY_PREIDENTIFIED'], nil, System.ports['REPLAY_PREIDENTIFIED'], nil, tabbed_plots_config.cts_timeout, 'PREIDENTIFIED')
22
+ interface = TcpipClientInterface.new(System.connect_hosts['REPLAY_PREIDENTIFIED'], nil, System.ports['REPLAY_PREIDENTIFIED'], nil, nil, 'PREIDENTIFIED')
24
23
  else
25
24
  interface = TcpipClientInterface.new(System.connect_hosts['CTS_PREIDENTIFIED'], nil, System.ports['CTS_PREIDENTIFIED'], nil, tabbed_plots_config.cts_timeout, 'PREIDENTIFIED')
26
25
  end
@@ -52,7 +51,7 @@ module Cosmos
52
51
 
53
52
  # Start interface thread
54
53
  start()
55
- end # def initialize
54
+ end
56
55
 
57
56
  # Callback to the system definition when a packet is received
58
57
  def received_packet_callback(packet)
@@ -65,7 +64,7 @@ module Cosmos
65
64
  stop()
66
65
  Cosmos.kill_thread(self, @process_thread)
67
66
  @process_thread = nil
68
- end # def kill
67
+ end
69
68
 
70
69
  def graceful_kill
71
70
  # Allow the callbacks a chance to update the GUI so that they can die gracefully
@@ -76,7 +75,5 @@ module Cosmos
76
75
  end
77
76
  end
78
77
  end
79
-
80
- end # class TabbedPlotsRealtimeThread
81
-
82
- end # module Cosmos
78
+ end
79
+ end
@@ -24,15 +24,14 @@ require 'cosmos/gui/dialogs/dart_dialog'
24
24
  require 'cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots'
25
25
 
26
26
  module Cosmos
27
-
28
27
  # Displays multiple plots that perform various analysis on data.
29
28
  class TabbedPlotsTool < QtTool
30
-
31
29
  MINIMUM_LEFT_PANEL_WIDTH = 200
32
30
  DEFAULT_LEFT_PANEL_WIDTH = 250
33
31
 
34
32
  def initialize(options)
35
33
  super(options) # MUST BE FIRST - All code before super is executed twice in RubyQt Based classes
34
+ @options = options
36
35
  @base_title = self.windowTitle
37
36
  Cosmos.load_cosmos_icon("tlm_grapher.png")
38
37
 
@@ -77,9 +76,10 @@ module Cosmos
77
76
  System.telemetry
78
77
 
79
78
  # Create tabbed plots definition
80
- @config_filename = File.join(Cosmos::USERPATH, 'config', 'tools', options.config_dir, options.config_file)
79
+ @config_filename = options.config_file ? options.config_file : ''
81
80
  Qt.execute_in_main_thread(true) do
82
81
  load_configuration()
82
+ toggle_replay_mode() if options.replay
83
83
  end
84
84
 
85
85
  # Unconfigure CosmosConfig to interact with splash screen
@@ -590,9 +590,14 @@ module Cosmos
590
590
  @tabbed_plots.pause
591
591
 
592
592
  if prompt_for_save_if_needed()
593
+ if @config_filename.empty?
594
+ load_filename = @options.config_dir
595
+ else
596
+ load_filename = @config_filename
597
+ end
593
598
  filename = Qt::FileDialog.getOpenFileName(self,
594
599
  "Load Configuration",
595
- @config_filename,
600
+ load_filename,
596
601
  "Config File (*.txt);;All Files (*)")
597
602
  if filename and not filename.empty?
598
603
  @config_filename = filename
@@ -1070,7 +1075,5 @@ module Cosmos
1070
1075
  def realtime_thread_fatal_exception_callback(error)
1071
1076
  Cosmos.handle_fatal_exception(error)
1072
1077
  end # def realtime_thread_fatal_exception_callback
1073
-
1074
- end # class TabbedPlotsTool
1075
-
1076
- end # module Cosmos
1078
+ end
1079
+ end
@@ -16,15 +16,12 @@ end
16
16
 
17
17
  module Cosmos
18
18
 
19
- # TlmGrapher class
20
- #
21
- # This class implements the TlmGrapher Application. This application displays multiple line graphs
22
- # that perform various analysis on housekeeping telemetry.
23
- #
19
+ # Telemetry Grapher displays multiple line graphs that perform various
20
+ # analysis on housekeeping telemetry.
24
21
  class TlmGrapher < TabbedPlotsTool
25
22
 
26
23
  # Runs the application
27
- def self.run (opts = nil, options = nil)
24
+ def self.run(opts = nil, options = nil)
28
25
  Cosmos.catch_fatal_exception do
29
26
  unless options
30
27
  opts, options = create_default_options()
@@ -32,8 +29,6 @@ module Cosmos
32
29
  options.width = 1000
33
30
  options.height = 800
34
31
  options.title = "Telemetry Grapher"
35
- options.config_dir = 'tlm_grapher'
36
- options.config_file = 'tlm_grapher.txt'
37
32
  options.tool_short_name = 'tlmgrapher'
38
33
  options.tabbed_plots_type = 'overview'
39
34
  options.data_object_types = ['HOUSEKEEPING', 'XY','SINGLEXY']
@@ -43,12 +38,10 @@ module Cosmos
43
38
  options.adder_orientation = Qt::Horizontal
44
39
  options.items = []
45
40
  options.start = false
41
+ options.replay = false
46
42
  options.about_string = "TlmGrapher provides realtime and log file graphing abilities to the COSMOS system."
47
43
 
48
44
  opts.separator "Telemetry Grapher Specific Options:"
49
- opts.on("-c", "--config FILE", "Use the specified configuration file") do |arg|
50
- options.config_file = arg
51
- end
52
45
  opts.on("-s", "--start", "Start graphing immediately") do |arg|
53
46
  options.start = true
54
47
  end
@@ -60,6 +53,9 @@ module Cosmos
60
53
  end
61
54
  options.items << split
62
55
  end
56
+ opts.on("--replay", "Start Telemetry Grapher in Replay mode") do
57
+ options.replay = true
58
+ end
63
59
  end
64
60
 
65
61
  super(opts, options)
@@ -97,7 +93,5 @@ module Cosmos
97
93
  plot_index += 1
98
94
  end
99
95
  end
100
-
101
- end # class TlmGrapher
102
-
103
- end # module Cosmos
96
+ end
97
+ end
@@ -23,7 +23,7 @@ module Cosmos
23
23
  # close_all_screens is called
24
24
  @@open_screens = []
25
25
 
26
- attr_accessor :full_name, :width, :height, :window, :replay_flag
26
+ attr_accessor :full_name, :width, :height, :window, :replay_flag, :original_target_name
27
27
 
28
28
  include ClassificationBanner
29
29
 
@@ -340,6 +340,7 @@ module Cosmos
340
340
  # to the stack and that class doesn't have a complete method.
341
341
  current_widget.complete() if current_widget.respond_to? :complete
342
342
  when 'SETTING'
343
+ next unless current_widget
343
344
  parser.verify_num_parameters(1, nil, "#{keyword} <Setting Name> <Setting Values... (optional)>")
344
345
  if parameters.length > 1
345
346
  current_widget.set_setting(parameters[0], parameters[1..-1])
@@ -347,6 +348,7 @@ module Cosmos
347
348
  current_widget.set_setting(parameters[0], [])
348
349
  end
349
350
  when 'SUBSETTING'
351
+ next unless current_widget
350
352
  parser.verify_num_parameters(2, nil, "#{keyword} <Widget Index (0..?)> <Setting Name> <Setting Values... (optional)>")
351
353
  if parameters.length > 2
352
354
  current_widget.set_subsetting(parameters[0], parameters[1], parameters[2..-1])
@@ -59,7 +59,7 @@ module Cosmos
59
59
  def self.load_config(filename)
60
60
  raise "Configuration file #{filename} does not exist." unless filename && File.exist?(filename)
61
61
 
62
- # Find all screen files so we can calculate MD5
62
+ # Find all screen files so we can calculate hashing sum
63
63
  tlmviewer_files = [filename, System.initial_filename]
64
64
  additional_data = ''
65
65
  System.targets.each do |target_name, target|
@@ -79,9 +79,13 @@ module Cosmos
79
79
  end
80
80
  end
81
81
  end
82
- # Calculate MD5 and attempt to load marshal file
83
- md5 = Cosmos.md5_files(tlmviewer_files, additional_data)
84
- marshal_filename = File.join(System.paths['TMP'], "tlmviewer_#{md5.hexdigest}.bin")
82
+ # Calculate the hashing sum and attempt to load marshal file
83
+ hashing_result = Cosmos.hash_files(tlmviewer_files, additional_data, System.hashing_algorithm)
84
+ # Only use at most, 32 characters of the hex
85
+ hash_string = hashing_result.hexdigest
86
+ hash_string = hash_string[-32..-1] if hash_string.length >= 32
87
+
88
+ marshal_filename = File.join(System.paths['TMP'], "tlmviewer_#{hash_string}.bin")
85
89
  config = Cosmos.marshal_load(marshal_filename)
86
90
  unless config
87
91
  # Marshal file load failed - Manually load configuration
@@ -145,6 +149,7 @@ module Cosmos
145
149
  @all_telemetry = System.telemetry.all_item_strings(false, splash)
146
150
 
147
151
  Qt.execute_in_main_thread(true) do
152
+ toggle_replay_mode() if options.replay
148
153
  @search_box.completion_list = @tlm_viewer_config.completion_list
149
154
  @search_box.callback = lambda do |tlm|
150
155
  mapping = @tlm_viewer_config.tlm_to_screen_mapping[tlm]
@@ -546,36 +551,35 @@ module Cosmos
546
551
  options.title = 'Telemetry Viewer'
547
552
  options.screen = nil
548
553
  options.listen = true
549
- options.config_file = nil
550
554
  options.restore_size = false
551
555
  options.production = false
556
+ options.replay = false
557
+ options.config_file = true # config_file is required
552
558
 
553
559
  option_parser.separator "Telemetry Viewer Specific Options:"
554
- option_parser.on("-c", "--config FILE", "Use the specified config file") { |arg| options.config_file = arg }
555
560
  option_parser.on("-s", "--screen SCREEN_NAME", "Start up the specified screen") { |arg| options.screen = arg }
556
561
  option_parser.on("-n", "--nolisten", "Don't listen for requests") do
557
562
  options.listen = false
558
563
  options.title << ' : Not Listening'
559
564
  end
560
- option_parser.on("-p", "--production", "Run TlmServer in production mode which disables the edit buttons.") do |arg|
565
+ option_parser.on("-p", "--production", "Run Telemetry Viewer in production mode which disables the edit buttons.") do |arg|
561
566
  options.production = true
562
567
  end
568
+ option_parser.on("--replay", "Run Telemetry Viewer in Replay mode") do
569
+ options.replay = true
570
+ end
563
571
  option_parser.parse!(ARGV)
564
572
  end
565
573
 
566
574
  if options.screen
575
+ normalize_config_options(options)
567
576
  application = nil
568
577
  begin
569
578
  QtTool.redirect_io
570
579
  System.telemetry
571
580
  application = Qt::Application.new(ARGV)
572
581
  application.addLibraryPath(Qt::PLUGIN_PATH) if Kernel.is_windows?
573
- if options.config_file
574
- filename = File.join(::Cosmos::USERPATH, 'config', 'tools', 'tlm_viewer', options.config_file)
575
- else
576
- filename = File.join(::Cosmos::USERPATH, 'config', 'tools', 'tlm_viewer', 'tlm_viewer.txt')
577
- end
578
- tlm_viewer_config = load_config(filename)
582
+ tlm_viewer_config = load_config(options.config_file)
579
583
  screen_info = tlm_viewer_config.screen_infos[options.screen.upcase]
580
584
  raise "Unknown screen: #{options.screen.upcase}" unless screen_info
581
585
  if not options.auto_position
@@ -583,6 +587,8 @@ module Cosmos
583
587
  else
584
588
  screen_info.screen = Screen.new(screen_info.full_name, screen_info.filename, nil, :REALTIME, screen_info.x_pos, screen_info.y_pos, screen_info.original_target_name, screen_info.substitute, screen_info.force_substitute, true)
585
589
  end
590
+ set_replay_mode(true) if options.replay
591
+ Screen.update_replay_mode
586
592
  application.exec
587
593
  rescue Exception => error
588
594
  unless error.class == SystemExit or error.class == Interrupt