cosmos 3.1.2 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
-