cosmos 3.1.2 → 3.2.0

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 (83) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -0
  3. data/Manifest.txt +17 -1
  4. data/autohotkey/tools/test_runner2.ahk +1 -0
  5. data/autohotkey/tools/tlm_grapher.ahk +13 -1
  6. data/data/crc.txt +39 -30
  7. data/demo/config/data/crc.txt +3 -3
  8. data/demo/config/targets/TEMPLATED/lib/templated_interface.rb +3 -1
  9. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server.txt +7 -1
  10. data/demo/config/tools/cmd_tlm_server/cmd_tlm_server2.txt +6 -1
  11. data/lib/cosmos.rb +2 -2
  12. data/lib/cosmos/gui/dialogs/about_dialog.rb +18 -5
  13. data/lib/cosmos/gui/dialogs/tlm_details_dialog.rb +0 -7
  14. data/lib/cosmos/gui/line_graph/overview_graph.rb +12 -2
  15. data/lib/cosmos/gui/utilities/script_module_gui.rb +11 -3
  16. data/lib/cosmos/interfaces/interface.rb +12 -0
  17. data/lib/cosmos/interfaces/stream_interface.rb +1 -21
  18. data/lib/cosmos/interfaces/tcpip_server_interface.rb +10 -0
  19. data/lib/cosmos/io/json_drb_object.rb +75 -56
  20. data/lib/cosmos/io/tcpip_server.rb +1 -11
  21. data/lib/cosmos/packet_logs.rb +1 -0
  22. data/lib/cosmos/packet_logs/ccsds_log_reader.rb +103 -0
  23. data/lib/cosmos/packets/packet.rb +70 -1
  24. data/lib/cosmos/packets/packet_config.rb +59 -611
  25. data/lib/cosmos/packets/parsers/format_string_parser.rb +58 -0
  26. data/lib/cosmos/packets/parsers/limits_parser.rb +146 -0
  27. data/lib/cosmos/packets/parsers/limits_response_parser.rb +52 -0
  28. data/lib/cosmos/packets/parsers/macro_parser.rb +116 -0
  29. data/lib/cosmos/packets/parsers/packet_item_parser.rb +215 -0
  30. data/lib/cosmos/packets/parsers/packet_parser.rb +123 -0
  31. data/lib/cosmos/packets/parsers/processor_parser.rb +63 -0
  32. data/lib/cosmos/packets/parsers/state_parser.rb +116 -0
  33. data/lib/cosmos/packets/structure.rb +59 -22
  34. data/lib/cosmos/packets/structure_item.rb +1 -1
  35. data/lib/cosmos/script/script.rb +4 -5
  36. data/lib/cosmos/streams/serial_stream.rb +5 -0
  37. data/lib/cosmos/streams/stream.rb +8 -2
  38. data/lib/cosmos/streams/stream_protocol.rb +1 -0
  39. data/lib/cosmos/streams/tcpip_client_stream.rb +37 -7
  40. data/lib/cosmos/streams/tcpip_socket_stream.rb +9 -6
  41. data/lib/cosmos/system/target.rb +3 -6
  42. data/lib/cosmos/tools/cmd_tlm_server/cmd_tlm_server_config.rb +57 -48
  43. data/lib/cosmos/tools/cmd_tlm_server/interface_thread.rb +7 -3
  44. data/lib/cosmos/tools/limits_monitor/limits_monitor.rb +1 -1
  45. data/lib/cosmos/tools/tlm_grapher/tabbed_plots_tool/tabbed_plots_realtime_thread.rb +7 -1
  46. data/lib/cosmos/tools/tlm_viewer/tlm_viewer.rb +1 -2
  47. data/lib/cosmos/top_level.rb +22 -11
  48. data/lib/cosmos/utilities/message_log.rb +14 -9
  49. data/lib/cosmos/version.rb +5 -5
  50. data/spec/interfaces/cmd_tlm_server_interface_spec.rb +16 -16
  51. data/spec/interfaces/linc_interface_spec.rb +3 -0
  52. data/spec/interfaces/tcpip_client_interface_spec.rb +1 -0
  53. data/spec/interfaces/tcpip_server_interface_spec.rb +9 -0
  54. data/spec/io/json_drb_object_spec.rb +1 -1
  55. data/spec/io/serial_driver_spec.rb +0 -1
  56. data/spec/packet_logs/packet_log_writer_spec.rb +5 -3
  57. data/spec/packets/packet_config_spec.rb +22 -837
  58. data/spec/packets/packet_item_spec.rb +10 -10
  59. data/spec/packets/packet_spec.rb +239 -1
  60. data/spec/packets/parsers/format_string_parser_spec.rb +122 -0
  61. data/spec/packets/parsers/limits_parser_spec.rb +282 -0
  62. data/spec/packets/parsers/limits_response_parser_spec.rb +149 -0
  63. data/spec/packets/parsers/macro_parser_spec.rb +184 -0
  64. data/spec/packets/parsers/packet_item_parser_spec.rb +306 -0
  65. data/spec/packets/parsers/packet_parser_spec.rb +99 -0
  66. data/spec/packets/parsers/processor_parser_spec.rb +114 -0
  67. data/spec/packets/parsers/state_parser_spec.rb +156 -0
  68. data/spec/packets/structure_item_spec.rb +14 -14
  69. data/spec/packets/structure_spec.rb +162 -16
  70. data/spec/streams/fixed_stream_protocol_spec.rb +7 -4
  71. data/spec/streams/length_stream_protocol_spec.rb +3 -0
  72. data/spec/streams/preidentified_stream_protocol_spec.rb +3 -0
  73. data/spec/streams/serial_stream_spec.rb +12 -0
  74. data/spec/streams/stream_protocol_spec.rb +14 -0
  75. data/spec/streams/stream_spec.rb +1 -0
  76. data/spec/streams/tcpip_client_stream_spec.rb +3 -0
  77. data/spec/streams/tcpip_socket_stream_spec.rb +15 -3
  78. data/spec/streams/template_stream_protocol_spec.rb +5 -0
  79. data/spec/streams/terminated_stream_protocol_spec.rb +4 -0
  80. data/spec/tools/cmd_tlm_server/cmd_tlm_server_config_spec.rb +21 -1
  81. data/spec/tools/cmd_tlm_server/interface_thread_spec.rb +1 -1
  82. data/spec/tools/cmd_tlm_server/interfaces_spec.rb +1 -1
  83. metadata +19 -3
@@ -41,6 +41,7 @@ module Cosmos
41
41
  describe "read" do
42
42
  it "should complain if no interface set" do
43
43
  class MyStream < Stream
44
+ def connect; end
44
45
  def connected?; true; end
45
46
  def read; "\x01\x02\x03\x04"; end
46
47
  end
@@ -51,6 +52,7 @@ module Cosmos
51
52
 
52
53
  it "should read telemetry data from the stream" do
53
54
  class MyStream < Stream
55
+ def connect; end
54
56
  def connected?; true; end
55
57
  def read; "\x01\x02"; end
56
58
  end
@@ -60,19 +62,19 @@ module Cosmos
60
62
  interface.target_names = %w(TEST COSMOS)
61
63
  @fsp.interface = interface
62
64
  packet = @fsp.read
63
- packet.received_time.to_f.should be_within(0.01).of(Time.now.to_f)
65
+ packet.received_time.to_f.should be_within(0.1).of(Time.now.to_f)
64
66
  packet.target_name.should eql 'COSMOS'
65
67
  packet.packet_name.should eql 'VERSION'
66
68
  packet = @fsp.read
67
- packet.received_time.to_f.should be_within(0.01).of(Time.now.to_f)
69
+ packet.received_time.to_f.should be_within(0.1).of(Time.now.to_f)
68
70
  packet.target_name.should eql 'COSMOS'
69
71
  packet.packet_name.should eql 'LIMITS_CHANGE'
70
72
  packet = @fsp.read
71
- packet.received_time.to_f.should be_within(0.01).of(Time.now.to_f)
73
+ packet.received_time.to_f.should be_within(0.1).of(Time.now.to_f)
72
74
  packet.target_name.should eql 'COSMOS'
73
75
  packet.packet_name.should eql 'VERSION'
74
76
  packet = @fsp.read
75
- packet.received_time.to_f.should be_within(0.01).of(Time.now.to_f)
77
+ packet.received_time.to_f.should be_within(0.1).of(Time.now.to_f)
76
78
  packet.target_name.should eql 'COSMOS'
77
79
  packet.packet_name.should eql 'LIMITS_CHANGE'
78
80
  end
@@ -82,6 +84,7 @@ module Cosmos
82
84
 
83
85
  $index = 0
84
86
  class MyStream < Stream
87
+ def connect; end
85
88
  def connected?; true; end
86
89
  def read
87
90
  case $index
@@ -32,6 +32,7 @@ module Cosmos
32
32
  describe "read" do
33
33
  it "should read BIG_ENDIAN length fields from the stream" do
34
34
  class MyStream < Stream
35
+ def connect; end
35
36
  def connected?; true; end
36
37
  def read
37
38
  case $index
@@ -98,6 +99,7 @@ module Cosmos
98
99
 
99
100
  it "should read LITTLE_ENDIAN length fields from the stream" do
100
101
  class MyStream < Stream
102
+ def connect; end
101
103
  def connected?; true; end
102
104
  def read
103
105
  case $index
@@ -166,6 +168,7 @@ module Cosmos
166
168
  describe "write" do
167
169
  it "should fill the length field and sync pattern if told to" do
168
170
  class MyStream < Stream
171
+ def connect; end
169
172
  @@written_data = nil
170
173
  def self.written_data
171
174
  @@written_data
@@ -30,6 +30,7 @@ module Cosmos
30
30
  @psp = PreidentifiedStreamProtocol.new(nil, 5)
31
31
  pkt = System.telemetry.packet("COSMOS","VERSION")
32
32
  class MyStream < Stream
33
+ def connect; end
33
34
  def connected?; true; end
34
35
  def read; $buffer; end
35
36
  def write(data); $buffer = data; end
@@ -58,6 +59,7 @@ module Cosmos
58
59
  it "should create a packet header" do
59
60
  pkt = System.telemetry.packet("COSMOS","VERSION")
60
61
  class MyStream < Stream
62
+ def connect; end
61
63
  def connected?; true; end
62
64
  def read; $buffer; end
63
65
  def write(data); $buffer = data; end
@@ -90,6 +92,7 @@ module Cosmos
90
92
  pkt.write("PKT_ID", 1)
91
93
  pkt.write("COSMOS", "TEST")
92
94
  class MyStream < Stream
95
+ def connect; end
93
96
  def connected?; true; end
94
97
  def read; $buffer; end
95
98
  def write(data); $buffer = data; end
@@ -100,6 +100,18 @@ module Cosmos
100
100
  end
101
101
  end
102
102
 
103
+ describe "connect" do
104
+ it "should support a connect method that does nothing" do
105
+ driver = double("driver")
106
+ expect(driver).to receive(:closed?).and_return(false)
107
+ expect(driver).to receive(:close).once
108
+ expect(SerialDriver).to receive(:new).and_return(driver)
109
+ ss = SerialStream.new(nil,'COM1',9600,:EVEN,1,nil,nil)
110
+ expect{ss.connect}.to_not raise_error
111
+ ss.disconnect
112
+ end
113
+ end
114
+
103
115
  end
104
116
  end
105
117
 
@@ -72,6 +72,7 @@ module Cosmos
72
72
  it "should set the stream" do
73
73
  class MyStream1 < Stream; end
74
74
  stream = MyStream1.new
75
+ allow(stream).to receive(:connect)
75
76
  @sp.connect(stream)
76
77
  @sp.stream.should eql stream
77
78
  end
@@ -84,6 +85,7 @@ module Cosmos
84
85
 
85
86
  it "should return the status of the stream connection" do
86
87
  class MyStream2 < Stream
88
+ def connect; end
87
89
  def connected?; true; end
88
90
  end
89
91
  stream = MyStream2.new
@@ -96,6 +98,7 @@ module Cosmos
96
98
  it "should call disconnect on the stream" do
97
99
  $test = false
98
100
  class MyStream3 < Stream
101
+ def connect; end
99
102
  def disconnect; $test = true; end
100
103
  end
101
104
  stream = MyStream3.new
@@ -109,6 +112,7 @@ module Cosmos
109
112
  describe "read" do
110
113
  it "should read data from the stream" do
111
114
  class MyStream33 < Stream
115
+ def connect; end
112
116
  def connected?; true; end
113
117
  def read; "\x01\x02\x03\x04"; end
114
118
  end
@@ -120,6 +124,7 @@ module Cosmos
120
124
 
121
125
  it "should handle timeouts from the stream" do
122
126
  class MyStream4 < Stream
127
+ def connect; end
123
128
  def connected?; true; end
124
129
  def read; raise Timeout::Error; end
125
130
  end
@@ -131,6 +136,7 @@ module Cosmos
131
136
  it "should handle a sync pattern" do
132
137
  $read_cnt = 0
133
138
  class MyStream5 < Stream
139
+ def connect; end
134
140
  def connected?; true; end
135
141
  def read
136
142
  $read_cnt += 1
@@ -154,6 +160,7 @@ module Cosmos
154
160
  it "should handle a sync pattern split across reads" do
155
161
  $read_cnt = 0
156
162
  class MyStream6 < Stream
163
+ def connect; end
157
164
  def connected?; true; end
158
165
  def read
159
166
  $read_cnt += 1
@@ -177,6 +184,7 @@ module Cosmos
177
184
  it "should handle a false positive sync pattern" do
178
185
  $read_cnt = 0
179
186
  class MyStream7 < Stream
187
+ def connect; end
180
188
  def connected?; true; end
181
189
  def read
182
190
  $read_cnt += 1
@@ -199,6 +207,7 @@ module Cosmos
199
207
 
200
208
  it "should discard leading bytes from the stream" do
201
209
  class MyStream8 < Stream
210
+ def connect; end
202
211
  def connected?; true; end
203
212
  def read
204
213
  "\x01\x02\x03\x04"
@@ -214,6 +223,7 @@ module Cosmos
214
223
 
215
224
  it "should call the post_read_data method on the inteface" do
216
225
  class MyStream9 < Stream
226
+ def connect; end
217
227
  def connected?; true; end
218
228
  def read
219
229
  "\x01\x02\x03\x04"
@@ -263,6 +273,7 @@ module Cosmos
263
273
 
264
274
  it "should call the post_read_packet method on the inteface" do
265
275
  class MyStream10 < Stream
276
+ def connect; end
266
277
  def connected?; true; end
267
278
  def read
268
279
  "\x01\x02\x03\x04"
@@ -288,6 +299,7 @@ module Cosmos
288
299
  it "should call pre_write_packet on the interface" do
289
300
  $buffer = ''
290
301
  class MyStream11 < Stream
302
+ def connect; end
291
303
  def connected?; true; end
292
304
  def write(buffer) $buffer = buffer; end
293
305
  end
@@ -304,6 +316,7 @@ module Cosmos
304
316
  it "should write the packet buffer to the stream" do
305
317
  $buffer = ''
306
318
  class MyStream11 < Stream
319
+ def connect; end
307
320
  def connected?; true; end
308
321
  def write(buffer) $buffer = buffer; end
309
322
  end
@@ -318,6 +331,7 @@ module Cosmos
318
331
  it "should write the raw buffer to the stream" do
319
332
  $buffer = ''
320
333
  class MyStream11 < Stream
334
+ def connect; end
321
335
  def connected?; true; end
322
336
  def write(buffer) $buffer = buffer; end
323
337
  end
@@ -19,6 +19,7 @@ module Cosmos
19
19
  it "should raise an error" do
20
20
  expect { Stream.new.read }.to raise_error(/not defined/)
21
21
  expect { Stream.new.write(nil) }.to raise_error(/not defined/)
22
+ expect { Stream.new.connect }.to raise_error(/not defined/)
22
23
  expect { Stream.new.connected? }.to raise_error(/not defined/)
23
24
  expect { Stream.new.disconnect }.to raise_error(/not defined/)
24
25
  end
@@ -33,18 +33,21 @@ module Cosmos
33
33
 
34
34
  it "should use the same socket if read_port == write_port" do
35
35
  ss = TcpipClientStream.new('localhost',8888,8888,nil,nil)
36
+ ss.connect
36
37
  ss.connected?.should be_truthy
37
38
  ss.disconnect
38
39
  end
39
40
 
40
41
  it "should create the write socket" do
41
42
  ss = TcpipClientStream.new('localhost',8888,nil,nil,nil)
43
+ ss.connect
42
44
  ss.connected?.should be_truthy
43
45
  ss.disconnect
44
46
  end
45
47
 
46
48
  it "should create the read socket" do
47
49
  ss = TcpipClientStream.new('localhost',nil,8888,nil,nil)
50
+ ss.connect
48
51
  ss.connected?.should be_truthy
49
52
  ss.disconnect
50
53
  end
@@ -15,15 +15,16 @@ module Cosmos
15
15
 
16
16
  describe TcpipSocketStream do
17
17
  describe "initialize, connected?" do
18
- it "should be connected when initialized" do
18
+ it "should be not be connected when initialized" do
19
19
  ss = TcpipSocketStream.new(nil,nil,nil,nil)
20
- ss.connected?.should be_truthy
20
+ ss.connected?.should be_falsy
21
21
  end
22
22
  end
23
23
 
24
24
  describe "read" do
25
25
  it "should raise an error if no read socket given" do
26
26
  ss = TcpipSocketStream.new('write',nil,nil,nil)
27
+ ss.connect
27
28
  expect { ss.read }.to raise_error("Attempt to read from write only stream")
28
29
  end
29
30
 
@@ -31,6 +32,7 @@ module Cosmos
31
32
  read = double("read_socket")
32
33
  expect(read).to receive(:recv_nonblock).and_return 'test'
33
34
  ss = TcpipSocketStream.new(nil,read,nil,nil)
35
+ ss.connect
34
36
  ss.read.should eql 'test'
35
37
  end
36
38
 
@@ -48,6 +50,7 @@ module Cosmos
48
50
  expect(IO).to receive(:select).at_least(:once).and_return([])
49
51
  $index = 1
50
52
  ss = TcpipSocketStream.new(nil,read,nil,nil)
53
+ ss.connect
51
54
  ss.read.should eql 'test'
52
55
  end
53
56
 
@@ -56,6 +59,7 @@ module Cosmos
56
59
  allow(read).to receive(:recv_nonblock).and_raise(Errno::EWOULDBLOCK)
57
60
  expect(IO).to receive(:select).at_least(:once).and_return(nil)
58
61
  ss = TcpipSocketStream.new(nil,read,nil,nil)
62
+ ss.connect
59
63
  expect { ss.read }.to raise_error(Timeout::Error)
60
64
  end
61
65
 
@@ -63,6 +67,7 @@ module Cosmos
63
67
  read = double("read_socket")
64
68
  allow(read).to receive(:recv_nonblock).and_raise(Errno::ECONNRESET)
65
69
  ss = TcpipSocketStream.new(nil,read,nil,nil)
70
+ ss.connect
66
71
  ss.read.should eql ''
67
72
  end
68
73
  end
@@ -70,6 +75,7 @@ module Cosmos
70
75
  describe "write" do
71
76
  it "should raise an error if no write port given" do
72
77
  ss = TcpipSocketStream.new(nil,'read',nil,nil)
78
+ ss.connect
73
79
  expect { ss.write('test') }.to raise_error("Attempt to write to read only stream")
74
80
  end
75
81
 
@@ -78,6 +84,7 @@ module Cosmos
78
84
  # Simulate only writing two bytes at a time
79
85
  expect(write).to receive(:write_nonblock).twice.and_return(2)
80
86
  ss = TcpipSocketStream.new(write,nil,nil,nil)
87
+ ss.connect
81
88
  ss.write('test')
82
89
  end
83
90
 
@@ -95,6 +102,7 @@ module Cosmos
95
102
  expect(IO).to receive(:select).at_least(:once).and_return([])
96
103
  $index = 1
97
104
  ss = TcpipSocketStream.new(write,nil,nil,nil)
105
+ ss.connect
98
106
  ss.write('test')
99
107
  end
100
108
 
@@ -103,6 +111,7 @@ module Cosmos
103
111
  allow(write).to receive(:write_nonblock).and_raise(Errno::EWOULDBLOCK)
104
112
  expect(IO).to receive(:select).at_least(:once).and_return(nil)
105
113
  ss = TcpipSocketStream.new(write,nil,nil,nil)
114
+ ss.connect
106
115
  expect { ss.write('test') }.to raise_error(Timeout::Error)
107
116
  end
108
117
  end
@@ -113,6 +122,7 @@ module Cosmos
113
122
  expect(write).to receive(:closed?).and_return(false)
114
123
  expect(write).to receive(:close)
115
124
  ss = TcpipSocketStream.new(write,nil,nil,nil)
125
+ ss.connect
116
126
  ss.connected?.should be_truthy
117
127
  ss.disconnect
118
128
  ss.connected?.should be_falsey
@@ -123,6 +133,7 @@ module Cosmos
123
133
  expect(read).to receive(:closed?).and_return(false)
124
134
  expect(read).to receive(:close)
125
135
  ss = TcpipSocketStream.new(nil,read,nil,nil)
136
+ ss.connect
126
137
  ss.connected?.should be_truthy
127
138
  ss.disconnect
128
139
  ss.connected?.should be_falsey
@@ -130,9 +141,10 @@ module Cosmos
130
141
 
131
142
  it "shouldn't close the socket twice" do
132
143
  socket = double("socket")
133
- expect(socket).to receive(:closed?).and_return(false, true)
144
+ expect(socket).to receive(:closed?).and_return(false, true, true, true)
134
145
  expect(socket).to receive(:close).once
135
146
  ss = TcpipSocketStream.new(socket,socket,nil,nil)
147
+ ss.connect
136
148
  ss.connected?.should be_truthy
137
149
  ss.disconnect
138
150
  ss.connected?.should be_falsey
@@ -32,6 +32,7 @@ module Cosmos
32
32
  describe "connect" do
33
33
  it "should support an initial read delay" do
34
34
  class MyStream1 < Stream
35
+ def connect; end
35
36
  def read_nonblock; []; end
36
37
  end
37
38
  stream = MyStream1.new
@@ -46,6 +47,7 @@ module Cosmos
46
47
  it "should unblock the read queue" do
47
48
  tsp = TemplateStreamProtocol.new('0xABCD','0xABCD')
48
49
  class MyStream1 < Stream
50
+ def connect; end
49
51
  def disconnect; end
50
52
  end
51
53
  tsp.connect(MyStream1.new)
@@ -63,6 +65,7 @@ module Cosmos
63
65
  describe "read" do
64
66
  it "should read packets from the stream" do
65
67
  class MyStream < Stream
68
+ def connect; end
66
69
  def connected?; true; end
67
70
  def read
68
71
  case $index
@@ -91,6 +94,7 @@ module Cosmos
91
94
  it "should work without a response" do
92
95
  $buffer = ''
93
96
  class MyStream1 < Stream
97
+ def connect; end
94
98
  def connected?; true; end
95
99
  def write(buffer) $buffer = buffer; end
96
100
  end
@@ -112,6 +116,7 @@ module Cosmos
112
116
  $buffer = ''
113
117
  $read_cnt = 0
114
118
  class MyStream2 < Stream
119
+ def connect; end
115
120
  def connected?; true; end
116
121
  def write(buffer) $buffer = buffer; end
117
122
  def read
@@ -32,6 +32,7 @@ module Cosmos
32
32
  describe "read" do
33
33
  it "should read packets from the stream" do
34
34
  class MyStream < Stream
35
+ def connect; end
35
36
  def connected?; true; end
36
37
  def read
37
38
  case $index
@@ -57,6 +58,7 @@ module Cosmos
57
58
 
58
59
  it "should keep the the termination characters" do
59
60
  class MyStream < Stream
61
+ def connect; end
60
62
  def connected?; true; end
61
63
  def read
62
64
  case $index
@@ -86,6 +88,7 @@ module Cosmos
86
88
  describe "write" do
87
89
  it "should append termination characters to the packet" do
88
90
  class MyStream < Stream
91
+ def connect; end
89
92
  def connected?; true; end
90
93
  def write(data); $buffer = data; end
91
94
  end
@@ -104,6 +107,7 @@ module Cosmos
104
107
 
105
108
  it "should complain if the packet buffer contains the termination characters" do
106
109
  class MyStream < Stream
110
+ def connect; end
107
111
  def connected?; true; end
108
112
  def write(data); $buffer = data; end
109
113
  end
@@ -259,6 +259,27 @@ module Cosmos
259
259
  end
260
260
  end
261
261
 
262
+ context "with OPTION" do
263
+ it "should complain about too few parameters" do
264
+ tf = Tempfile.new('unittest')
265
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
266
+ tf.puts 'OPTION TRUE'
267
+ tf.close
268
+ expect { CmdTlmServerConfig.new(tf.path) }.to raise_error(ConfigParser::Error, "Not enough parameters for OPTION.")
269
+ tf.unlink
270
+ end
271
+
272
+ it "should set the interface to listen on a specific address" do
273
+ tf = Tempfile.new('unittest')
274
+ tf.puts "INTERFACE CtsConfigTestInterface cts_config_test_interface.rb"
275
+ tf.puts 'OPTION LISTEN_ADDRESS 127.0.0.1'
276
+ tf.close
277
+ config = CmdTlmServerConfig.new(tf.path)
278
+ config.interfaces['CTSCONFIGTESTINTERFACE'].options['LISTEN_ADDRESS'].should eql(['127.0.0.1'])
279
+ tf.unlink
280
+ end
281
+ end
282
+
262
283
  context "with LOG" do
263
284
  it "should complain about too many parameters" do
264
285
  tf = Tempfile.new('unittest')
@@ -408,4 +429,3 @@ module Cosmos
408
429
  end
409
430
  end
410
431
  end
411
-