cosmos 3.5.1 → 3.5.2

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 (1158) hide show
  1. checksums.yaml +4 -4
  2. data/.coveralls.yml +1 -1
  3. data/.gitattributes +3 -3
  4. data/.gitignore +48 -48
  5. data/.travis.yml +8 -8
  6. data/CONTRIBUTING.txt +50 -50
  7. data/Gemfile +10 -10
  8. data/Guardfile +27 -27
  9. data/LICENSE.txt +879 -879
  10. data/Manifest.txt +1414 -1414
  11. data/README.md +111 -111
  12. data/Rakefile +218 -214
  13. data/autohotkey/config/data/diamond.STL +57 -57
  14. data/autohotkey/config/system/system.txt +34 -34
  15. data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
  16. data/autohotkey/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
  17. data/autohotkey/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
  18. data/autohotkey/config/targets/COSMOS/target.txt +5 -5
  19. data/autohotkey/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -121
  20. data/autohotkey/config/targets/INST/cmd_tlm/inst_tlm.txt +270 -270
  21. data/autohotkey/config/targets/INST/cmd_tlm_server.txt +5 -5
  22. data/autohotkey/config/targets/INST/lib/example_limits_response.rb +30 -30
  23. data/autohotkey/config/targets/INST/lib/sim_inst.rb +305 -305
  24. data/autohotkey/config/targets/INST/screens/adcs.txt +46 -46
  25. data/autohotkey/config/targets/INST/screens/array.txt +7 -7
  26. data/autohotkey/config/targets/INST/screens/block.txt +8 -8
  27. data/autohotkey/config/targets/INST/screens/commanding.txt +30 -30
  28. data/autohotkey/config/targets/INST/screens/graphs.txt +14 -14
  29. data/autohotkey/config/targets/INST/screens/ground.txt +25 -25
  30. data/autohotkey/config/targets/INST/screens/health_status.txt +33 -33
  31. data/autohotkey/config/targets/INST/screens/hs.txt +49 -49
  32. data/autohotkey/config/targets/INST/screens/image.txt +21 -21
  33. data/autohotkey/config/targets/INST/screens/latest.txt +23 -23
  34. data/autohotkey/config/targets/INST/screens/mech.txt +25 -25
  35. data/autohotkey/config/targets/INST/screens/other.txt +25 -25
  36. data/autohotkey/config/targets/INST/screens/params.txt +25 -25
  37. data/autohotkey/config/targets/INST/screens/tabs.txt +68 -68
  38. data/autohotkey/config/targets/INST/target.txt +26 -26
  39. data/autohotkey/config/targets/META/cmd_tlm/meta_cmd.txt +10 -10
  40. data/autohotkey/config/targets/META/cmd_tlm/meta_tlm.txt +9 -9
  41. data/autohotkey/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
  42. data/autohotkey/config/targets/SYSTEM/screens/error.txt +11 -11
  43. data/autohotkey/config/tools/cmd_tlm_server/cmd_tlm_server.txt +22 -22
  44. data/autohotkey/config/tools/data_viewer/data_viewer.txt +11 -11
  45. data/autohotkey/config/tools/handbook_creator/handbook_creator.txt +49 -49
  46. data/autohotkey/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
  47. data/autohotkey/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
  48. data/autohotkey/config/tools/handbook_creator/templates/footer.html.erb +9 -9
  49. data/autohotkey/config/tools/handbook_creator/templates/header.html.erb +25 -25
  50. data/autohotkey/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
  51. data/autohotkey/config/tools/handbook_creator/templates/nav.html.erb +27 -27
  52. data/autohotkey/config/tools/handbook_creator/templates/overview.html.erb +1 -1
  53. data/autohotkey/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
  54. data/autohotkey/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
  55. data/autohotkey/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
  56. data/autohotkey/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
  57. data/autohotkey/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
  58. data/autohotkey/config/tools/handbook_creator/templates/title.html.erb +1 -1
  59. data/autohotkey/config/tools/launcher/launcher.txt +38 -38
  60. data/autohotkey/config/tools/script_runner/script_runner.txt +3 -3
  61. data/autohotkey/config/tools/table_manager/ConfigTables_def.txt +8 -8
  62. data/autohotkey/config/tools/table_manager/OneDimensionalTable_def.txt +19 -19
  63. data/autohotkey/config/tools/table_manager/TwoDimensionalTable_def.txt +248 -248
  64. data/autohotkey/config/tools/test_runner/test_runner.txt +8 -8
  65. data/autohotkey/config/tools/test_runner/test_runner2.txt +11 -11
  66. data/autohotkey/config/tools/test_runner/test_runner3.txt +6 -6
  67. data/autohotkey/config/tools/test_runner/test_runner4.txt +1 -1
  68. data/autohotkey/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
  69. data/autohotkey/config/tools/tlm_extractor/tlm_extractor2.txt +9 -9
  70. data/autohotkey/config/tools/tlm_grapher/bad.txt +50 -50
  71. data/autohotkey/config/tools/tlm_grapher/temp1-4.txt +51 -51
  72. data/autohotkey/config/tools/tlm_grapher/test2.txt +111 -111
  73. data/autohotkey/config/tools/tlm_viewer/tlm_viewer.txt +24 -24
  74. data/autohotkey/config/tools/tlm_viewer/tlm_viewer2.txt +4 -4
  75. data/autohotkey/config/tools/tlm_viewer/tlm_viewer3.txt +3 -3
  76. data/autohotkey/lib/example_background_task.rb +42 -42
  77. data/autohotkey/lib/user_version.rb +3 -3
  78. data/autohotkey/procedures/clear_util.rb +7 -7
  79. data/autohotkey/procedures/collect_util.rb +14 -14
  80. data/autohotkey/procedures/example_test.rb +67 -67
  81. data/autohotkey/procedures/example_test2.rb +74 -74
  82. data/autohotkey/procedures/script_test.rb +17 -17
  83. data/autohotkey/procedures/syntax_error.rb +18 -18
  84. data/autohotkey/tools/CmdExtractorAHK +16 -16
  85. data/autohotkey/tools/CmdSender +14 -14
  86. data/autohotkey/tools/CmdSenderAHK +18 -18
  87. data/autohotkey/tools/CmdTlmServer +14 -14
  88. data/autohotkey/tools/CmdTlmServerAHK +28 -28
  89. data/autohotkey/tools/CmdTlmServerAHK2 +17 -17
  90. data/autohotkey/tools/DataViewer +14 -14
  91. data/autohotkey/tools/DataViewerAHK +17 -17
  92. data/autohotkey/tools/HandbookCreatorAHK +20 -20
  93. data/autohotkey/tools/LauncherAHK +17 -17
  94. data/autohotkey/tools/LimitsMonitorAHK +20 -20
  95. data/autohotkey/tools/OpenGLBuilderAHK +24 -24
  96. data/autohotkey/tools/PacketViewer +14 -14
  97. data/autohotkey/tools/PacketViewerAHK +18 -18
  98. data/autohotkey/tools/PacketViewerAHK2 +17 -17
  99. data/autohotkey/tools/Replay +14 -14
  100. data/autohotkey/tools/ReplayAHK +17 -17
  101. data/autohotkey/tools/ScriptRunner +14 -14
  102. data/autohotkey/tools/ScriptRunnerAHK +20 -20
  103. data/autohotkey/tools/ScriptRunnerAHK2 +17 -17
  104. data/autohotkey/tools/TableManager +14 -14
  105. data/autohotkey/tools/TableManagerAHK +30 -30
  106. data/autohotkey/tools/TestRunner +15 -15
  107. data/autohotkey/tools/TestRunnerAHK +17 -17
  108. data/autohotkey/tools/TestRunnerAHK2 +17 -17
  109. data/autohotkey/tools/TestRunnerAHK3 +17 -17
  110. data/autohotkey/tools/TestRunnerAHK4 +17 -17
  111. data/autohotkey/tools/TestRunnerAHK5 +17 -17
  112. data/autohotkey/tools/TestRunnerAHK6 +17 -17
  113. data/autohotkey/tools/TlmExtractor +15 -15
  114. data/autohotkey/tools/TlmExtractorAHK +19 -19
  115. data/autohotkey/tools/TlmExtractorAHK2 +16 -16
  116. data/autohotkey/tools/TlmExtractorAHK3 +16 -16
  117. data/autohotkey/tools/TlmGrapher +14 -14
  118. data/autohotkey/tools/TlmGrapherAHK +19 -19
  119. data/autohotkey/tools/TlmGrapherAHK2 +23 -23
  120. data/autohotkey/tools/TlmGrapherAHK3 +17 -17
  121. data/autohotkey/tools/TlmGrapherAHK4 +17 -17
  122. data/autohotkey/tools/TlmViewer +14 -14
  123. data/autohotkey/tools/TlmViewerAHK +28 -28
  124. data/autohotkey/tools/TlmViewerAHK2 +22 -22
  125. data/autohotkey/tools/TlmViewerAHK3 +23 -23
  126. data/autohotkey/tools/TlmViewerAHK4 +22 -22
  127. data/autohotkey/tools/TlmViewerAHK5 +18 -18
  128. data/autohotkey/tools/autohotkey.rb +37 -37
  129. data/autohotkey/tools/cmd_extractor.ahk +33 -33
  130. data/autohotkey/tools/cmd_sender.ahk +182 -182
  131. data/autohotkey/tools/cmd_tlm_server.ahk +90 -90
  132. data/autohotkey/tools/cmd_tlm_server2.ahk +45 -45
  133. data/autohotkey/tools/data_viewer.ahk +141 -141
  134. data/autohotkey/tools/handbook_creator.ahk +32 -32
  135. data/autohotkey/tools/launcher.ahk +41 -41
  136. data/autohotkey/tools/limits_monitor.ahk +123 -123
  137. data/autohotkey/tools/open_gl_builder.ahk +134 -134
  138. data/autohotkey/tools/packet_viewer.ahk +196 -196
  139. data/autohotkey/tools/packet_viewer2.ahk +9 -9
  140. data/autohotkey/tools/replay.ahk +104 -104
  141. data/autohotkey/tools/script_runner.ahk +589 -589
  142. data/autohotkey/tools/script_runner2.ahk +38 -38
  143. data/autohotkey/tools/table_manager.ahk +220 -220
  144. data/autohotkey/tools/test_runner.ahk +262 -262
  145. data/autohotkey/tools/test_runner2.ahk +53 -53
  146. data/autohotkey/tools/test_runner3.ahk +13 -13
  147. data/autohotkey/tools/test_runner5.ahk +8 -8
  148. data/autohotkey/tools/test_runner6.ahk +5 -5
  149. data/autohotkey/tools/tlm_extractor.ahk +296 -296
  150. data/autohotkey/tools/tlm_grapher.ahk +660 -660
  151. data/autohotkey/tools/tlm_grapher2.ahk +115 -115
  152. data/autohotkey/tools/tlm_grapher3.ahk +24 -24
  153. data/autohotkey/tools/tlm_viewer.ahk +133 -133
  154. data/autohotkey/tools/tlm_viewer2.ahk +50 -50
  155. data/autohotkey/tools/tlm_viewer4.ahk +4 -4
  156. data/autohotkey/tools/tlm_viewer5.ahk +20 -20
  157. data/bin/cosmos +96 -96
  158. data/bin/cstol_converter +1166 -1166
  159. data/bin/rubysloc +85 -85
  160. data/cosmos.gemspec +99 -99
  161. data/data/about.txt +4 -4
  162. data/data/crc.txt +326 -326
  163. data/data/diamond.STL +57 -57
  164. data/data/legal.txt +9 -9
  165. data/demo/Gemfile +10 -10
  166. data/demo/Launcher +16 -16
  167. data/demo/Launcher.bat +0 -0
  168. data/demo/Rakefile +77 -77
  169. data/demo/config/data/crc.txt +224 -226
  170. data/demo/config/data/diamond.STL +57 -57
  171. data/demo/config/data/meta_init.txt +4 -4
  172. data/demo/config/system/system.txt +35 -35
  173. data/demo/config/system/system2.txt +33 -33
  174. data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
  175. data/demo/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
  176. data/demo/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
  177. data/demo/config/targets/COSMOS/screens/limits_change.txt +20 -20
  178. data/demo/config/targets/COSMOS/screens/version.txt +19 -19
  179. data/demo/config/targets/COSMOS/target.txt +11 -11
  180. data/demo/config/targets/EXAMPLE/cmd_tlm/example_cmds.txt +2 -2
  181. data/demo/config/targets/EXAMPLE/cmd_tlm/example_tlm.txt +5 -5
  182. data/demo/config/targets/EXAMPLE/cmd_tlm_server.txt +6 -6
  183. data/demo/config/targets/EXAMPLE/lib/example_interface.rb +22 -22
  184. data/demo/config/targets/EXAMPLE/target.txt +6 -6
  185. data/demo/config/targets/INST/cmd_tlm/inst_cmds.txt +121 -121
  186. data/demo/config/targets/INST/cmd_tlm/inst_tlm.txt +247 -247
  187. data/demo/config/targets/INST/cmd_tlm_server.txt +5 -5
  188. data/demo/config/targets/INST/lib/example_limits_response.rb +30 -30
  189. data/demo/config/targets/INST/lib/sim_inst.rb +305 -305
  190. data/demo/config/targets/INST/screens/adcs.txt +46 -46
  191. data/demo/config/targets/INST/screens/array.txt +15 -15
  192. data/demo/config/targets/INST/screens/block.txt +8 -8
  193. data/demo/config/targets/INST/screens/commanding.txt +30 -30
  194. data/demo/config/targets/INST/screens/graphs.txt +14 -14
  195. data/demo/config/targets/INST/screens/ground.txt +25 -25
  196. data/demo/config/targets/INST/screens/hs.txt +44 -44
  197. data/demo/config/targets/INST/screens/latest.txt +23 -23
  198. data/demo/config/targets/INST/screens/other.txt +29 -29
  199. data/demo/config/targets/INST/screens/tabs.txt +70 -70
  200. data/demo/config/targets/INST/target.txt +33 -33
  201. data/demo/config/targets/META/cmd_tlm/meta_cmd.txt +10 -10
  202. data/demo/config/targets/META/cmd_tlm/meta_tlm.txt +13 -13
  203. data/demo/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
  204. data/demo/config/targets/SYSTEM/cmd_tlm/override.txt +29 -29
  205. data/demo/config/targets/SYSTEM/screens/status.txt +12 -12
  206. data/demo/config/targets/TEMPLATED/cmd_tlm/templated_cmds.txt +13 -13
  207. data/demo/config/targets/TEMPLATED/cmd_tlm/templated_tlm.txt +3 -3
  208. data/demo/config/targets/TEMPLATED/cmd_tlm_server.txt +6 -6
  209. data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +56 -56
  210. data/demo/config/targets/TEMPLATED/target.txt +6 -6
  211. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +39 -39
  212. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +34 -34
  213. data/demo/config/tools/data_viewer/data_viewer.txt +11 -11
  214. data/demo/config/tools/handbook_creator/handbook_creator.txt +66 -66
  215. data/demo/config/tools/handbook_creator/templates/command_packets.html.erb +88 -88
  216. data/demo/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
  217. data/demo/config/tools/handbook_creator/templates/footer.html.erb +9 -9
  218. data/demo/config/tools/handbook_creator/templates/header.html.erb +25 -25
  219. data/demo/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
  220. data/demo/config/tools/handbook_creator/templates/nav.html.erb +27 -27
  221. data/demo/config/tools/handbook_creator/templates/overview.html.erb +1 -1
  222. data/demo/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
  223. data/demo/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
  224. data/demo/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
  225. data/demo/config/tools/handbook_creator/templates/telemetry_packets.html.erb +82 -82
  226. data/demo/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
  227. data/demo/config/tools/handbook_creator/templates/title.html.erb +1 -1
  228. data/demo/config/tools/launcher/launcher.txt +45 -45
  229. data/demo/config/tools/launcher/launcher2.txt +45 -45
  230. data/demo/config/tools/script_runner/script_runner.txt +3 -3
  231. data/demo/config/tools/table_manager/ConfigTables_def.txt +8 -8
  232. data/demo/config/tools/table_manager/ExampleTableDefinition.txt +24 -24
  233. data/demo/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -25
  234. data/demo/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -25
  235. data/demo/config/tools/table_manager/PPSSelectionTable_def.txt +8 -8
  236. data/demo/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -248
  237. data/demo/config/tools/test_runner/test_runner.txt +17 -17
  238. data/demo/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
  239. data/demo/config/tools/tlm_extractor/tlm_extractor2.txt +2 -2
  240. data/demo/config/tools/tlm_extractor/tlm_extractor3.txt +2 -2
  241. data/demo/config/tools/tlm_extractor/tlm_extractor4.txt +2 -2
  242. data/demo/config/tools/tlm_viewer/tlm_viewer.txt +41 -41
  243. data/demo/lib/example_background_task.rb +57 -57
  244. data/demo/lib/example_target.rb +113 -113
  245. data/demo/lib/scpi_target.rb +74 -74
  246. data/demo/lib/user_version.rb +3 -3
  247. data/demo/procedures/checks.rb +11 -11
  248. data/demo/procedures/clear_util.rb +7 -7
  249. data/demo/procedures/collect.rb +18 -18
  250. data/demo/procedures/collect_util.rb +14 -14
  251. data/demo/procedures/cosmos_api_test.rb +293 -293
  252. data/demo/procedures/disconnect.rb +29 -29
  253. data/demo/procedures/example_test.rb +183 -183
  254. data/demo/procedures/plot_test.rb +8 -8
  255. data/demo/procedures/run_example_test.rb +3 -3
  256. data/demo/procedures/test.rb +51 -51
  257. data/demo/tools/CmdExtractor +16 -16
  258. data/demo/tools/CmdExtractor.bat +0 -0
  259. data/demo/tools/CmdSender +16 -16
  260. data/demo/tools/CmdSender.bat +0 -0
  261. data/demo/tools/CmdTlmServer +16 -16
  262. data/demo/tools/CmdTlmServer.bat +0 -0
  263. data/demo/tools/DataViewer +16 -16
  264. data/demo/tools/DataViewer.bat +0 -0
  265. data/demo/tools/ExampleTarget +16 -16
  266. data/demo/tools/ExampleTarget.bat +0 -0
  267. data/demo/tools/HandbookCreator +16 -16
  268. data/demo/tools/HandbookCreator.bat +0 -0
  269. data/demo/tools/Launcher +16 -16
  270. data/demo/tools/Launcher.bat +0 -0
  271. data/demo/tools/LimitsMonitor +16 -16
  272. data/demo/tools/LimitsMonitor.bat +0 -0
  273. data/demo/tools/OpenGLBuilder +16 -16
  274. data/demo/tools/OpenGLBuilder.bat +0 -0
  275. data/demo/tools/PacketViewer +16 -16
  276. data/demo/tools/PacketViewer.bat +0 -0
  277. data/demo/tools/Replay +16 -16
  278. data/demo/tools/Replay.bat +0 -0
  279. data/demo/tools/ScpiTarget +16 -16
  280. data/demo/tools/ScpiTarget.bat +0 -0
  281. data/demo/tools/ScriptRunner +16 -16
  282. data/demo/tools/ScriptRunner.bat +0 -0
  283. data/demo/tools/TableManager +16 -16
  284. data/demo/tools/TableManager.bat +0 -0
  285. data/demo/tools/TestRunner +16 -16
  286. data/demo/tools/TestRunner.bat +0 -0
  287. data/demo/tools/TlmExtractor +16 -16
  288. data/demo/tools/TlmExtractor.bat +0 -0
  289. data/demo/tools/TlmGrapher +16 -16
  290. data/demo/tools/TlmGrapher.bat +0 -0
  291. data/demo/tools/TlmViewer +16 -16
  292. data/demo/tools/TlmViewer.bat +0 -0
  293. data/demo/tools/ToolLaunch.bat +14 -5
  294. data/demo/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
  295. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -16
  296. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -10
  297. data/demo/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
  298. data/demo/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
  299. data/demo/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -16
  300. data/demo/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -10
  301. data/demo/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -38
  302. data/demo/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
  303. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -16
  304. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -10
  305. data/demo/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -38
  306. data/demo/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
  307. data/demo/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -16
  308. data/demo/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -10
  309. data/demo/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -38
  310. data/demo/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
  311. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -16
  312. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -10
  313. data/demo/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -38
  314. data/demo/tools/mac/Launcher.app/Contents/Info.plist +38 -38
  315. data/demo/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -16
  316. data/demo/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -10
  317. data/demo/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -38
  318. data/demo/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
  319. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -16
  320. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -10
  321. data/demo/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -38
  322. data/demo/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
  323. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -16
  324. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -10
  325. data/demo/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -38
  326. data/demo/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
  327. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -16
  328. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -10
  329. data/demo/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -38
  330. data/demo/tools/mac/Replay.app/Contents/Info.plist +38 -38
  331. data/demo/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -16
  332. data/demo/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -10
  333. data/demo/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -38
  334. data/demo/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
  335. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -16
  336. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -10
  337. data/demo/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -38
  338. data/demo/tools/mac/TableManager.app/Contents/Info.plist +38 -38
  339. data/demo/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -16
  340. data/demo/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -10
  341. data/demo/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -38
  342. data/demo/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
  343. data/demo/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -16
  344. data/demo/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -10
  345. data/demo/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -38
  346. data/demo/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
  347. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -16
  348. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -10
  349. data/demo/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
  350. data/demo/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
  351. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -16
  352. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -10
  353. data/demo/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -38
  354. data/demo/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
  355. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -16
  356. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -10
  357. data/demo/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -38
  358. data/demo/tools/tool_launch.rb +38 -38
  359. data/ext/cosmos/ext/array/array.c +111 -111
  360. data/ext/cosmos/ext/array/extconf.rb +13 -13
  361. data/ext/cosmos/ext/buffered_file/buffered_file.c +167 -167
  362. data/ext/cosmos/ext/buffered_file/extconf.rb +13 -13
  363. data/ext/cosmos/ext/config_parser/config_parser.c +237 -237
  364. data/ext/cosmos/ext/config_parser/extconf.rb +13 -13
  365. data/ext/cosmos/ext/cosmos_io/cosmos_io.c +117 -117
  366. data/ext/cosmos/ext/cosmos_io/extconf.rb +13 -13
  367. data/ext/cosmos/ext/crc/crc.c +341 -341
  368. data/ext/cosmos/ext/crc/extconf.rb +12 -12
  369. data/ext/cosmos/ext/line_graph/extconf.rb +13 -13
  370. data/ext/cosmos/ext/line_graph/line_graph.c +501 -501
  371. data/ext/cosmos/ext/low_fragmentation_array/extconf.rb +12 -12
  372. data/ext/cosmos/ext/low_fragmentation_array/low_fragmentation_array.c +265 -265
  373. data/ext/cosmos/ext/packet/extconf.rb +13 -13
  374. data/ext/cosmos/ext/packet/packet.c +339 -339
  375. data/ext/cosmos/ext/platform/extconf.rb +13 -13
  376. data/ext/cosmos/ext/platform/platform.c +101 -101
  377. data/ext/cosmos/ext/polynomial_conversion/extconf.rb +13 -13
  378. data/ext/cosmos/ext/polynomial_conversion/polynomial_conversion.c +73 -73
  379. data/ext/cosmos/ext/string/extconf.rb +13 -13
  380. data/ext/cosmos/ext/string/string.c +49 -49
  381. data/ext/cosmos/ext/structure/structure.c +1428 -1428
  382. data/ext/cosmos/ext/tabbed_plots_config/extconf.rb +13 -13
  383. data/ext/cosmos/ext/tabbed_plots_config/tabbed_plots_config.c +51 -51
  384. data/ext/cosmos/ext/telemetry/extconf.rb +13 -13
  385. data/ext/cosmos/ext/telemetry/telemetry.c +307 -307
  386. data/ext/mkrf_conf.rb +40 -40
  387. data/install/Gemfile +10 -10
  388. data/install/Launcher +16 -16
  389. data/install/Launcher.bat +0 -0
  390. data/install/Rakefile +77 -77
  391. data/install/config/data/crc.txt +151 -151
  392. data/install/config/system/system.txt +29 -29
  393. data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
  394. data/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
  395. data/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
  396. data/install/config/targets/COSMOS/screens/limits_change.txt +20 -20
  397. data/install/config/targets/COSMOS/screens/version.txt +19 -19
  398. data/install/config/targets/COSMOS/target.txt +8 -8
  399. data/install/config/tools/cmd_tlm_server/cmd_tlm_server.txt +2 -2
  400. data/install/config/tools/data_viewer/data_viewer.txt +3 -3
  401. data/install/config/tools/handbook_creator/handbook_creator.txt +49 -49
  402. data/install/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
  403. data/install/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
  404. data/install/config/tools/handbook_creator/templates/footer.html.erb +9 -9
  405. data/install/config/tools/handbook_creator/templates/header.html.erb +25 -25
  406. data/install/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
  407. data/install/config/tools/handbook_creator/templates/nav.html.erb +27 -27
  408. data/install/config/tools/handbook_creator/templates/overview.html.erb +1 -1
  409. data/install/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
  410. data/install/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
  411. data/install/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
  412. data/install/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
  413. data/install/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
  414. data/install/config/tools/handbook_creator/templates/title.html.erb +1 -1
  415. data/install/config/tools/launcher/launcher.txt +40 -40
  416. data/install/config/tools/script_runner/script_runner.txt +3 -3
  417. data/install/config/tools/test_runner/test_runner.txt +8 -8
  418. data/install/config/tools/tlm_viewer/tlm_viewer.txt +5 -5
  419. data/install/lib/user_version.rb +3 -3
  420. data/install/tools/CmdExtractor +16 -16
  421. data/install/tools/CmdExtractor.bat +0 -0
  422. data/install/tools/CmdSender +16 -16
  423. data/install/tools/CmdSender.bat +0 -0
  424. data/install/tools/CmdTlmServer +16 -16
  425. data/install/tools/CmdTlmServer.bat +0 -0
  426. data/install/tools/DataViewer +16 -16
  427. data/install/tools/DataViewer.bat +0 -0
  428. data/install/tools/HandbookCreator +16 -16
  429. data/install/tools/HandbookCreator.bat +0 -0
  430. data/install/tools/Launcher +16 -16
  431. data/install/tools/Launcher.bat +0 -0
  432. data/install/tools/LimitsMonitor +16 -16
  433. data/install/tools/LimitsMonitor.bat +0 -0
  434. data/install/tools/OpenGLBuilder +16 -16
  435. data/install/tools/OpenGLBuilder.bat +0 -0
  436. data/install/tools/PacketViewer +16 -16
  437. data/install/tools/PacketViewer.bat +0 -0
  438. data/install/tools/Replay +16 -16
  439. data/install/tools/Replay.bat +0 -0
  440. data/install/tools/ScriptRunner +16 -16
  441. data/install/tools/ScriptRunner.bat +0 -0
  442. data/install/tools/TableManager +16 -16
  443. data/install/tools/TableManager.bat +0 -0
  444. data/install/tools/TestRunner +16 -16
  445. data/install/tools/TestRunner.bat +0 -0
  446. data/install/tools/TlmExtractor +16 -16
  447. data/install/tools/TlmExtractor.bat +0 -0
  448. data/install/tools/TlmGrapher +16 -16
  449. data/install/tools/TlmGrapher.bat +0 -0
  450. data/install/tools/TlmViewer +16 -16
  451. data/install/tools/TlmViewer.bat +0 -0
  452. data/install/tools/ToolLaunch.bat +14 -5
  453. data/install/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
  454. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +16 -16
  455. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +10 -10
  456. data/install/tools/mac/CmdExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
  457. data/install/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
  458. data/install/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +16 -16
  459. data/install/tools/mac/CmdSender.app/Contents/MacOS/main.sh +10 -10
  460. data/install/tools/mac/CmdSender.app/Contents/MacOS/tool_launch.rb +38 -38
  461. data/install/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
  462. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +16 -16
  463. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +10 -10
  464. data/install/tools/mac/CmdTlmServer.app/Contents/MacOS/tool_launch.rb +38 -38
  465. data/install/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
  466. data/install/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +16 -16
  467. data/install/tools/mac/DataViewer.app/Contents/MacOS/main.sh +10 -10
  468. data/install/tools/mac/DataViewer.app/Contents/MacOS/tool_launch.rb +38 -38
  469. data/install/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
  470. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +16 -16
  471. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +10 -10
  472. data/install/tools/mac/HandbookCreator.app/Contents/MacOS/tool_launch.rb +38 -38
  473. data/install/tools/mac/Launcher.app/Contents/Info.plist +38 -38
  474. data/install/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +16 -16
  475. data/install/tools/mac/Launcher.app/Contents/MacOS/main.sh +10 -10
  476. data/install/tools/mac/Launcher.app/Contents/MacOS/tool_launch.rb +38 -38
  477. data/install/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
  478. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +16 -16
  479. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +10 -10
  480. data/install/tools/mac/LimitsMonitor.app/Contents/MacOS/tool_launch.rb +38 -38
  481. data/install/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
  482. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +16 -16
  483. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +10 -10
  484. data/install/tools/mac/OpenGLBuilder.app/Contents/MacOS/tool_launch.rb +38 -38
  485. data/install/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
  486. data/install/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +16 -16
  487. data/install/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +10 -10
  488. data/install/tools/mac/PacketViewer.app/Contents/MacOS/tool_launch.rb +38 -38
  489. data/install/tools/mac/Replay.app/Contents/Info.plist +38 -38
  490. data/install/tools/mac/Replay.app/Contents/MacOS/Replay.rb +16 -16
  491. data/install/tools/mac/Replay.app/Contents/MacOS/main.sh +10 -10
  492. data/install/tools/mac/Replay.app/Contents/MacOS/tool_launch.rb +38 -38
  493. data/install/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
  494. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +16 -16
  495. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +10 -10
  496. data/install/tools/mac/ScriptRunner.app/Contents/MacOS/tool_launch.rb +38 -38
  497. data/install/tools/mac/TableManager.app/Contents/Info.plist +38 -38
  498. data/install/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +16 -16
  499. data/install/tools/mac/TableManager.app/Contents/MacOS/main.sh +10 -10
  500. data/install/tools/mac/TableManager.app/Contents/MacOS/tool_launch.rb +38 -38
  501. data/install/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
  502. data/install/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +16 -16
  503. data/install/tools/mac/TestRunner.app/Contents/MacOS/main.sh +10 -10
  504. data/install/tools/mac/TestRunner.app/Contents/MacOS/tool_launch.rb +38 -38
  505. data/install/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
  506. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +16 -16
  507. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +10 -10
  508. data/install/tools/mac/TlmExtractor.app/Contents/MacOS/tool_launch.rb +38 -38
  509. data/install/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
  510. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +16 -16
  511. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +10 -10
  512. data/install/tools/mac/TlmGrapher.app/Contents/MacOS/tool_launch.rb +38 -38
  513. data/install/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
  514. data/install/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +16 -16
  515. data/install/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +10 -10
  516. data/install/tools/mac/TlmViewer.app/Contents/MacOS/tool_launch.rb +38 -38
  517. data/install/tools/tool_launch.rb +38 -38
  518. data/lib/cosmos.rb +63 -63
  519. data/lib/cosmos/ccsds/ccsds_packet.rb +63 -63
  520. data/lib/cosmos/ccsds/ccsds_parser.rb +143 -143
  521. data/lib/cosmos/config/config_parser.rb +324 -324
  522. data/lib/cosmos/conversions.rb +13 -13
  523. data/lib/cosmos/conversions/conversion.rb +47 -47
  524. data/lib/cosmos/conversions/generic_conversion.rb +55 -55
  525. data/lib/cosmos/conversions/new_packet_log_conversion.rb +45 -45
  526. data/lib/cosmos/conversions/polynomial_conversion.rb +57 -57
  527. data/lib/cosmos/conversions/processor_conversion.rb +46 -46
  528. data/lib/cosmos/conversions/received_count_conversion.rb +33 -33
  529. data/lib/cosmos/conversions/received_time_formatted_conversion.rb +37 -37
  530. data/lib/cosmos/conversions/received_time_seconds_conversion.rb +37 -37
  531. data/lib/cosmos/conversions/segmented_polynomial_conversion.rb +128 -128
  532. data/lib/cosmos/conversions/unix_time_conversion.rb +50 -50
  533. data/lib/cosmos/conversions/unix_time_formatted_conversion.rb +44 -44
  534. data/lib/cosmos/conversions/unix_time_seconds_conversion.rb +44 -44
  535. data/lib/cosmos/core_ext.rb +18 -18
  536. data/lib/cosmos/core_ext/array.rb +354 -354
  537. data/lib/cosmos/core_ext/class.rb +51 -51
  538. data/lib/cosmos/core_ext/cosmos_io.rb +29 -29
  539. data/lib/cosmos/core_ext/exception.rb +52 -52
  540. data/lib/cosmos/core_ext/file.rb +75 -75
  541. data/lib/cosmos/core_ext/hash.rb +28 -28
  542. data/lib/cosmos/core_ext/io.rb +75 -75
  543. data/lib/cosmos/core_ext/kernel.rb +38 -38
  544. data/lib/cosmos/core_ext/math.rb +119 -119
  545. data/lib/cosmos/core_ext/matrix.rb +146 -146
  546. data/lib/cosmos/core_ext/objectspace.rb +29 -29
  547. data/lib/cosmos/core_ext/range.rb +22 -22
  548. data/lib/cosmos/core_ext/socket.rb +32 -32
  549. data/lib/cosmos/core_ext/string.rb +311 -311
  550. data/lib/cosmos/core_ext/stringio.rb +24 -24
  551. data/lib/cosmos/core_ext/time.rb +448 -448
  552. data/lib/cosmos/gui/choosers/combobox_chooser.rb +130 -130
  553. data/lib/cosmos/gui/choosers/file_chooser.rb +68 -68
  554. data/lib/cosmos/gui/choosers/float_chooser.rb +82 -82
  555. data/lib/cosmos/gui/choosers/integer_chooser.rb +80 -80
  556. data/lib/cosmos/gui/choosers/string_chooser.rb +53 -53
  557. data/lib/cosmos/gui/choosers/telemetry_chooser.rb +326 -326
  558. data/lib/cosmos/gui/dialogs/about_dialog.rb +137 -137
  559. data/lib/cosmos/gui/dialogs/calendar_dialog.rb +136 -136
  560. data/lib/cosmos/gui/dialogs/cmd_details_dialog.rb +52 -52
  561. data/lib/cosmos/gui/dialogs/cmd_tlm_raw_dialog.rb +149 -149
  562. data/lib/cosmos/gui/dialogs/details_dialog.rb +174 -174
  563. data/lib/cosmos/gui/dialogs/exception_dialog.rb +97 -97
  564. data/lib/cosmos/gui/dialogs/exception_list_dialog.rb +59 -59
  565. data/lib/cosmos/gui/dialogs/find_replace_dialog.rb +260 -260
  566. data/lib/cosmos/gui/dialogs/legal_dialog.rb +169 -169
  567. data/lib/cosmos/gui/dialogs/packet_log_dialog.rb +118 -118
  568. data/lib/cosmos/gui/dialogs/progress_dialog.rb +276 -276
  569. data/lib/cosmos/gui/dialogs/pry_dialog.rb +165 -165
  570. data/lib/cosmos/gui/dialogs/scroll_text_dialog.rb +37 -37
  571. data/lib/cosmos/gui/dialogs/select_dialog.rb +54 -54
  572. data/lib/cosmos/gui/dialogs/set_tlm_dialog.rb +131 -131
  573. data/lib/cosmos/gui/dialogs/splash.rb +135 -135
  574. data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +206 -206
  575. data/lib/cosmos/gui/dialogs/tlm_edit_dialog.rb +81 -81
  576. data/lib/cosmos/gui/line_graph/line_graph.rb +456 -456
  577. data/lib/cosmos/gui/line_graph/line_graph_dialog.rb +34 -34
  578. data/lib/cosmos/gui/line_graph/line_graph_drawing.rb +473 -473
  579. data/lib/cosmos/gui/line_graph/line_graph_popups.rb +116 -116
  580. data/lib/cosmos/gui/line_graph/line_graph_scaling.rb +451 -451
  581. data/lib/cosmos/gui/line_graph/line_graph_script.rb +26 -26
  582. data/lib/cosmos/gui/line_graph/lines.rb +290 -290
  583. data/lib/cosmos/gui/line_graph/overview_graph.rb +469 -469
  584. data/lib/cosmos/gui/opengl/earth_model.rb +22 -22
  585. data/lib/cosmos/gui/opengl/gl_bounds.rb +67 -67
  586. data/lib/cosmos/gui/opengl/gl_light.rb +39 -39
  587. data/lib/cosmos/gui/opengl/gl_material.rb +29 -29
  588. data/lib/cosmos/gui/opengl/gl_scene.rb +72 -72
  589. data/lib/cosmos/gui/opengl/gl_shape.rb +146 -146
  590. data/lib/cosmos/gui/opengl/gl_viewer.rb +724 -724
  591. data/lib/cosmos/gui/opengl/gl_viewport.rb +35 -35
  592. data/lib/cosmos/gui/opengl/moon_model.rb +22 -22
  593. data/lib/cosmos/gui/opengl/opengl.rb +8 -8
  594. data/lib/cosmos/gui/opengl/stl_reader.rb +211 -211
  595. data/lib/cosmos/gui/opengl/stl_shape.rb +124 -124
  596. data/lib/cosmos/gui/opengl/texture_mapped_sphere.rb +202 -202
  597. data/lib/cosmos/gui/qt.rb +860 -860
  598. data/lib/cosmos/gui/qt_tool.rb +380 -380
  599. data/lib/cosmos/gui/text/completion.rb +381 -381
  600. data/lib/cosmos/gui/text/completion_line_edit.rb +30 -30
  601. data/lib/cosmos/gui/text/completion_text_edit.rb +179 -179
  602. data/lib/cosmos/gui/text/ruby_editor.rb +415 -415
  603. data/lib/cosmos/gui/utilities/screenshot.rb +25 -25
  604. data/lib/cosmos/gui/utilities/script_module_gui.rb +330 -330
  605. data/lib/cosmos/gui/widgets/full_text_search_line_edit.rb +161 -161
  606. data/lib/cosmos/gui/widgets/packet_log_frame.rb +305 -305
  607. data/lib/cosmos/gui/widgets/realtime_button_bar.rb +98 -98
  608. data/lib/cosmos/interfaces.rb +11 -11
  609. data/lib/cosmos/interfaces/cmd_tlm_server_interface.rb +153 -153
  610. data/lib/cosmos/interfaces/interface.rb +225 -225
  611. data/lib/cosmos/interfaces/linc_interface.rb +360 -360
  612. data/lib/cosmos/interfaces/serial_interface.rb +76 -76
  613. data/lib/cosmos/interfaces/simulated_target_interface.rb +129 -129
  614. data/lib/cosmos/interfaces/stream_interface.rb +136 -136
  615. data/lib/cosmos/interfaces/tcpip_client_interface.rb +60 -60
  616. data/lib/cosmos/interfaces/tcpip_server_interface.rb +164 -164
  617. data/lib/cosmos/interfaces/udp_interface.rb +161 -161
  618. data/lib/cosmos/io/buffered_file.rb +11 -11
  619. data/lib/cosmos/io/cosmos_snmp.rb +50 -50
  620. data/lib/cosmos/io/io_multiplexer.rb +89 -89
  621. data/lib/cosmos/io/json_drb.rb +376 -376
  622. data/lib/cosmos/io/json_drb_object.rb +198 -198
  623. data/lib/cosmos/io/json_rpc.rb +365 -365
  624. data/lib/cosmos/io/posix_serial_driver.rb +145 -145
  625. data/lib/cosmos/io/raw_logger.rb +174 -174
  626. data/lib/cosmos/io/raw_logger_pair.rb +71 -71
  627. data/lib/cosmos/io/serial_driver.rb +85 -85
  628. data/lib/cosmos/io/stderr.rb +36 -36
  629. data/lib/cosmos/io/stdout.rb +36 -36
  630. data/lib/cosmos/io/tcpip_server.rb +571 -571
  631. data/lib/cosmos/io/udp_sockets.rb +152 -152
  632. data/lib/cosmos/io/win32_serial_driver.rb +145 -145
  633. data/lib/cosmos/packet_logs.rb +7 -7
  634. data/lib/cosmos/packet_logs/ccsds_log_reader.rb +104 -104
  635. data/lib/cosmos/packet_logs/meta_packet_log_writer.rb +107 -107
  636. data/lib/cosmos/packet_logs/packet_log_reader.rb +450 -450
  637. data/lib/cosmos/packet_logs/packet_log_writer.rb +323 -323
  638. data/lib/cosmos/packet_logs/packet_log_writer_pair.rb +30 -30
  639. data/lib/cosmos/packets/binary_accessor.rb +634 -634
  640. data/lib/cosmos/packets/commands.rb +293 -293
  641. data/lib/cosmos/packets/limits.rb +267 -267
  642. data/lib/cosmos/packets/limits_response.rb +38 -38
  643. data/lib/cosmos/packets/packet.rb +786 -786
  644. data/lib/cosmos/packets/packet_config.rb +482 -482
  645. data/lib/cosmos/packets/packet_item.rb +317 -317
  646. data/lib/cosmos/packets/packet_item_limits.rb +128 -128
  647. data/lib/cosmos/packets/parsers/format_string_parser.rb +58 -58
  648. data/lib/cosmos/packets/parsers/limits_parser.rb +146 -146
  649. data/lib/cosmos/packets/parsers/limits_response_parser.rb +52 -52
  650. data/lib/cosmos/packets/parsers/macro_parser.rb +116 -116
  651. data/lib/cosmos/packets/parsers/packet_item_parser.rb +215 -215
  652. data/lib/cosmos/packets/parsers/packet_parser.rb +123 -123
  653. data/lib/cosmos/packets/parsers/processor_parser.rb +63 -63
  654. data/lib/cosmos/packets/parsers/state_parser.rb +116 -116
  655. data/lib/cosmos/packets/structure.rb +458 -458
  656. data/lib/cosmos/packets/structure_item.rb +233 -233
  657. data/lib/cosmos/packets/telemetry.rb +350 -350
  658. data/lib/cosmos/processors.rb +6 -6
  659. data/lib/cosmos/processors/new_packet_log_processor.rb +34 -34
  660. data/lib/cosmos/processors/processor.rb +71 -71
  661. data/lib/cosmos/processors/statistics_processor.rb +65 -65
  662. data/lib/cosmos/processors/watermark_processor.rb +44 -44
  663. data/lib/cosmos/script.rb +9 -9
  664. data/lib/cosmos/script/cmd_tlm_server.rb +110 -110
  665. data/lib/cosmos/script/commands.rb +184 -184
  666. data/lib/cosmos/script/extract.rb +123 -123
  667. data/lib/cosmos/script/limits.rb +114 -114
  668. data/lib/cosmos/script/script.rb +76 -76
  669. data/lib/cosmos/script/scripting.rb +897 -897
  670. data/lib/cosmos/script/telemetry.rb +174 -174
  671. data/lib/cosmos/script/tools.rb +138 -138
  672. data/lib/cosmos/streams/burst_stream_protocol.rb +25 -25
  673. data/lib/cosmos/streams/fixed_stream_protocol.rb +111 -111
  674. data/lib/cosmos/streams/length_stream_protocol.rb +140 -140
  675. data/lib/cosmos/streams/preidentified_stream_protocol.rb +118 -118
  676. data/lib/cosmos/streams/serial_stream.rb +157 -157
  677. data/lib/cosmos/streams/stream.rb +63 -63
  678. data/lib/cosmos/streams/stream_protocol.rb +373 -373
  679. data/lib/cosmos/streams/tcpip_client_stream.rb +113 -113
  680. data/lib/cosmos/streams/tcpip_socket_stream.rb +143 -143
  681. data/lib/cosmos/streams/template_stream_protocol.rb +140 -140
  682. data/lib/cosmos/streams/terminated_stream_protocol.rb +81 -81
  683. data/lib/cosmos/system.rb +4 -4
  684. data/lib/cosmos/system/system.rb +618 -618
  685. data/lib/cosmos/system/target.rb +197 -197
  686. data/lib/cosmos/tools/cmd_extractor/cmd_extractor.rb +255 -255
  687. data/lib/cosmos/tools/cmd_sender/cmd_sender.rb +717 -717
  688. data/lib/cosmos/tools/cmd_sender/cmd_sender_item_delegate.rb +77 -77
  689. data/lib/cosmos/tools/cmd_sender/cmd_sender_text_edit.rb +70 -70
  690. data/lib/cosmos/tools/cmd_tlm_server/api.rb +1034 -1034
  691. data/lib/cosmos/tools/cmd_tlm_server/background_task.rb +46 -46
  692. data/lib/cosmos/tools/cmd_tlm_server/background_tasks.rb +67 -67
  693. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server.rb +515 -515
  694. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +253 -253
  695. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_gui.rb +408 -408
  696. data/lib/cosmos/tools/cmd_tlm_server/commanding.rb +112 -112
  697. data/lib/cosmos/tools/cmd_tlm_server/connections.rb +175 -175
  698. data/lib/cosmos/tools/cmd_tlm_server/gui/interfaces_tab.rb +200 -200
  699. data/lib/cosmos/tools/cmd_tlm_server/gui/logging_tab.rb +176 -176
  700. data/lib/cosmos/tools/cmd_tlm_server/gui/packets_tab.rb +150 -150
  701. data/lib/cosmos/tools/cmd_tlm_server/gui/status_tab.rb +244 -244
  702. data/lib/cosmos/tools/cmd_tlm_server/gui/targets_tab.rb +90 -90
  703. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +266 -266
  704. data/lib/cosmos/tools/cmd_tlm_server/interfaces.rb +127 -127
  705. data/lib/cosmos/tools/cmd_tlm_server/packet_logging.rb +132 -132
  706. data/lib/cosmos/tools/cmd_tlm_server/router_thread.rb +66 -66
  707. data/lib/cosmos/tools/cmd_tlm_server/routers.rb +97 -97
  708. data/lib/cosmos/tools/data_viewer/data_viewer.rb +621 -621
  709. data/lib/cosmos/tools/data_viewer/data_viewer_component.rb +134 -134
  710. data/lib/cosmos/tools/data_viewer/dump_component.rb +40 -40
  711. data/lib/cosmos/tools/handbook_creator/handbook_creator.rb +156 -156
  712. data/lib/cosmos/tools/handbook_creator/handbook_creator_config.rb +382 -382
  713. data/lib/cosmos/tools/launcher/launcher.rb +188 -188
  714. data/lib/cosmos/tools/launcher/launcher_config.rb +256 -256
  715. data/lib/cosmos/tools/launcher/launcher_multitool.rb +40 -40
  716. data/lib/cosmos/tools/launcher/launcher_tool.rb +116 -116
  717. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +837 -837
  718. data/lib/cosmos/tools/opengl_builder/opengl_builder.rb +416 -416
  719. data/lib/cosmos/tools/opengl_builder/scene_config.rb +118 -118
  720. data/lib/cosmos/tools/packet_viewer/packet_viewer.rb +542 -542
  721. data/lib/cosmos/tools/replay/replay.rb +501 -501
  722. data/lib/cosmos/tools/replay/replay_server.rb +91 -91
  723. data/lib/cosmos/tools/script_runner/script_audit.rb +147 -147
  724. data/lib/cosmos/tools/script_runner/script_runner.rb +922 -922
  725. data/lib/cosmos/tools/script_runner/script_runner_config.rb +40 -40
  726. data/lib/cosmos/tools/script_runner/script_runner_frame.rb +1798 -1798
  727. data/lib/cosmos/tools/table_manager/table.rb +70 -70
  728. data/lib/cosmos/tools/table_manager/table_config.rb +764 -764
  729. data/lib/cosmos/tools/table_manager/table_item.rb +74 -74
  730. data/lib/cosmos/tools/table_manager/table_manager.rb +1065 -1065
  731. data/lib/cosmos/tools/table_manager/table_manager_core.rb +539 -539
  732. data/lib/cosmos/tools/test_runner/results_writer.rb +283 -283
  733. data/lib/cosmos/tools/test_runner/test.rb +539 -539
  734. data/lib/cosmos/tools/test_runner/test_runner.rb +1189 -1189
  735. data/lib/cosmos/tools/test_runner/test_runner_chooser.rb +341 -341
  736. data/lib/cosmos/tools/tlm_extractor/text_item_chooser.rb +60 -60
  737. data/lib/cosmos/tools/tlm_extractor/tlm_extractor.rb +1016 -1016
  738. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_config.rb +371 -371
  739. data/lib/cosmos/tools/tlm_extractor/tlm_extractor_processor.rb +60 -60
  740. data/lib/cosmos/tools/tlm_grapher/data_object_adders/housekeeping_data_object_adder.rb +75 -75
  741. data/lib/cosmos/tools/tlm_grapher/data_object_adders/singlexy_data_object_adder.rb +44 -44
  742. data/lib/cosmos/tools/tlm_grapher/data_object_adders/xy_data_object_adder.rb +95 -95
  743. data/lib/cosmos/tools/tlm_grapher/data_object_editors/data_object_editor.rb +61 -61
  744. data/lib/cosmos/tools/tlm_grapher/data_object_editors/housekeeping_data_object_editor.rb +181 -181
  745. data/lib/cosmos/tools/tlm_grapher/data_object_editors/linegraph_data_object_editor.rb +141 -141
  746. data/lib/cosmos/tools/tlm_grapher/data_object_editors/singlexy_data_object_editor.rb +30 -30
  747. data/lib/cosmos/tools/tlm_grapher/data_object_editors/xy_data_object_editor.rb +174 -174
  748. data/lib/cosmos/tools/tlm_grapher/data_objects/data_object.rb +193 -193
  749. data/lib/cosmos/tools/tlm_grapher/data_objects/housekeeping_data_object.rb +407 -407
  750. data/lib/cosmos/tools/tlm_grapher/data_objects/linegraph_data_object.rb +176 -176
  751. data/lib/cosmos/tools/tlm_grapher/data_objects/singlexy_data_object.rb +25 -25
  752. data/lib/cosmos/tools/tlm_grapher/data_objects/xy_data_object.rb +323 -323
  753. data/lib/cosmos/tools/tlm_grapher/plot_editors/linegraph_plot_editor.rb +181 -181
  754. data/lib/cosmos/tools/tlm_grapher/plot_editors/plot_editor.rb +28 -28
  755. data/lib/cosmos/tools/tlm_grapher/plot_editors/singlexy_plot_editor.rb +30 -30
  756. data/lib/cosmos/tools/tlm_grapher/plot_editors/xy_plot_editor.rb +59 -59
  757. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/linegraph_plot_gui_object.rb +172 -172
  758. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/singlexy_plot_gui_object.rb +27 -27
  759. data/lib/cosmos/tools/tlm_grapher/plot_gui_objects/xy_plot_gui_object.rb +74 -74
  760. data/lib/cosmos/tools/tlm_grapher/plots/linegraph_plot.rb +201 -201
  761. data/lib/cosmos/tools/tlm_grapher/plots/plot.rb +69 -69
  762. data/lib/cosmos/tools/tlm_grapher/plots/singlexy_plot.rb +20 -20
  763. data/lib/cosmos/tools/tlm_grapher/plots/xy_plot.rb +61 -61
  764. data/lib/cosmos/tools/tlm_grapher/tabbed_plots/overview_tabbed_plots.rb +1291 -1291
  765. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_config.rb +430 -430
  766. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_data_object_editor.rb +107 -107
  767. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_logfile_thread.rb +114 -114
  768. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_plot_editor.rb +101 -101
  769. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +78 -78
  770. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tab.rb +57 -57
  771. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_tool.rb +1004 -1004
  772. data/lib/cosmos/tools/tlm_grapher/tlm_grapher.rb +87 -87
  773. data/lib/cosmos/tools/tlm_viewer/screen.rb +486 -486
  774. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +561 -561
  775. data/lib/cosmos/tools/tlm_viewer/tlm_viewer_config.rb +290 -290
  776. data/lib/cosmos/tools/tlm_viewer/widgets.rb +53 -53
  777. data/lib/cosmos/tools/tlm_viewer/widgets/aging_widget.rb +110 -110
  778. data/lib/cosmos/tools/tlm_viewer/widgets/array_widget.rb +66 -66
  779. data/lib/cosmos/tools/tlm_viewer/widgets/block_widget.rb +57 -57
  780. data/lib/cosmos/tools/tlm_viewer/widgets/button_widget.rb +39 -39
  781. data/lib/cosmos/tools/tlm_viewer/widgets/canvas_widget.rb +62 -62
  782. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimage_widget.rb +41 -41
  783. data/lib/cosmos/tools/tlm_viewer/widgets/canvasimagevalue_widget.rb +57 -57
  784. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabel_widget.rb +37 -37
  785. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslabelvalue_widget.rb +56 -56
  786. data/lib/cosmos/tools/tlm_viewer/widgets/canvasline_widget.rb +55 -55
  787. data/lib/cosmos/tools/tlm_viewer/widgets/canvaslinevalue_widget.rb +66 -66
  788. data/lib/cosmos/tools/tlm_viewer/widgets/canvasvalue_widget.rb +124 -124
  789. data/lib/cosmos/tools/tlm_viewer/widgets/checkbutton_widget.rb +31 -31
  790. data/lib/cosmos/tools/tlm_viewer/widgets/combobox_widget.rb +30 -30
  791. data/lib/cosmos/tools/tlm_viewer/widgets/formatfontvalue_widget.rb +36 -36
  792. data/lib/cosmos/tools/tlm_viewer/widgets/formatvalue_widget.rb +35 -35
  793. data/lib/cosmos/tools/tlm_viewer/widgets/horizontal_widget.rb +27 -27
  794. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalbox_widget.rb +31 -31
  795. data/lib/cosmos/tools/tlm_viewer/widgets/horizontalline_widget.rb +26 -26
  796. data/lib/cosmos/tools/tlm_viewer/widgets/label_widget.rb +29 -29
  797. data/lib/cosmos/tools/tlm_viewer/widgets/labelformatvalue_widget.rb +39 -39
  798. data/lib/cosmos/tools/tlm_viewer/widgets/labelprogressbar_widget.rb +38 -38
  799. data/lib/cosmos/tools/tlm_viewer/widgets/labeltrendlimitsbar_widget.rb +38 -38
  800. data/lib/cosmos/tools/tlm_viewer/widgets/labelvalue_widget.rb +39 -39
  801. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluedesc_widget.rb +42 -42
  802. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluelimitsbar_widget.rb +37 -37
  803. data/lib/cosmos/tools/tlm_viewer/widgets/labelvaluerangebar_widget.rb +37 -37
  804. data/lib/cosmos/tools/tlm_viewer/widgets/layout_widget.rb +34 -34
  805. data/lib/cosmos/tools/tlm_viewer/widgets/limitsbar_widget.rb +178 -178
  806. data/lib/cosmos/tools/tlm_viewer/widgets/linegraph_widget.rb +54 -54
  807. data/lib/cosmos/tools/tlm_viewer/widgets/matrixbycolumns_widget.rb +47 -47
  808. data/lib/cosmos/tools/tlm_viewer/widgets/multi_widget.rb +116 -116
  809. data/lib/cosmos/tools/tlm_viewer/widgets/progressbar_widget.rb +34 -34
  810. data/lib/cosmos/tools/tlm_viewer/widgets/radiobutton_widget.rb +30 -30
  811. data/lib/cosmos/tools/tlm_viewer/widgets/rangebar_widget.rb +57 -57
  812. data/lib/cosmos/tools/tlm_viewer/widgets/screenshotbutton_widget.rb +34 -34
  813. data/lib/cosmos/tools/tlm_viewer/widgets/scrollwindow_widget.rb +35 -35
  814. data/lib/cosmos/tools/tlm_viewer/widgets/sectionheader_widget.rb +33 -33
  815. data/lib/cosmos/tools/tlm_viewer/widgets/tabbook_widget.rb +26 -26
  816. data/lib/cosmos/tools/tlm_viewer/widgets/tabitem_widget.rb +28 -28
  817. data/lib/cosmos/tools/tlm_viewer/widgets/textbox_widget.rb +47 -47
  818. data/lib/cosmos/tools/tlm_viewer/widgets/textfield_widget.rb +26 -26
  819. data/lib/cosmos/tools/tlm_viewer/widgets/timegraph_widget.rb +88 -88
  820. data/lib/cosmos/tools/tlm_viewer/widgets/title_widget.rb +27 -27
  821. data/lib/cosmos/tools/tlm_viewer/widgets/trendbar_widget.rb +130 -130
  822. data/lib/cosmos/tools/tlm_viewer/widgets/trendlimitsbar_widget.rb +46 -46
  823. data/lib/cosmos/tools/tlm_viewer/widgets/value_widget.rb +43 -43
  824. data/lib/cosmos/tools/tlm_viewer/widgets/valuelimitsbar_widget.rb +37 -37
  825. data/lib/cosmos/tools/tlm_viewer/widgets/valuerangebar_widget.rb +37 -37
  826. data/lib/cosmos/tools/tlm_viewer/widgets/vertical_widget.rb +35 -35
  827. data/lib/cosmos/tools/tlm_viewer/widgets/verticalbox_widget.rb +37 -37
  828. data/lib/cosmos/tools/tlm_viewer/widgets/widget.rb +257 -257
  829. data/lib/cosmos/top_level.rb +759 -759
  830. data/lib/cosmos/utilities.rb +11 -11
  831. data/lib/cosmos/utilities/crc.rb +166 -166
  832. data/lib/cosmos/utilities/csv.rb +83 -83
  833. data/lib/cosmos/utilities/logger.rb +137 -137
  834. data/lib/cosmos/utilities/low_fragmentation_array.rb +11 -11
  835. data/lib/cosmos/utilities/message_log.rb +79 -79
  836. data/lib/cosmos/utilities/quaternion.rb +258 -258
  837. data/lib/cosmos/utilities/ruby_lex_utils.rb +313 -313
  838. data/lib/cosmos/utilities/simulated_target.rb +99 -99
  839. data/lib/cosmos/utilities/sleeper.rb +44 -44
  840. data/lib/cosmos/version.rb +12 -12
  841. data/lib/cosmos/win32/excel.rb +66 -66
  842. data/lib/cosmos/win32/win32.rb +387 -387
  843. data/lib/cosmos/win32/win32_main.rb +321 -321
  844. data/roodi.yml +24 -24
  845. data/run_gui_tests.bat +0 -0
  846. data/spec/ccsds/ccsds_packet_spec.rb +67 -67
  847. data/spec/ccsds/ccsds_parser_spec.rb +148 -148
  848. data/spec/config/config_parser_spec.rb +322 -322
  849. data/spec/conversions/conversion_spec.rb +31 -31
  850. data/spec/conversions/generic_conversion_spec.rb +45 -45
  851. data/spec/conversions/new_packet_log_conversion_spec.rb +39 -39
  852. data/spec/conversions/polynomial_conversion_spec.rb +40 -40
  853. data/spec/conversions/processor_conversion_spec.rb +45 -45
  854. data/spec/conversions/received_count_conversion_spec.rb +43 -43
  855. data/spec/conversions/received_time_formatted_conversion_spec.rb +49 -49
  856. data/spec/conversions/received_time_seconds_conversion_spec.rb +50 -50
  857. data/spec/conversions/segmented_polynomial_conversion_spec.rb +51 -51
  858. data/spec/conversions/unix_time_formatted_conversion_spec.rb +74 -74
  859. data/spec/conversions/unix_time_seconds_conversion_spec.rb +76 -76
  860. data/spec/core_ext/array_spec.rb +186 -186
  861. data/spec/core_ext/class_spec.rb +36 -36
  862. data/spec/core_ext/cosmos_io_spec.rb +77 -77
  863. data/spec/core_ext/exception_spec.rb +91 -91
  864. data/spec/core_ext/file_spec.rb +72 -72
  865. data/spec/core_ext/hash_spec.rb +24 -24
  866. data/spec/core_ext/io_spec.rb +46 -46
  867. data/spec/core_ext/kernel_spec.rb +54 -54
  868. data/spec/core_ext/math_spec.rb +116 -116
  869. data/spec/core_ext/matrix_spec.rb +66 -66
  870. data/spec/core_ext/objectspace_spec.rb +29 -29
  871. data/spec/core_ext/range_spec.rb +21 -21
  872. data/spec/core_ext/socket_spec.rb +32 -32
  873. data/spec/core_ext/string_spec.rb +223 -223
  874. data/spec/core_ext/stringio_spec.rb +21 -21
  875. data/spec/core_ext/time_spec.rb +202 -202
  876. data/spec/gui/line_graph/line_clip_spec.rb +322 -322
  877. data/spec/gui/qt_spec.rb +102 -102
  878. data/spec/install/config/system/system.txt +33 -33
  879. data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +41 -41
  880. data/spec/install/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
  881. data/spec/install/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
  882. data/spec/install/config/targets/COSMOS/screens/limits_change.txt +20 -20
  883. data/spec/install/config/targets/COSMOS/screens/version.txt +19 -19
  884. data/spec/install/config/targets/COSMOS/target.txt +5 -5
  885. data/spec/install/config/targets/INST/cmd_tlm/inst_cmd_linc.txt +30 -30
  886. data/spec/install/config/targets/INST/cmd_tlm/inst_cmds.txt +111 -111
  887. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm.txt +236 -236
  888. data/spec/install/config/targets/INST/cmd_tlm/inst_tlm_linc.txt +25 -25
  889. data/spec/install/config/targets/INST/cmd_tlm_server.txt +5 -5
  890. data/spec/install/config/targets/INST/lib/sim_inst.rb +305 -305
  891. data/spec/install/config/targets/INST/target.txt +10 -10
  892. data/spec/install/config/targets/META/cmd_tlm/meta_cmd.txt +4 -4
  893. data/spec/install/config/targets/META/cmd_tlm/meta_tlm.txt +4 -4
  894. data/spec/install/config/targets/SYSTEM/cmd_tlm/limits_groups.txt +7 -7
  895. data/spec/interfaces/cmd_tlm_server_interface_spec.rb +150 -150
  896. data/spec/interfaces/interface_spec.rb +130 -130
  897. data/spec/interfaces/linc_interface_spec.rb +259 -259
  898. data/spec/interfaces/serial_interface_spec.rb +56 -56
  899. data/spec/interfaces/simulated_target_interface_spec.rb +128 -128
  900. data/spec/interfaces/stream_interface_spec.rb +157 -157
  901. data/spec/interfaces/tcpip_client_interface_spec.rb +55 -55
  902. data/spec/interfaces/tcpip_server_interface_spec.rb +160 -160
  903. data/spec/interfaces/udp_interface_spec.rb +175 -175
  904. data/spec/io/buffered_file_spec.rb +113 -113
  905. data/spec/io/io_multiplexer_spec.rb +94 -94
  906. data/spec/io/json_drb_object_spec.rb +119 -119
  907. data/spec/io/json_drb_spec.rb +311 -311
  908. data/spec/io/json_rpc_spec.rb +264 -264
  909. data/spec/io/raw_logger_pair_spec.rb +76 -76
  910. data/spec/io/raw_logger_spec.rb +133 -133
  911. data/spec/io/serial_driver_spec.rb +60 -60
  912. data/spec/io/stderr_spec.rb +32 -32
  913. data/spec/io/stdout_spec.rb +32 -32
  914. data/spec/io/tcpip_server_spec.rb +338 -338
  915. data/spec/io/udp_sockets_spec.rb +94 -94
  916. data/spec/io/win32_serial_driver_spec.rb +88 -88
  917. data/spec/packet_logs/meta_packet_log_writer_spec.rb +170 -170
  918. data/spec/packet_logs/packet_log_reader_spec.rb +468 -468
  919. data/spec/packet_logs/packet_log_writer_pair_spec.rb +30 -30
  920. data/spec/packet_logs/packet_log_writer_spec.rb +225 -225
  921. data/spec/packets/binary_accessor_spec.rb +2326 -2326
  922. data/spec/packets/commands_spec.rb +369 -369
  923. data/spec/packets/limits_response_spec.rb +25 -25
  924. data/spec/packets/limits_spec.rb +344 -344
  925. data/spec/packets/packet_config_spec.rb +805 -805
  926. data/spec/packets/packet_item_limits_spec.rb +161 -161
  927. data/spec/packets/packet_item_spec.rb +386 -386
  928. data/spec/packets/packet_spec.rb +1317 -1317
  929. data/spec/packets/parsers/format_string_parser_spec.rb +122 -122
  930. data/spec/packets/parsers/limits_parser_spec.rb +282 -282
  931. data/spec/packets/parsers/limits_response_parser_spec.rb +149 -149
  932. data/spec/packets/parsers/macro_parser_spec.rb +212 -212
  933. data/spec/packets/parsers/packet_item_parser_spec.rb +306 -306
  934. data/spec/packets/parsers/packet_parser_spec.rb +99 -99
  935. data/spec/packets/parsers/processor_parser_spec.rb +114 -114
  936. data/spec/packets/parsers/state_parser_spec.rb +156 -156
  937. data/spec/packets/structure_item_spec.rb +195 -195
  938. data/spec/packets/structure_spec.rb +565 -565
  939. data/spec/packets/telemetry_spec.rb +578 -578
  940. data/spec/processors/new_packet_log_processor_spec.rb +39 -39
  941. data/spec/processors/processor_spec.rb +55 -55
  942. data/spec/processors/statistics_processor_spec.rb +60 -60
  943. data/spec/processors/watermark_processor_spec.rb +51 -51
  944. data/spec/script/cmd_tlm_server_spec.rb +110 -110
  945. data/spec/script/commands_disconnect_spec.rb +270 -270
  946. data/spec/script/commands_spec.rb +302 -302
  947. data/spec/script/limits_spec.rb +153 -153
  948. data/spec/script/script_spec.rb +86 -86
  949. data/spec/script/scripting_spec.rb +440 -440
  950. data/spec/script/telemetry_spec.rb +165 -165
  951. data/spec/script/tools_spec.rb +117 -117
  952. data/spec/spec_helper.rb +190 -190
  953. data/spec/streams/burst_stream_protocol_spec.rb +32 -32
  954. data/spec/streams/fixed_stream_protocol_spec.rb +113 -113
  955. data/spec/streams/length_stream_protocol_spec.rb +300 -300
  956. data/spec/streams/preidentified_stream_protocol_spec.rb +121 -121
  957. data/spec/streams/serial_stream_spec.rb +117 -117
  958. data/spec/streams/stream_protocol_spec.rb +346 -346
  959. data/spec/streams/stream_spec.rb +30 -30
  960. data/spec/streams/tcpip_client_stream_spec.rb +57 -57
  961. data/spec/streams/tcpip_socket_stream_spec.rb +193 -193
  962. data/spec/streams/template_stream_protocol_spec.rb +156 -156
  963. data/spec/streams/terminated_stream_protocol_spec.rb +127 -127
  964. data/spec/system/system_spec.rb +665 -665
  965. data/spec/system/target_spec.rb +250 -250
  966. data/spec/tools/cmd_tlm_server/api_spec.rb +1117 -1117
  967. data/spec/tools/cmd_tlm_server/background_task_spec.rb +32 -32
  968. data/spec/tools/cmd_tlm_server/background_tasks_spec.rb +81 -81
  969. data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +453 -453
  970. data/spec/tools/cmd_tlm_server/cmd_tlm_server_spec.rb +415 -415
  971. data/spec/tools/cmd_tlm_server/commanding_spec.rb +151 -151
  972. data/spec/tools/cmd_tlm_server/connections_spec.rb +235 -235
  973. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +306 -306
  974. data/spec/tools/cmd_tlm_server/interfaces_spec.rb +252 -252
  975. data/spec/tools/cmd_tlm_server/packet_logging_spec.rb +143 -143
  976. data/spec/tools/cmd_tlm_server/router_thread_spec.rb +151 -151
  977. data/spec/tools/cmd_tlm_server/routers_spec.rb +223 -223
  978. data/spec/tools/launcher/launcher_config_spec.rb +464 -464
  979. data/spec/top_level/top_level_spec.rb +334 -334
  980. data/spec/utilities/crc_spec.rb +45 -45
  981. data/spec/utilities/csv_spec.rb +97 -97
  982. data/spec/utilities/logger_spec.rb +102 -102
  983. data/spec/utilities/message_log_spec.rb +89 -89
  984. data/spec/utilities/quaternion_spec.rb +107 -107
  985. data/spec/utilities/ruby_lex_utils_spec.rb +86 -86
  986. data/tasks/manifest.rake +22 -22
  987. data/tasks/spec.rake +23 -23
  988. data/test/benchmarks/binary_accessor_benchmark.rb +14 -14
  989. data/test/benchmarks/gsub_benchmark.rb +152 -152
  990. data/test/benchmarks/is_a_benchmark.rb +34 -34
  991. data/test/performance/PACKETS.bat +0 -0
  992. data/test/performance/Rakefile +77 -77
  993. data/test/performance/THREADS.bat +0 -0
  994. data/test/performance/config/data/crc.txt +196 -196
  995. data/test/performance/config/data/diamond.STL +57 -57
  996. data/test/performance/config/data/meta_init.txt +4 -4
  997. data/test/performance/config/system/system_packets.txt +39 -39
  998. data/test/performance/config/system/system_threads.txt +59 -59
  999. data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_cmds.txt +46 -46
  1000. data/test/performance/config/targets/COSMOS/cmd_tlm/cosmos_server_tlm.txt +15 -15
  1001. data/test/performance/config/targets/COSMOS/cmd_tlm_server.txt +6 -6
  1002. data/test/performance/config/targets/COSMOS/screens/limits_change.txt +20 -20
  1003. data/test/performance/config/targets/COSMOS/screens/version.txt +19 -19
  1004. data/test/performance/config/targets/COSMOS/target.txt +11 -11
  1005. data/test/performance/config/targets/PACKET/cmd_tlm/packet_cmds.txt +20 -20
  1006. data/test/performance/config/targets/PACKET/cmd_tlm/packet_tlm.txt +98 -98
  1007. data/test/performance/config/targets/PACKET/cmd_tlm_server.txt +6 -6
  1008. data/test/performance/config/targets/PACKET/lib/packet_interface.rb +22 -22
  1009. data/test/performance/config/targets/PACKET/lib/packet_limits_response.rb +24 -24
  1010. data/test/performance/config/targets/PACKET/screens/status.txt +25 -25
  1011. data/test/performance/config/targets/PACKET/target.txt +28 -28
  1012. data/test/performance/config/targets/SYSTEM/screens/status.txt +12 -12
  1013. data/test/performance/config/targets/THREAD/cmd_tlm/thread_cmds.txt +17 -17
  1014. data/test/performance/config/targets/THREAD/cmd_tlm/thread_tlm.txt +18 -18
  1015. data/test/performance/config/targets/THREAD/cmd_tlm_server.txt +6 -6
  1016. data/test/performance/config/targets/THREAD/lib/thread_interface.rb +22 -22
  1017. data/test/performance/config/targets/THREAD/screens/status.txt +25 -25
  1018. data/test/performance/config/targets/THREAD/target.txt +6 -6
  1019. data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_packets.txt +28 -28
  1020. data/test/performance/config/tools/cmd_tlm_server/cmd_tlm_server_threads.txt +68 -68
  1021. data/test/performance/config/tools/data_viewer/data_viewer.txt +11 -11
  1022. data/test/performance/config/tools/handbook_creator/handbook_creator.txt +66 -66
  1023. data/test/performance/config/tools/handbook_creator/templates/command_packets.html.erb +86 -86
  1024. data/test/performance/config/tools/handbook_creator/templates/command_toc.html.erb +38 -38
  1025. data/test/performance/config/tools/handbook_creator/templates/footer.html.erb +9 -9
  1026. data/test/performance/config/tools/handbook_creator/templates/header.html.erb +25 -25
  1027. data/test/performance/config/tools/handbook_creator/templates/limits_groups.html.erb +13 -13
  1028. data/test/performance/config/tools/handbook_creator/templates/nav.html.erb +27 -27
  1029. data/test/performance/config/tools/handbook_creator/templates/overview.html.erb +1 -1
  1030. data/test/performance/config/tools/handbook_creator/templates/pdf_cover.html.erb +23 -23
  1031. data/test/performance/config/tools/handbook_creator/templates/pdf_footer.html.erb +33 -33
  1032. data/test/performance/config/tools/handbook_creator/templates/pdf_header.html.erb +41 -41
  1033. data/test/performance/config/tools/handbook_creator/templates/telemetry_packets.html.erb +80 -80
  1034. data/test/performance/config/tools/handbook_creator/templates/telemetry_toc.html.erb +38 -38
  1035. data/test/performance/config/tools/handbook_creator/templates/title.html.erb +1 -1
  1036. data/test/performance/config/tools/launcher/launcher_packets.txt +34 -34
  1037. data/test/performance/config/tools/launcher/launcher_threads.txt +83 -83
  1038. data/test/performance/config/tools/script_runner/script_runner.txt +3 -3
  1039. data/test/performance/config/tools/table_manager/ConfigTables_def.txt +8 -8
  1040. data/test/performance/config/tools/table_manager/ExampleTableDefinition.txt +24 -24
  1041. data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw1_def.txt +25 -25
  1042. data/test/performance/config/tools/table_manager/MCConfigurationTable_fsw2_def.txt +25 -25
  1043. data/test/performance/config/tools/table_manager/PPSSelectionTable_def.txt +8 -8
  1044. data/test/performance/config/tools/table_manager/TLMMonitoringTable_def.txt +248 -248
  1045. data/test/performance/config/tools/test_runner/test_runner.txt +17 -17
  1046. data/test/performance/config/tools/tlm_extractor/tlm_extractor.txt +13 -13
  1047. data/test/performance/config/tools/tlm_extractor/tlm_extractor2.txt +2 -2
  1048. data/test/performance/config/tools/tlm_extractor/tlm_extractor3.txt +2 -2
  1049. data/test/performance/config/tools/tlm_extractor/tlm_extractor4.txt +2 -2
  1050. data/test/performance/config/tools/tlm_grapher/tlm_grapher.txt +204 -204
  1051. data/test/performance/config/tools/tlm_viewer/tlm_viewer.txt +13 -13
  1052. data/test/performance/lib/packet_target.rb +126 -126
  1053. data/test/performance/lib/thread_target.rb +120 -120
  1054. data/test/performance/lib/user_version.rb +3 -3
  1055. data/test/performance/procedures/checks.rb +11 -11
  1056. data/test/performance/procedures/clear_util.rb +7 -7
  1057. data/test/performance/procedures/collect.rb +18 -18
  1058. data/test/performance/procedures/collect_util.rb +14 -14
  1059. data/test/performance/procedures/cosmos_api_test.rb +293 -293
  1060. data/test/performance/procedures/disconnect.rb +29 -29
  1061. data/test/performance/procedures/example_test.rb +182 -182
  1062. data/test/performance/procedures/plot_test.rb +8 -8
  1063. data/test/performance/procedures/procedure.rb +2 -2
  1064. data/test/performance/procedures/run_example_test.rb +3 -3
  1065. data/test/performance/procedures/test.rb +51 -51
  1066. data/test/performance/tools/CmdExtractor +14 -14
  1067. data/test/performance/tools/CmdExtractor.bat +0 -0
  1068. data/test/performance/tools/CmdSender +14 -14
  1069. data/test/performance/tools/CmdSender.bat +0 -0
  1070. data/test/performance/tools/CmdTlmServer +16 -16
  1071. data/test/performance/tools/CmdTlmServer.bat +0 -0
  1072. data/test/performance/tools/CmdTlmServerMemProf +20 -20
  1073. data/test/performance/tools/CmdTlmServerMemProf.bat +0 -0
  1074. data/test/performance/tools/DataViewer +14 -14
  1075. data/test/performance/tools/DataViewer.bat +0 -0
  1076. data/test/performance/tools/HandbookCreator +14 -14
  1077. data/test/performance/tools/HandbookCreator.bat +0 -0
  1078. data/test/performance/tools/Launcher +14 -14
  1079. data/test/performance/tools/Launcher.bat +0 -0
  1080. data/test/performance/tools/LimitsMonitor +14 -14
  1081. data/test/performance/tools/LimitsMonitor.bat +0 -0
  1082. data/test/performance/tools/OpenGLBuilder +14 -14
  1083. data/test/performance/tools/OpenGLBuilder.bat +0 -0
  1084. data/test/performance/tools/PacketTarget +14 -14
  1085. data/test/performance/tools/PacketTarget.bat +0 -0
  1086. data/test/performance/tools/PacketViewer +14 -14
  1087. data/test/performance/tools/PacketViewer.bat +0 -0
  1088. data/test/performance/tools/Replay +14 -14
  1089. data/test/performance/tools/Replay.bat +0 -0
  1090. data/test/performance/tools/ScpiTarget +14 -14
  1091. data/test/performance/tools/ScpiTarget.bat +0 -0
  1092. data/test/performance/tools/ScriptRunner +14 -14
  1093. data/test/performance/tools/ScriptRunner.bat +0 -0
  1094. data/test/performance/tools/TableManager +14 -14
  1095. data/test/performance/tools/TableManager.bat +0 -0
  1096. data/test/performance/tools/TestRunner +14 -14
  1097. data/test/performance/tools/TestRunner.bat +0 -0
  1098. data/test/performance/tools/ThreadTarget +14 -14
  1099. data/test/performance/tools/ThreadTarget.bat +0 -0
  1100. data/test/performance/tools/TlmExtractor +14 -14
  1101. data/test/performance/tools/TlmExtractor.bat +0 -0
  1102. data/test/performance/tools/TlmGrapher +14 -14
  1103. data/test/performance/tools/TlmGrapher.bat +0 -0
  1104. data/test/performance/tools/TlmGrapherMemProf +19 -19
  1105. data/test/performance/tools/TlmGrapherMemProf.bat +0 -0
  1106. data/test/performance/tools/TlmViewer +14 -14
  1107. data/test/performance/tools/TlmViewer.bat +0 -0
  1108. data/test/performance/tools/TlmViewerMemProf +19 -19
  1109. data/test/performance/tools/TlmViewerMemProf.bat +0 -0
  1110. data/test/performance/tools/mac/CmdExtractor.app/Contents/Info.plist +38 -38
  1111. data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/CmdExtractor.rb +15 -15
  1112. data/test/performance/tools/mac/CmdExtractor.app/Contents/MacOS/main.sh +6 -6
  1113. data/test/performance/tools/mac/CmdSender.app/Contents/Info.plist +38 -38
  1114. data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/CmdSender.rb +15 -15
  1115. data/test/performance/tools/mac/CmdSender.app/Contents/MacOS/main.sh +6 -6
  1116. data/test/performance/tools/mac/CmdTlmServer.app/Contents/Info.plist +38 -38
  1117. data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/CmdTlmServer.rb +15 -15
  1118. data/test/performance/tools/mac/CmdTlmServer.app/Contents/MacOS/main.sh +6 -6
  1119. data/test/performance/tools/mac/DataViewer.app/Contents/Info.plist +38 -38
  1120. data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/DataViewer.rb +15 -15
  1121. data/test/performance/tools/mac/DataViewer.app/Contents/MacOS/main.sh +6 -6
  1122. data/test/performance/tools/mac/HandbookCreator.app/Contents/Info.plist +38 -38
  1123. data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/HandbookCreator.rb +15 -15
  1124. data/test/performance/tools/mac/HandbookCreator.app/Contents/MacOS/main.sh +6 -6
  1125. data/test/performance/tools/mac/Launcher.app/Contents/Info.plist +38 -38
  1126. data/test/performance/tools/mac/Launcher.app/Contents/MacOS/Launcher.rb +15 -15
  1127. data/test/performance/tools/mac/Launcher.app/Contents/MacOS/main.sh +6 -6
  1128. data/test/performance/tools/mac/LimitsMonitor.app/Contents/Info.plist +38 -38
  1129. data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/LimitsMonitor.rb +15 -15
  1130. data/test/performance/tools/mac/LimitsMonitor.app/Contents/MacOS/main.sh +6 -6
  1131. data/test/performance/tools/mac/OpenGLBuilder.app/Contents/Info.plist +38 -38
  1132. data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/OpenGLBuilder.rb +15 -15
  1133. data/test/performance/tools/mac/OpenGLBuilder.app/Contents/MacOS/main.sh +6 -6
  1134. data/test/performance/tools/mac/PacketViewer.app/Contents/Info.plist +38 -38
  1135. data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/PacketViewer.rb +15 -15
  1136. data/test/performance/tools/mac/PacketViewer.app/Contents/MacOS/main.sh +6 -6
  1137. data/test/performance/tools/mac/Replay.app/Contents/Info.plist +38 -38
  1138. data/test/performance/tools/mac/Replay.app/Contents/MacOS/Replay.rb +15 -15
  1139. data/test/performance/tools/mac/Replay.app/Contents/MacOS/main.sh +6 -6
  1140. data/test/performance/tools/mac/ScriptRunner.app/Contents/Info.plist +38 -38
  1141. data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/ScriptRunner.rb +15 -15
  1142. data/test/performance/tools/mac/ScriptRunner.app/Contents/MacOS/main.sh +6 -6
  1143. data/test/performance/tools/mac/TableManager.app/Contents/Info.plist +38 -38
  1144. data/test/performance/tools/mac/TableManager.app/Contents/MacOS/TableManager.rb +15 -15
  1145. data/test/performance/tools/mac/TableManager.app/Contents/MacOS/main.sh +6 -6
  1146. data/test/performance/tools/mac/TestRunner.app/Contents/Info.plist +38 -38
  1147. data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/TestRunner.rb +15 -15
  1148. data/test/performance/tools/mac/TestRunner.app/Contents/MacOS/main.sh +6 -6
  1149. data/test/performance/tools/mac/TlmExtractor.app/Contents/Info.plist +38 -38
  1150. data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/TlmExtractor.rb +15 -15
  1151. data/test/performance/tools/mac/TlmExtractor.app/Contents/MacOS/main.sh +6 -6
  1152. data/test/performance/tools/mac/TlmGrapher.app/Contents/Info.plist +38 -38
  1153. data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/TlmGrapher.rb +15 -15
  1154. data/test/performance/tools/mac/TlmGrapher.app/Contents/MacOS/main.sh +6 -6
  1155. data/test/performance/tools/mac/TlmViewer.app/Contents/Info.plist +38 -38
  1156. data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/TlmViewer.rb +15 -15
  1157. data/test/performance/tools/mac/TlmViewer.app/Contents/MacOS/main.sh +6 -6
  1158. metadata +3 -3
@@ -1,223 +1,223 @@
1
- # encoding: ascii-8bit
2
-
3
- # Copyright 2014 Ball Aerospace & Technologies Corp.
4
- # All Rights Reserved.
5
- #
6
- # This program is free software; you can modify and/or redistribute it
7
- # under the terms of the GNU General Public License
8
- # as published by the Free Software Foundation; version 3 with
9
- # attribution addendums as found in the LICENSE.txt
10
-
11
- require 'spec_helper'
12
- require 'cosmos'
13
- require 'cosmos/tools/cmd_tlm_server/routers'
14
- require 'tempfile'
15
-
16
- module Cosmos
17
-
18
- describe Routers do
19
- after(:all) do
20
- clean_config()
21
- end
22
-
23
- describe "start" do
24
- it "connects each router" do
25
- tf = Tempfile.new('unittest')
26
- tf.puts 'ROUTER MY_ROUTER interface.rb'
27
- tf.close
28
- capture_io do |stdout|
29
- routers = Routers.new(CmdTlmServerConfig.new(tf.path))
30
- routers.all['MY_ROUTER'].connect_on_startup = false
31
-
32
- allow_any_instance_of(Interface).to receive(:connected?)
33
- allow_any_instance_of(Interface).to receive(:connect)
34
- allow_any_instance_of(Interface).to receive(:disconnect)
35
- allow_any_instance_of(Interface).to receive(:read)
36
-
37
- routers.all['MY_ROUTER'].connect_on_startup = true
38
- routers.start
39
-
40
- expect(stdout.string).to match "Creating thread for router MY_ROUTER"
41
- routers.stop
42
- end
43
- tf.unlink
44
- sleep(0.2)
45
- end
46
- end
47
-
48
- describe "stop" do
49
- it "disconnects each router" do
50
- tf = Tempfile.new('unittest')
51
- tf.puts 'ROUTER MY_ROUTER interface.rb'
52
- tf.close
53
- capture_io do |stdout|
54
- routers = Routers.new(CmdTlmServerConfig.new(tf.path))
55
-
56
- allow_any_instance_of(Interface).to receive(:connected?).and_return(false, false, true, false)
57
- allow_any_instance_of(Interface).to receive(:connect)
58
- allow_any_instance_of(Interface).to receive(:disconnect)
59
- allow_any_instance_of(Interface).to receive(:read)
60
-
61
- routers.all['MY_ROUTER'].connect_on_startup = true
62
- routers.start
63
- sleep 0.1
64
- expect(routers.state("MY_ROUTER")).to eql "ATTEMPTING"
65
- expect(routers.state("MY_ROUTER")).to eql "CONNECTED"
66
- routers.stop
67
- sleep 0.1
68
- expect(routers.state("MY_ROUTER")).to eql "DISCONNECTED"
69
-
70
- expect(stdout.string).to match "Disconnected from router MY_ROUTER"
71
- end
72
- tf.unlink
73
- sleep(0.2)
74
- end
75
- end
76
-
77
- describe "add_preidentified" do
78
- it "adds a preidentified router to all interfaces" do
79
- tf = Tempfile.new('unittest')
80
- tf.puts 'INTERFACE DEST1 tcpip_client_interface.rb localhost 8888 8888 5 5 burst'
81
- tf.puts 'INTERFACE DEST2 tcpip_client_interface.rb localhost 8888 8888 5 5 burst'
82
- tf.close
83
- config = CmdTlmServerConfig.new(tf.path)
84
- expect(config.interfaces.keys).to eql %w(DEST1 DEST2)
85
- expect(config.interfaces['DEST1'].routers).to be_empty
86
- expect(config.interfaces['DEST2'].routers).to be_empty
87
-
88
- routers = Routers.new(config)
89
- expect(routers.all.keys).to be_empty
90
- routers.add_preidentified("PRE", 9999)
91
- expect(routers.all.keys).to eql %w(PRE)
92
-
93
- expect(config.interfaces['DEST1'].routers[0].name).to eql "PRE"
94
- expect(config.interfaces['DEST2'].routers[0].name).to eql "PRE"
95
- tf.unlink
96
- end
97
- end
98
-
99
- describe "recreate" do
100
- it "complains about unknown routers" do
101
- tf = Tempfile.new('unittest')
102
- tf.puts 'ROUTER MY_ROUTER interface.rb'
103
- tf.close
104
- routers = Routers.new(CmdTlmServerConfig.new(tf.path))
105
- expect { routers.recreate("BLAH") }.to raise_error("Unknown router: BLAH")
106
- tf.unlink
107
- end
108
- end
109
-
110
- describe "connect" do
111
- it "complains about unknown routers" do
112
- tf = Tempfile.new('unittest')
113
- tf.puts 'ROUTER MY_ROUTER interface.rb'
114
- tf.close
115
- routers = Routers.new(CmdTlmServerConfig.new(tf.path))
116
- expect { routers.connect("TEST") }.to raise_error("Unknown router: TEST")
117
- tf.unlink
118
- end
119
-
120
- it "connects a router" do
121
- tf = Tempfile.new('unittest')
122
- tf.puts 'INTERFACE DEST1 tcpip_client_interface.rb localhost 8888 8888 5 5 burst'
123
- tf.puts 'INTERFACE DEST2 tcpip_client_interface.rb localhost 8888 8888 5 5 burst'
124
- tf.puts 'ROUTER MY_ROUTER tcpip_client_interface.rb localhost 8888 8888 5 5 burst'
125
- tf.puts 'ROUTE DEST1'
126
- tf.puts 'ROUTE DEST2'
127
- tf.close
128
- capture_io do |stdout|
129
- server = TCPServer.new('127.0.0.1', 8888)
130
- def server.graceful_kill
131
- end
132
- clients = []
133
- pipe_reader, pipe_writer = IO.pipe
134
- server_thread = Thread.new do
135
- loop do
136
- clients << server.accept
137
- begin
138
- clients << server.accept_nonblock
139
- rescue Errno::EAGAIN, Errno::ECONNABORTED, Errno::EINTR, Errno::EWOULDBLOCK
140
- read_ready, _ = IO.select([server, pipe_reader])
141
- if read_ready.include?(pipe_reader)
142
- break
143
- else
144
- retry
145
- end
146
- end
147
- end
148
- end
149
-
150
-
151
- config = CmdTlmServerConfig.new(tf.path)
152
- routers = Routers.new(config)
153
- expect(routers.all["MY_ROUTER"].interfaces[0].name).to eql "DEST1"
154
- expect(routers.all["MY_ROUTER"].interfaces[1].name).to eql "DEST2"
155
- expect(config.interfaces['DEST1'].routers[0].name).to eql "MY_ROUTER"
156
- expect(config.interfaces['DEST2'].routers[0].name).to eql "MY_ROUTER"
157
- routers.connect("MY_ROUTER")
158
- sleep 0.1
159
- expect(stdout.string).to match "Connecting to MY_ROUTER"
160
- routers.disconnect("MY_ROUTER")
161
- routers.connect("MY_ROUTER",'localhost',8888,8888,6,6,'length')
162
- sleep 0.1
163
- expect(stdout.string).to match "Disconnected from router MY_ROUTER"
164
- expect(stdout.string).to match "Connecting to MY_ROUTER"
165
- expect(routers.all["MY_ROUTER"].interfaces[0].name).to eql "DEST1"
166
- expect(routers.all["MY_ROUTER"].interfaces[1].name).to eql "DEST2"
167
- expect(config.interfaces['DEST1'].routers[0].name).to eql "MY_ROUTER"
168
- expect(config.interfaces['DEST2'].routers[0].name).to eql "MY_ROUTER"
169
- routers.disconnect("MY_ROUTER")
170
- routers.stop
171
-
172
- pipe_writer.write('.')
173
- Cosmos.kill_thread(server, server_thread)
174
- server.close
175
- clients.each do |c|
176
- c.close
177
- end
178
- end
179
- tf.unlink
180
- sleep(0.2)
181
- end
182
- end
183
-
184
- describe "names" do
185
- it "lists all the router names" do
186
- tf = Tempfile.new('unittest')
187
- tf.puts 'ROUTER ROUTER1 interface.rb'
188
- tf.puts 'ROUTER ROUTER2 interface.rb'
189
- tf.puts 'ROUTER ROUTER3 interface.rb'
190
- tf.close
191
- routers = Routers.new(CmdTlmServerConfig.new(tf.path))
192
- expect(routers.names).to eql %w(ROUTER1 ROUTER2 ROUTER3)
193
- tf.unlink
194
- end
195
- end
196
-
197
- describe "clear_counters" do
198
- it "clears all router counters" do
199
- tf = Tempfile.new('unittest')
200
- tf.puts 'ROUTER ROUTER1 interface.rb'
201
- tf.puts 'ROUTER ROUTER2 interface.rb'
202
- tf.puts 'ROUTER ROUTER3 interface.rb'
203
- tf.close
204
- routers = Routers.new(CmdTlmServerConfig.new(tf.path))
205
- routers.all.each do |name, router|
206
- router.bytes_written = 100
207
- router.bytes_read = 200
208
- router.write_count = 10
209
- router.read_count = 20
210
- end
211
- routers.clear_counters
212
- routers.all.each do |name, router|
213
- expect(router.bytes_written).to eql 0
214
- expect(router.bytes_read).to eql 0
215
- expect(router.write_count).to eql 0
216
- expect(router.read_count).to eql 0
217
- end
218
- tf.unlink
219
- end
220
- end
221
- end
222
- end
223
-
1
+ # encoding: ascii-8bit
2
+
3
+ # Copyright 2014 Ball Aerospace & Technologies Corp.
4
+ # All Rights Reserved.
5
+ #
6
+ # This program is free software; you can modify and/or redistribute it
7
+ # under the terms of the GNU General Public License
8
+ # as published by the Free Software Foundation; version 3 with
9
+ # attribution addendums as found in the LICENSE.txt
10
+
11
+ require 'spec_helper'
12
+ require 'cosmos'
13
+ require 'cosmos/tools/cmd_tlm_server/routers'
14
+ require 'tempfile'
15
+
16
+ module Cosmos
17
+
18
+ describe Routers do
19
+ after(:all) do
20
+ clean_config()
21
+ end
22
+
23
+ describe "start" do
24
+ it "connects each router" do
25
+ tf = Tempfile.new('unittest')
26
+ tf.puts 'ROUTER MY_ROUTER interface.rb'
27
+ tf.close
28
+ capture_io do |stdout|
29
+ routers = Routers.new(CmdTlmServerConfig.new(tf.path))
30
+ routers.all['MY_ROUTER'].connect_on_startup = false
31
+
32
+ allow_any_instance_of(Interface).to receive(:connected?)
33
+ allow_any_instance_of(Interface).to receive(:connect)
34
+ allow_any_instance_of(Interface).to receive(:disconnect)
35
+ allow_any_instance_of(Interface).to receive(:read)
36
+
37
+ routers.all['MY_ROUTER'].connect_on_startup = true
38
+ routers.start
39
+
40
+ expect(stdout.string).to match "Creating thread for router MY_ROUTER"
41
+ routers.stop
42
+ end
43
+ tf.unlink
44
+ sleep(0.2)
45
+ end
46
+ end
47
+
48
+ describe "stop" do
49
+ it "disconnects each router" do
50
+ tf = Tempfile.new('unittest')
51
+ tf.puts 'ROUTER MY_ROUTER interface.rb'
52
+ tf.close
53
+ capture_io do |stdout|
54
+ routers = Routers.new(CmdTlmServerConfig.new(tf.path))
55
+
56
+ allow_any_instance_of(Interface).to receive(:connected?).and_return(false, false, true, false)
57
+ allow_any_instance_of(Interface).to receive(:connect)
58
+ allow_any_instance_of(Interface).to receive(:disconnect)
59
+ allow_any_instance_of(Interface).to receive(:read)
60
+
61
+ routers.all['MY_ROUTER'].connect_on_startup = true
62
+ routers.start
63
+ sleep 0.1
64
+ expect(routers.state("MY_ROUTER")).to eql "ATTEMPTING"
65
+ expect(routers.state("MY_ROUTER")).to eql "CONNECTED"
66
+ routers.stop
67
+ sleep 0.1
68
+ expect(routers.state("MY_ROUTER")).to eql "DISCONNECTED"
69
+
70
+ expect(stdout.string).to match "Disconnected from router MY_ROUTER"
71
+ end
72
+ tf.unlink
73
+ sleep(0.2)
74
+ end
75
+ end
76
+
77
+ describe "add_preidentified" do
78
+ it "adds a preidentified router to all interfaces" do
79
+ tf = Tempfile.new('unittest')
80
+ tf.puts 'INTERFACE DEST1 tcpip_client_interface.rb localhost 8888 8888 5 5 burst'
81
+ tf.puts 'INTERFACE DEST2 tcpip_client_interface.rb localhost 8888 8888 5 5 burst'
82
+ tf.close
83
+ config = CmdTlmServerConfig.new(tf.path)
84
+ expect(config.interfaces.keys).to eql %w(DEST1 DEST2)
85
+ expect(config.interfaces['DEST1'].routers).to be_empty
86
+ expect(config.interfaces['DEST2'].routers).to be_empty
87
+
88
+ routers = Routers.new(config)
89
+ expect(routers.all.keys).to be_empty
90
+ routers.add_preidentified("PRE", 9999)
91
+ expect(routers.all.keys).to eql %w(PRE)
92
+
93
+ expect(config.interfaces['DEST1'].routers[0].name).to eql "PRE"
94
+ expect(config.interfaces['DEST2'].routers[0].name).to eql "PRE"
95
+ tf.unlink
96
+ end
97
+ end
98
+
99
+ describe "recreate" do
100
+ it "complains about unknown routers" do
101
+ tf = Tempfile.new('unittest')
102
+ tf.puts 'ROUTER MY_ROUTER interface.rb'
103
+ tf.close
104
+ routers = Routers.new(CmdTlmServerConfig.new(tf.path))
105
+ expect { routers.recreate("BLAH") }.to raise_error("Unknown router: BLAH")
106
+ tf.unlink
107
+ end
108
+ end
109
+
110
+ describe "connect" do
111
+ it "complains about unknown routers" do
112
+ tf = Tempfile.new('unittest')
113
+ tf.puts 'ROUTER MY_ROUTER interface.rb'
114
+ tf.close
115
+ routers = Routers.new(CmdTlmServerConfig.new(tf.path))
116
+ expect { routers.connect("TEST") }.to raise_error("Unknown router: TEST")
117
+ tf.unlink
118
+ end
119
+
120
+ it "connects a router" do
121
+ tf = Tempfile.new('unittest')
122
+ tf.puts 'INTERFACE DEST1 tcpip_client_interface.rb localhost 8888 8888 5 5 burst'
123
+ tf.puts 'INTERFACE DEST2 tcpip_client_interface.rb localhost 8888 8888 5 5 burst'
124
+ tf.puts 'ROUTER MY_ROUTER tcpip_client_interface.rb localhost 8888 8888 5 5 burst'
125
+ tf.puts 'ROUTE DEST1'
126
+ tf.puts 'ROUTE DEST2'
127
+ tf.close
128
+ capture_io do |stdout|
129
+ server = TCPServer.new('127.0.0.1', 8888)
130
+ def server.graceful_kill
131
+ end
132
+ clients = []
133
+ pipe_reader, pipe_writer = IO.pipe
134
+ server_thread = Thread.new do
135
+ loop do
136
+ clients << server.accept
137
+ begin
138
+ clients << server.accept_nonblock
139
+ rescue Errno::EAGAIN, Errno::ECONNABORTED, Errno::EINTR, Errno::EWOULDBLOCK
140
+ read_ready, _ = IO.select([server, pipe_reader])
141
+ if read_ready.include?(pipe_reader)
142
+ break
143
+ else
144
+ retry
145
+ end
146
+ end
147
+ end
148
+ end
149
+
150
+
151
+ config = CmdTlmServerConfig.new(tf.path)
152
+ routers = Routers.new(config)
153
+ expect(routers.all["MY_ROUTER"].interfaces[0].name).to eql "DEST1"
154
+ expect(routers.all["MY_ROUTER"].interfaces[1].name).to eql "DEST2"
155
+ expect(config.interfaces['DEST1'].routers[0].name).to eql "MY_ROUTER"
156
+ expect(config.interfaces['DEST2'].routers[0].name).to eql "MY_ROUTER"
157
+ routers.connect("MY_ROUTER")
158
+ sleep 0.1
159
+ expect(stdout.string).to match "Connecting to MY_ROUTER"
160
+ routers.disconnect("MY_ROUTER")
161
+ routers.connect("MY_ROUTER",'localhost',8888,8888,6,6,'length')
162
+ sleep 0.1
163
+ expect(stdout.string).to match "Disconnected from router MY_ROUTER"
164
+ expect(stdout.string).to match "Connecting to MY_ROUTER"
165
+ expect(routers.all["MY_ROUTER"].interfaces[0].name).to eql "DEST1"
166
+ expect(routers.all["MY_ROUTER"].interfaces[1].name).to eql "DEST2"
167
+ expect(config.interfaces['DEST1'].routers[0].name).to eql "MY_ROUTER"
168
+ expect(config.interfaces['DEST2'].routers[0].name).to eql "MY_ROUTER"
169
+ routers.disconnect("MY_ROUTER")
170
+ routers.stop
171
+
172
+ pipe_writer.write('.')
173
+ Cosmos.kill_thread(server, server_thread)
174
+ server.close
175
+ clients.each do |c|
176
+ c.close
177
+ end
178
+ end
179
+ tf.unlink
180
+ sleep(0.2)
181
+ end
182
+ end
183
+
184
+ describe "names" do
185
+ it "lists all the router names" do
186
+ tf = Tempfile.new('unittest')
187
+ tf.puts 'ROUTER ROUTER1 interface.rb'
188
+ tf.puts 'ROUTER ROUTER2 interface.rb'
189
+ tf.puts 'ROUTER ROUTER3 interface.rb'
190
+ tf.close
191
+ routers = Routers.new(CmdTlmServerConfig.new(tf.path))
192
+ expect(routers.names).to eql %w(ROUTER1 ROUTER2 ROUTER3)
193
+ tf.unlink
194
+ end
195
+ end
196
+
197
+ describe "clear_counters" do
198
+ it "clears all router counters" do
199
+ tf = Tempfile.new('unittest')
200
+ tf.puts 'ROUTER ROUTER1 interface.rb'
201
+ tf.puts 'ROUTER ROUTER2 interface.rb'
202
+ tf.puts 'ROUTER ROUTER3 interface.rb'
203
+ tf.close
204
+ routers = Routers.new(CmdTlmServerConfig.new(tf.path))
205
+ routers.all.each do |name, router|
206
+ router.bytes_written = 100
207
+ router.bytes_read = 200
208
+ router.write_count = 10
209
+ router.read_count = 20
210
+ end
211
+ routers.clear_counters
212
+ routers.all.each do |name, router|
213
+ expect(router.bytes_written).to eql 0
214
+ expect(router.bytes_read).to eql 0
215
+ expect(router.write_count).to eql 0
216
+ expect(router.read_count).to eql 0
217
+ end
218
+ tf.unlink
219
+ end
220
+ end
221
+ end
222
+ end
223
+
@@ -1,464 +1,464 @@
1
- # encoding: ascii-8bit
2
-
3
- # Copyright 2014 Ball Aerospace & Technologies Corp.
4
- # All Rights Reserved.
5
- #
6
- # This program is free software; you can modify and/or redistribute it
7
- # under the terms of the GNU General Public License
8
- # as published by the Free Software Foundation; version 3 with
9
- # attribution addendums as found in the LICENSE.txt
10
-
11
- require 'spec_helper'
12
- require 'cosmos'
13
- require 'cosmos/tools/launcher/launcher_config'
14
- require 'tempfile'
15
-
16
- module Cosmos
17
-
18
- describe LauncherConfig do
19
- describe "initialize" do
20
- it "checks for a given filename" do
21
- expect { LauncherConfig.new('blah_file.txt') }.to raise_error
22
- end
23
-
24
- it "raises on unknown parameters" do
25
- tf = Tempfile.new('mylauncher.txt')
26
- tf.puts "UNKNOWN"
27
- tf.close
28
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
29
- tf.unlink
30
- end
31
-
32
- describe 'TITLE' do
33
- it "parses a single string" do
34
- tf = Tempfile.new('mylauncher.txt')
35
- tf.puts "TITLE \"MyLauncher\""
36
- tf.close
37
-
38
- lc = LauncherConfig.new(tf.path)
39
- expect(lc.title).to eq "MyLauncher"
40
- tf.unlink
41
- end
42
-
43
- it "raises with more than 1 parameter" do
44
- tf = Tempfile.new('mylauncher.txt')
45
- tf.puts "TITLE My Launcher"
46
- tf.close
47
-
48
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
49
- tf.unlink
50
- end
51
- end
52
-
53
- describe 'DIVIDER' do
54
- it "parses without arguments" do
55
- tf = Tempfile.new('mylauncher.txt')
56
- tf.puts "DIVIDER"
57
- tf.close
58
-
59
- expect { LauncherConfig.new(tf.path) }.to_not raise_error
60
- tf.unlink
61
- end
62
-
63
- it "raises with a parameter" do
64
- tf = Tempfile.new('mylauncher.txt')
65
- tf.puts "DIVIDER 1"
66
- tf.close
67
-
68
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
69
- tf.unlink
70
- end
71
- end
72
-
73
- describe 'NUM_COLUMNS' do
74
- it "parses a single value" do
75
- tf = Tempfile.new('mylauncher.txt')
76
- tf.puts "NUM_COLUMNS 6"
77
- tf.close
78
-
79
- lc = LauncherConfig.new(tf.path)
80
- expect(lc.num_columns).to eq 6
81
- tf.unlink
82
- end
83
-
84
- it "raises with a string" do
85
- tf = Tempfile.new('mylauncher.txt')
86
- tf.puts "NUM_COLUMNS TWO"
87
- tf.close
88
-
89
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
90
- tf.unlink
91
- end
92
-
93
- it "raises with more than 1 parameter" do
94
- tf = Tempfile.new('mylauncher.txt')
95
- tf.puts "NUM_COLUMNS 2 3"
96
- tf.close
97
-
98
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
99
- tf.unlink
100
- end
101
- end
102
-
103
- describe 'LABEL' do
104
- it "parses a single value" do
105
- tf = Tempfile.new('mylauncher.txt')
106
- tf.puts "LABEL 'HI THERE'"
107
- tf.close
108
-
109
- lc = LauncherConfig.new(tf.path)
110
- expect(lc.items[0][0]).to eq :LABEL
111
- expect(lc.items[0][1]).to eq "HI THERE"
112
- expect(lc.items[0][2]).to be_nil
113
- expect(lc.items[0][3]).to be_nil
114
- expect(lc.items[0][4]).to be_nil
115
- tf.unlink
116
- end
117
-
118
- it "raises with more than 1 parameter" do
119
- tf = Tempfile.new('mylauncher.txt')
120
- tf.puts "LABEL HI THERE"
121
- tf.close
122
-
123
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
124
- tf.unlink
125
- end
126
- end
127
-
128
- describe 'TOOL_FONT' do
129
- it "parses the font and size" do
130
- tf = Tempfile.new('mylauncher.txt')
131
- tf.puts "TOOL_FONT tahoma 12"
132
- tf.close
133
-
134
- lc = LauncherConfig.new(tf.path)
135
- expect(lc.tool_font_settings[0]).to eq 'tahoma'
136
- expect(lc.tool_font_settings[1]).to eq 12
137
- tf.unlink
138
- end
139
-
140
- it "raises with only 1 parameter" do
141
- tf = Tempfile.new('mylauncher.txt')
142
- tf.puts "TOOL_FONT tahoma"
143
- tf.close
144
-
145
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
146
- tf.unlink
147
- end
148
-
149
- it "raises with more than 2 parameters" do
150
- tf = Tempfile.new('mylauncher.txt')
151
- tf.puts "TOOL_FONT tahoma 12 16"
152
- tf.close
153
-
154
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
155
- tf.unlink
156
- end
157
-
158
- # TODO: Is it possible to check for bad fonts?
159
-
160
- it "raises with a bad size" do
161
- tf = Tempfile.new('mylauncher.txt')
162
- tf.puts "TOOL_FONT tahoma arial"
163
- tf.close
164
-
165
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
166
- tf.unlink
167
- end
168
- end
169
-
170
- describe 'LABEL_FONT' do
171
- it "parses the font and size" do
172
- tf = Tempfile.new('mylauncher.txt')
173
- tf.puts "LABEL_FONT tahoma 12"
174
- tf.close
175
-
176
- lc = LauncherConfig.new(tf.path)
177
- expect(lc.label_font_settings[0]).to eq 'tahoma'
178
- expect(lc.label_font_settings[1]).to eq 12
179
- tf.unlink
180
- end
181
-
182
- it "raises with only 1 parameter" do
183
- tf = Tempfile.new('mylauncher.txt')
184
- tf.puts "LABEL_FONT tahoma"
185
- tf.close
186
-
187
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
188
- tf.unlink
189
- end
190
-
191
- it "raises with more than 2 parameters" do
192
- tf = Tempfile.new('mylauncher.txt')
193
- tf.puts "LABEL_FONT tahoma 12 16"
194
- tf.close
195
-
196
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
197
- tf.unlink
198
- end
199
-
200
- # TODO: Is it possible to check for bad fonts?
201
-
202
- it "raises with a bad size" do
203
- tf = Tempfile.new('mylauncher.txt')
204
- tf.puts "LABEL_FONT tahoma arial"
205
- tf.close
206
-
207
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
208
- tf.unlink
209
- end
210
- end
211
-
212
- describe "DONT_CAPTURE_IO" do
213
- it "must follow a TOOL" do
214
- tf = Tempfile.new('mylauncher.txt')
215
- tf.puts ' DONT_CAPTURE_IO'
216
- tf.close
217
-
218
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
219
- tf.unlink
220
-
221
- tf = Tempfile.new('mylauncher.txt')
222
- tf.puts 'MULTITOOL_START "MyTool"'
223
- tf.puts ' DONT_CAPTURE_IO'
224
- tf.puts ' TOOL "LAUNCH CmdTlmServer"'
225
- tf.puts 'MULTITOOL_END'
226
- tf.close
227
-
228
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
229
- tf.unlink
230
-
231
- tf = Tempfile.new('mylauncher.txt')
232
- tf.puts 'TOOL "Server" "LAUNCH CmdTlmServer"'
233
- tf.puts ' DONT_CAPTURE_IO'
234
- tf.close
235
-
236
- lc = LauncherConfig.new(tf.path)
237
- expect(lc.items[0][3]).to be false
238
- tf.unlink
239
- end
240
-
241
- it "raises with a parameter" do
242
- tf = Tempfile.new('mylauncher.txt')
243
- tf.puts 'TOOL "Server" "LAUNCH CmdTlmServer"'
244
- tf.puts ' DONT_CAPTURE_IO true'
245
- tf.close
246
-
247
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
248
- tf.unlink
249
- end
250
-
251
- it "valid within MULTITOOL" do
252
- tf = Tempfile.new('mylauncher.txt')
253
- tf.puts 'MULTITOOL_START "MyTool"'
254
- tf.puts ' TOOL "LAUNCH CmdTlmServer"'
255
- tf.puts ' DONT_CAPTURE_IO'
256
- tf.puts 'MULTITOOL_END'
257
- tf.close
258
-
259
- lc = LauncherConfig.new(tf.path)
260
- expect(lc.items[0][2][0][2]).to be false
261
- tf.unlink
262
- end
263
- end
264
-
265
- describe "TOOL" do
266
- it "parses name and LAUNCH shell command" do
267
- tf = Tempfile.new('mylauncher.txt')
268
- tf.puts 'TOOL "Server" "LAUNCH CmdTlmServer --system system.txt -x 0 -y 0"'
269
- tf.close
270
-
271
- lc = LauncherConfig.new(tf.path)
272
- expect(lc.items[0][0]).to eq :TOOL
273
- expect(lc.items[0][1]).to eq 'Server'
274
- if Kernel.is_mac? and File.exist?(File.join(USERPATH, 'tools', 'mac'))
275
- expect(lc.items[0][2]).to eq 'open tools/mac/CmdTlmServer.app --args --system system.txt -x 0 -y 0'
276
- else
277
- if Kernel.is_windows?
278
- expect(lc.items[0][2]).to eq 'rubyw tools/CmdTlmServer --system system.txt -x 0 -y 0'
279
- else
280
- expect(lc.items[0][2]).to eq 'ruby tools/CmdTlmServer --system system.txt -x 0 -y 0'
281
- end
282
- end
283
- expect(lc.items[0][3]).to be true
284
- expect(lc.items[0][4]).to be_nil
285
- expect(lc.items[0][5]).to be_nil
286
- tf.unlink
287
- end
288
-
289
- it "parses name and LAUNCH_TERMINAL shell command" do
290
- tf = Tempfile.new('mylauncher.txt')
291
- tf.puts 'TOOL "Example" "LAUNCH_TERMINAL Example"'
292
- tf.close
293
-
294
- lc = LauncherConfig.new(tf.path)
295
- expect(lc.items[0][0]).to eq :TOOL
296
- expect(lc.items[0][1]).to eq 'Example'
297
- if Kernel.is_mac?
298
- expect(lc.items[0][2]).to eq "osascript -e 'tell application \"Terminal\" to do script \"cd #{File.expand_path(USERPATH)} && ruby tools/Example \"' -e 'return'"
299
- elsif Kernel.is_windows?
300
- expect(lc.items[0][2]).to eq "start ruby tools/Example"
301
- else
302
- expect(lc.items[0][2]).to eq "gnome-terminal -e \"ruby tools/Example \""
303
- end
304
- expect(lc.items[0][3]).to be true
305
- expect(lc.items[0][4]).to be_nil
306
- expect(lc.items[0][5]).to be_nil
307
- tf.unlink
308
- end
309
-
310
- it "parses name and random shell command" do
311
- tf = Tempfile.new('mylauncher.txt')
312
- tf.puts 'TOOL "List" "ls -la"'
313
- tf.close
314
-
315
- lc = LauncherConfig.new(tf.path)
316
- expect(lc.items[0][0]).to eq :TOOL
317
- expect(lc.items[0][1]).to eq 'List'
318
- expect(lc.items[0][2]).to eq 'ls -la'
319
- tf.unlink
320
- end
321
-
322
- it "parses icon and parameters" do
323
- tf = Tempfile.new('mylauncher.txt')
324
- tf.puts 'TOOL "Server" "LAUNCH CmdTlmServer --system system.txt -x 0 -y 0" "cts.png" --config server.txt --width 500 --height 500'
325
- tf.close
326
-
327
- lc = LauncherConfig.new(tf.path)
328
- expect(lc.items[0][4]).to eq 'cts.png'
329
- expect(lc.items[0][5].join(' ')).to eq '--config server.txt --width 500 --height 500'
330
- tf.unlink
331
- end
332
-
333
- it "raises with less than 2 parameters" do
334
- tf = Tempfile.new('mylauncher.txt')
335
- tf.puts 'TOOL "Server"'
336
- tf.close
337
-
338
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
339
- tf.unlink
340
- end
341
- end
342
-
343
- describe "DELAY" do
344
- it "only valid within MULTITOOL" do
345
- tf = Tempfile.new('mylauncher.txt')
346
- tf.puts ' DELAY'
347
- tf.close
348
-
349
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
350
- tf.unlink
351
-
352
- tf = Tempfile.new('mylauncher.txt')
353
- tf.puts 'MULTITOOL_START "MyTool" icon.png'
354
- tf.puts ' DELAY 1'
355
- tf.puts ' TOOL "LAUNCH CmdTlmServer"'
356
- tf.puts 'MULTITOOL_END'
357
- tf.close
358
-
359
- lc = LauncherConfig.new(tf.path)
360
- expect(lc.items[0][2][0][0]).to eq :DELAY
361
- expect(lc.items[0][2][0][1]).to eq 1
362
- tf.unlink
363
- end
364
-
365
- it "raises without a parameter" do
366
- tf = Tempfile.new('mylauncher.txt')
367
- tf.puts 'MULTITOOL_START "MyTool" icon.png'
368
- tf.puts ' DELAY'
369
- tf.puts ' TOOL "LAUNCH CmdTlmServer"'
370
- tf.puts 'MULTITOOL_END'
371
- tf.close
372
-
373
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
374
- tf.unlink
375
- end
376
-
377
- it "raises with more than 1 parameter" do
378
- tf = Tempfile.new('mylauncher.txt')
379
- tf.puts 'MULTITOOL_START "MyTool" icon.png'
380
- tf.puts ' DELAY 1 2'
381
- tf.puts ' TOOL "LAUNCH CmdTlmServer"'
382
- tf.puts 'MULTITOOL_END'
383
- tf.close
384
-
385
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
386
- tf.unlink
387
- end
388
- end
389
-
390
- describe "MULTITOOL" do
391
- it "parses name and icon" do
392
- tf = Tempfile.new('mylauncher.txt')
393
- tf.puts 'MULTITOOL_START "MyTool" icon.png'
394
- tf.puts ' TOOL "LAUNCH CmdTlmServer"'
395
- tf.puts 'MULTITOOL_END'
396
- tf.close
397
-
398
- lc = LauncherConfig.new(tf.path)
399
- expect(lc.items[0][0]).to eq :MULTITOOL
400
- expect(lc.items[0][1]).to eq 'MyTool'
401
- expect(lc.items[0][2]).to_not be_empty
402
- expect(lc.items[0][3]).to be true
403
- expect(lc.items[0][4]).to eq 'icon.png'
404
- expect(lc.items[0][5]).to be_nil
405
- tf.unlink
406
- end
407
-
408
- it "raises with no parameters" do
409
- tf = Tempfile.new('mylauncher.txt')
410
- tf.puts 'MULTITOOL_START'
411
- tf.puts ' TOOL "LAUNCH CmdTlmServer"'
412
- tf.puts 'MULTITOOL_END'
413
- tf.close
414
-
415
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
416
- tf.unlink
417
- end
418
-
419
- it "raises with more than two parameters" do
420
- tf = Tempfile.new('mylauncher.txt')
421
- tf.puts 'MULTITOOL_START Launch icon.png more'
422
- tf.puts ' TOOL "LAUNCH CmdTlmServer"'
423
- tf.puts 'MULTITOOL_END'
424
- tf.close
425
-
426
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
427
- tf.unlink
428
- end
429
-
430
- it "raises if no tools are defined" do
431
- tf = Tempfile.new('mylauncher.txt')
432
- tf.puts 'MULTITOOL_START Launch'
433
- tf.puts 'MULTITOOL_END'
434
- tf.close
435
-
436
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
437
- tf.unlink
438
-
439
- tf = Tempfile.new('mylauncher.txt')
440
- tf.puts 'MULTITOOL_START Launch'
441
- tf.puts ' DELAY 1'
442
- tf.puts 'MULTITOOL_END'
443
- tf.close
444
-
445
- expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
446
- tf.unlink
447
- end
448
- end
449
- end
450
-
451
- # DONT_CAPTURE_IO
452
- #MULTITOOL_START "COSMOS"
453
- # TOOL "LAUNCH CmdTlmServer -x 827 -y 2 -w 756 -t 475 -c cmd_tlm_server.txt"
454
- # DELAY 5
455
- # TOOL "LAUNCH TlmViewer -x 827 -y 517 -w 424 -t 111"
456
- # DONT_CAPTURE_IO
457
- #MULTITOOL_END
458
- #DIVIDER
459
- #LABEL "This is a test"
460
- #DOC
461
-
462
- end
463
- end
464
-
1
+ # encoding: ascii-8bit
2
+
3
+ # Copyright 2014 Ball Aerospace & Technologies Corp.
4
+ # All Rights Reserved.
5
+ #
6
+ # This program is free software; you can modify and/or redistribute it
7
+ # under the terms of the GNU General Public License
8
+ # as published by the Free Software Foundation; version 3 with
9
+ # attribution addendums as found in the LICENSE.txt
10
+
11
+ require 'spec_helper'
12
+ require 'cosmos'
13
+ require 'cosmos/tools/launcher/launcher_config'
14
+ require 'tempfile'
15
+
16
+ module Cosmos
17
+
18
+ describe LauncherConfig do
19
+ describe "initialize" do
20
+ it "checks for a given filename" do
21
+ expect { LauncherConfig.new('blah_file.txt') }.to raise_error
22
+ end
23
+
24
+ it "raises on unknown parameters" do
25
+ tf = Tempfile.new('mylauncher.txt')
26
+ tf.puts "UNKNOWN"
27
+ tf.close
28
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
29
+ tf.unlink
30
+ end
31
+
32
+ describe 'TITLE' do
33
+ it "parses a single string" do
34
+ tf = Tempfile.new('mylauncher.txt')
35
+ tf.puts "TITLE \"MyLauncher\""
36
+ tf.close
37
+
38
+ lc = LauncherConfig.new(tf.path)
39
+ expect(lc.title).to eq "MyLauncher"
40
+ tf.unlink
41
+ end
42
+
43
+ it "raises with more than 1 parameter" do
44
+ tf = Tempfile.new('mylauncher.txt')
45
+ tf.puts "TITLE My Launcher"
46
+ tf.close
47
+
48
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
49
+ tf.unlink
50
+ end
51
+ end
52
+
53
+ describe 'DIVIDER' do
54
+ it "parses without arguments" do
55
+ tf = Tempfile.new('mylauncher.txt')
56
+ tf.puts "DIVIDER"
57
+ tf.close
58
+
59
+ expect { LauncherConfig.new(tf.path) }.to_not raise_error
60
+ tf.unlink
61
+ end
62
+
63
+ it "raises with a parameter" do
64
+ tf = Tempfile.new('mylauncher.txt')
65
+ tf.puts "DIVIDER 1"
66
+ tf.close
67
+
68
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
69
+ tf.unlink
70
+ end
71
+ end
72
+
73
+ describe 'NUM_COLUMNS' do
74
+ it "parses a single value" do
75
+ tf = Tempfile.new('mylauncher.txt')
76
+ tf.puts "NUM_COLUMNS 6"
77
+ tf.close
78
+
79
+ lc = LauncherConfig.new(tf.path)
80
+ expect(lc.num_columns).to eq 6
81
+ tf.unlink
82
+ end
83
+
84
+ it "raises with a string" do
85
+ tf = Tempfile.new('mylauncher.txt')
86
+ tf.puts "NUM_COLUMNS TWO"
87
+ tf.close
88
+
89
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
90
+ tf.unlink
91
+ end
92
+
93
+ it "raises with more than 1 parameter" do
94
+ tf = Tempfile.new('mylauncher.txt')
95
+ tf.puts "NUM_COLUMNS 2 3"
96
+ tf.close
97
+
98
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
99
+ tf.unlink
100
+ end
101
+ end
102
+
103
+ describe 'LABEL' do
104
+ it "parses a single value" do
105
+ tf = Tempfile.new('mylauncher.txt')
106
+ tf.puts "LABEL 'HI THERE'"
107
+ tf.close
108
+
109
+ lc = LauncherConfig.new(tf.path)
110
+ expect(lc.items[0][0]).to eq :LABEL
111
+ expect(lc.items[0][1]).to eq "HI THERE"
112
+ expect(lc.items[0][2]).to be_nil
113
+ expect(lc.items[0][3]).to be_nil
114
+ expect(lc.items[0][4]).to be_nil
115
+ tf.unlink
116
+ end
117
+
118
+ it "raises with more than 1 parameter" do
119
+ tf = Tempfile.new('mylauncher.txt')
120
+ tf.puts "LABEL HI THERE"
121
+ tf.close
122
+
123
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
124
+ tf.unlink
125
+ end
126
+ end
127
+
128
+ describe 'TOOL_FONT' do
129
+ it "parses the font and size" do
130
+ tf = Tempfile.new('mylauncher.txt')
131
+ tf.puts "TOOL_FONT tahoma 12"
132
+ tf.close
133
+
134
+ lc = LauncherConfig.new(tf.path)
135
+ expect(lc.tool_font_settings[0]).to eq 'tahoma'
136
+ expect(lc.tool_font_settings[1]).to eq 12
137
+ tf.unlink
138
+ end
139
+
140
+ it "raises with only 1 parameter" do
141
+ tf = Tempfile.new('mylauncher.txt')
142
+ tf.puts "TOOL_FONT tahoma"
143
+ tf.close
144
+
145
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
146
+ tf.unlink
147
+ end
148
+
149
+ it "raises with more than 2 parameters" do
150
+ tf = Tempfile.new('mylauncher.txt')
151
+ tf.puts "TOOL_FONT tahoma 12 16"
152
+ tf.close
153
+
154
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
155
+ tf.unlink
156
+ end
157
+
158
+ # TODO: Is it possible to check for bad fonts?
159
+
160
+ it "raises with a bad size" do
161
+ tf = Tempfile.new('mylauncher.txt')
162
+ tf.puts "TOOL_FONT tahoma arial"
163
+ tf.close
164
+
165
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
166
+ tf.unlink
167
+ end
168
+ end
169
+
170
+ describe 'LABEL_FONT' do
171
+ it "parses the font and size" do
172
+ tf = Tempfile.new('mylauncher.txt')
173
+ tf.puts "LABEL_FONT tahoma 12"
174
+ tf.close
175
+
176
+ lc = LauncherConfig.new(tf.path)
177
+ expect(lc.label_font_settings[0]).to eq 'tahoma'
178
+ expect(lc.label_font_settings[1]).to eq 12
179
+ tf.unlink
180
+ end
181
+
182
+ it "raises with only 1 parameter" do
183
+ tf = Tempfile.new('mylauncher.txt')
184
+ tf.puts "LABEL_FONT tahoma"
185
+ tf.close
186
+
187
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
188
+ tf.unlink
189
+ end
190
+
191
+ it "raises with more than 2 parameters" do
192
+ tf = Tempfile.new('mylauncher.txt')
193
+ tf.puts "LABEL_FONT tahoma 12 16"
194
+ tf.close
195
+
196
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
197
+ tf.unlink
198
+ end
199
+
200
+ # TODO: Is it possible to check for bad fonts?
201
+
202
+ it "raises with a bad size" do
203
+ tf = Tempfile.new('mylauncher.txt')
204
+ tf.puts "LABEL_FONT tahoma arial"
205
+ tf.close
206
+
207
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
208
+ tf.unlink
209
+ end
210
+ end
211
+
212
+ describe "DONT_CAPTURE_IO" do
213
+ it "must follow a TOOL" do
214
+ tf = Tempfile.new('mylauncher.txt')
215
+ tf.puts ' DONT_CAPTURE_IO'
216
+ tf.close
217
+
218
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
219
+ tf.unlink
220
+
221
+ tf = Tempfile.new('mylauncher.txt')
222
+ tf.puts 'MULTITOOL_START "MyTool"'
223
+ tf.puts ' DONT_CAPTURE_IO'
224
+ tf.puts ' TOOL "LAUNCH CmdTlmServer"'
225
+ tf.puts 'MULTITOOL_END'
226
+ tf.close
227
+
228
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
229
+ tf.unlink
230
+
231
+ tf = Tempfile.new('mylauncher.txt')
232
+ tf.puts 'TOOL "Server" "LAUNCH CmdTlmServer"'
233
+ tf.puts ' DONT_CAPTURE_IO'
234
+ tf.close
235
+
236
+ lc = LauncherConfig.new(tf.path)
237
+ expect(lc.items[0][3]).to be false
238
+ tf.unlink
239
+ end
240
+
241
+ it "raises with a parameter" do
242
+ tf = Tempfile.new('mylauncher.txt')
243
+ tf.puts 'TOOL "Server" "LAUNCH CmdTlmServer"'
244
+ tf.puts ' DONT_CAPTURE_IO true'
245
+ tf.close
246
+
247
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
248
+ tf.unlink
249
+ end
250
+
251
+ it "valid within MULTITOOL" do
252
+ tf = Tempfile.new('mylauncher.txt')
253
+ tf.puts 'MULTITOOL_START "MyTool"'
254
+ tf.puts ' TOOL "LAUNCH CmdTlmServer"'
255
+ tf.puts ' DONT_CAPTURE_IO'
256
+ tf.puts 'MULTITOOL_END'
257
+ tf.close
258
+
259
+ lc = LauncherConfig.new(tf.path)
260
+ expect(lc.items[0][2][0][2]).to be false
261
+ tf.unlink
262
+ end
263
+ end
264
+
265
+ describe "TOOL" do
266
+ it "parses name and LAUNCH shell command" do
267
+ tf = Tempfile.new('mylauncher.txt')
268
+ tf.puts 'TOOL "Server" "LAUNCH CmdTlmServer --system system.txt -x 0 -y 0"'
269
+ tf.close
270
+
271
+ lc = LauncherConfig.new(tf.path)
272
+ expect(lc.items[0][0]).to eq :TOOL
273
+ expect(lc.items[0][1]).to eq 'Server'
274
+ if Kernel.is_mac? and File.exist?(File.join(USERPATH, 'tools', 'mac'))
275
+ expect(lc.items[0][2]).to eq 'open tools/mac/CmdTlmServer.app --args --system system.txt -x 0 -y 0'
276
+ else
277
+ if Kernel.is_windows?
278
+ expect(lc.items[0][2]).to eq 'rubyw tools/CmdTlmServer --system system.txt -x 0 -y 0'
279
+ else
280
+ expect(lc.items[0][2]).to eq 'ruby tools/CmdTlmServer --system system.txt -x 0 -y 0'
281
+ end
282
+ end
283
+ expect(lc.items[0][3]).to be true
284
+ expect(lc.items[0][4]).to be_nil
285
+ expect(lc.items[0][5]).to be_nil
286
+ tf.unlink
287
+ end
288
+
289
+ it "parses name and LAUNCH_TERMINAL shell command" do
290
+ tf = Tempfile.new('mylauncher.txt')
291
+ tf.puts 'TOOL "Example" "LAUNCH_TERMINAL Example"'
292
+ tf.close
293
+
294
+ lc = LauncherConfig.new(tf.path)
295
+ expect(lc.items[0][0]).to eq :TOOL
296
+ expect(lc.items[0][1]).to eq 'Example'
297
+ if Kernel.is_mac?
298
+ expect(lc.items[0][2]).to eq "osascript -e 'tell application \"Terminal\" to do script \"cd #{File.expand_path(USERPATH)} && ruby tools/Example \"' -e 'return'"
299
+ elsif Kernel.is_windows?
300
+ expect(lc.items[0][2]).to eq "start ruby tools/Example"
301
+ else
302
+ expect(lc.items[0][2]).to eq "gnome-terminal -e \"ruby tools/Example \""
303
+ end
304
+ expect(lc.items[0][3]).to be true
305
+ expect(lc.items[0][4]).to be_nil
306
+ expect(lc.items[0][5]).to be_nil
307
+ tf.unlink
308
+ end
309
+
310
+ it "parses name and random shell command" do
311
+ tf = Tempfile.new('mylauncher.txt')
312
+ tf.puts 'TOOL "List" "ls -la"'
313
+ tf.close
314
+
315
+ lc = LauncherConfig.new(tf.path)
316
+ expect(lc.items[0][0]).to eq :TOOL
317
+ expect(lc.items[0][1]).to eq 'List'
318
+ expect(lc.items[0][2]).to eq 'ls -la'
319
+ tf.unlink
320
+ end
321
+
322
+ it "parses icon and parameters" do
323
+ tf = Tempfile.new('mylauncher.txt')
324
+ tf.puts 'TOOL "Server" "LAUNCH CmdTlmServer --system system.txt -x 0 -y 0" "cts.png" --config server.txt --width 500 --height 500'
325
+ tf.close
326
+
327
+ lc = LauncherConfig.new(tf.path)
328
+ expect(lc.items[0][4]).to eq 'cts.png'
329
+ expect(lc.items[0][5].join(' ')).to eq '--config server.txt --width 500 --height 500'
330
+ tf.unlink
331
+ end
332
+
333
+ it "raises with less than 2 parameters" do
334
+ tf = Tempfile.new('mylauncher.txt')
335
+ tf.puts 'TOOL "Server"'
336
+ tf.close
337
+
338
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
339
+ tf.unlink
340
+ end
341
+ end
342
+
343
+ describe "DELAY" do
344
+ it "only valid within MULTITOOL" do
345
+ tf = Tempfile.new('mylauncher.txt')
346
+ tf.puts ' DELAY'
347
+ tf.close
348
+
349
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
350
+ tf.unlink
351
+
352
+ tf = Tempfile.new('mylauncher.txt')
353
+ tf.puts 'MULTITOOL_START "MyTool" icon.png'
354
+ tf.puts ' DELAY 1'
355
+ tf.puts ' TOOL "LAUNCH CmdTlmServer"'
356
+ tf.puts 'MULTITOOL_END'
357
+ tf.close
358
+
359
+ lc = LauncherConfig.new(tf.path)
360
+ expect(lc.items[0][2][0][0]).to eq :DELAY
361
+ expect(lc.items[0][2][0][1]).to eq 1
362
+ tf.unlink
363
+ end
364
+
365
+ it "raises without a parameter" do
366
+ tf = Tempfile.new('mylauncher.txt')
367
+ tf.puts 'MULTITOOL_START "MyTool" icon.png'
368
+ tf.puts ' DELAY'
369
+ tf.puts ' TOOL "LAUNCH CmdTlmServer"'
370
+ tf.puts 'MULTITOOL_END'
371
+ tf.close
372
+
373
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
374
+ tf.unlink
375
+ end
376
+
377
+ it "raises with more than 1 parameter" do
378
+ tf = Tempfile.new('mylauncher.txt')
379
+ tf.puts 'MULTITOOL_START "MyTool" icon.png'
380
+ tf.puts ' DELAY 1 2'
381
+ tf.puts ' TOOL "LAUNCH CmdTlmServer"'
382
+ tf.puts 'MULTITOOL_END'
383
+ tf.close
384
+
385
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
386
+ tf.unlink
387
+ end
388
+ end
389
+
390
+ describe "MULTITOOL" do
391
+ it "parses name and icon" do
392
+ tf = Tempfile.new('mylauncher.txt')
393
+ tf.puts 'MULTITOOL_START "MyTool" icon.png'
394
+ tf.puts ' TOOL "LAUNCH CmdTlmServer"'
395
+ tf.puts 'MULTITOOL_END'
396
+ tf.close
397
+
398
+ lc = LauncherConfig.new(tf.path)
399
+ expect(lc.items[0][0]).to eq :MULTITOOL
400
+ expect(lc.items[0][1]).to eq 'MyTool'
401
+ expect(lc.items[0][2]).to_not be_empty
402
+ expect(lc.items[0][3]).to be true
403
+ expect(lc.items[0][4]).to eq 'icon.png'
404
+ expect(lc.items[0][5]).to be_nil
405
+ tf.unlink
406
+ end
407
+
408
+ it "raises with no parameters" do
409
+ tf = Tempfile.new('mylauncher.txt')
410
+ tf.puts 'MULTITOOL_START'
411
+ tf.puts ' TOOL "LAUNCH CmdTlmServer"'
412
+ tf.puts 'MULTITOOL_END'
413
+ tf.close
414
+
415
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
416
+ tf.unlink
417
+ end
418
+
419
+ it "raises with more than two parameters" do
420
+ tf = Tempfile.new('mylauncher.txt')
421
+ tf.puts 'MULTITOOL_START Launch icon.png more'
422
+ tf.puts ' TOOL "LAUNCH CmdTlmServer"'
423
+ tf.puts 'MULTITOOL_END'
424
+ tf.close
425
+
426
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
427
+ tf.unlink
428
+ end
429
+
430
+ it "raises if no tools are defined" do
431
+ tf = Tempfile.new('mylauncher.txt')
432
+ tf.puts 'MULTITOOL_START Launch'
433
+ tf.puts 'MULTITOOL_END'
434
+ tf.close
435
+
436
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
437
+ tf.unlink
438
+
439
+ tf = Tempfile.new('mylauncher.txt')
440
+ tf.puts 'MULTITOOL_START Launch'
441
+ tf.puts ' DELAY 1'
442
+ tf.puts 'MULTITOOL_END'
443
+ tf.close
444
+
445
+ expect { LauncherConfig.new(tf.path) }.to raise_error(Cosmos::ConfigParser::Error)
446
+ tf.unlink
447
+ end
448
+ end
449
+ end
450
+
451
+ # DONT_CAPTURE_IO
452
+ #MULTITOOL_START "COSMOS"
453
+ # TOOL "LAUNCH CmdTlmServer -x 827 -y 2 -w 756 -t 475 -c cmd_tlm_server.txt"
454
+ # DELAY 5
455
+ # TOOL "LAUNCH TlmViewer -x 827 -y 517 -w 424 -t 111"
456
+ # DONT_CAPTURE_IO
457
+ #MULTITOOL_END
458
+ #DIVIDER
459
+ #LABEL "This is a test"
460
+ #DOC
461
+
462
+ end
463
+ end
464
+