spec/interfaces/udp_interface_spec.rb in cosmos-3.0.1 vs spec/interfaces/udp_interface_spec.rb in cosmos-3.1.0
- old
+ new
@@ -1,177 +1,175 @@
-# encoding: ascii-8bit
-
-# Copyright 2014 Ball Aerospace & Technologies Corp.
-# All Rights Reserved.
-#
-# This program is free software; you can modify and/or redistribute it
-# under the terms of the GNU General Public License
-# as published by the Free Software Foundation; version 3 with
-# attribution addendums as found in the LICENSE.txt
-
-require 'spec_helper'
-require 'cosmos/interfaces/udp_interface'
-
-module Cosmos
-
- describe UdpInterface do
- describe "initialize" do
- it "should initialize the instance variables" do
- i = UdpInterface.new('localhost','8888','8889','8890','127.0.0.1','64','5','5')
- end
-
- it "should not be writeable if no write port given" do
- i = UdpInterface.new('localhost','nil','8889')
- i.name.should eql "Cosmos::UdpInterface"
- i.write_allowed?.should be_falsey
- i.write_raw_allowed?.should be_falsey
- i.read_allowed?.should be_truthy
- end
-
- it "should not be readable if no read port given" do
- i = UdpInterface.new('localhost','8888','nil')
- i.name.should eql "Cosmos::UdpInterface"
- i.write_allowed?.should be_truthy
- i.write_raw_allowed?.should be_truthy
- i.read_allowed?.should be_falsey
- end
- end
-
- describe "connect, connected?, disconnect" do
- it "should create a UdpWriteSocket and UdpReadSocket if both given" do
- write = double("write")
- expect(write).to receive(:closed?).and_return(false)
- expect(write).to receive(:close)
- read = double("read")
- expect(read).to receive(:closed?).and_return(false)
- expect(read).to receive(:close)
- expect(UdpWriteSocket).to receive(:new).and_return(write)
- expect(UdpReadSocket).to receive(:new).and_return(read)
- i = UdpInterface.new('localhost','8888','8889')
- i.connected?.should be_falsey
- i.connect
- i.connected?.should be_truthy
- i.disconnect
- i.connected?.should be_falsey
- end
-
- it "should create a UdpWriteSocket if write port given" do
- write = double("write")
- expect(write).to receive(:closed?).and_return(false)
- expect(write).to receive(:close)
- expect(UdpWriteSocket).to receive(:new).and_return(write)
- expect(UdpReadSocket).to_not receive(:new)
- i = UdpInterface.new('localhost','8888','nil')
- i.connected?.should be_falsey
- i.connect
- i.connected?.should be_truthy
- i.disconnect
- i.connected?.should be_falsey
- end
-
- it "should create a UdpReadSocket if read port given" do
- read = double("read")
- expect(read).to receive(:closed?).and_return(false)
- expect(read).to receive(:close)
- expect(UdpWriteSocket).to_not receive(:new)
- expect(UdpReadSocket).to receive(:new).and_return(read)
- i = UdpInterface.new('localhost','nil','8889')
- i.connected?.should be_falsey
- i.connect
- i.connected?.should be_truthy
- i.disconnect
- i.connected?.should be_falsey
- end
- end
-
- describe "disconnect" do
- it "should rescue IOError from close" do
- write = double("write")
- expect(write).to receive(:closed?).and_return(false)
- expect(write).to receive(:close).and_raise(IOError)
- read = double("read")
- expect(read).to receive(:closed?).and_return(false)
- expect(read).to receive(:close).and_raise(IOError)
- expect(UdpWriteSocket).to receive(:new).and_return(write)
- expect(UdpReadSocket).to receive(:new).and_return(read)
- i = UdpInterface.new('localhost','8888','8889')
- i.connected?.should be_falsey
- i.connect
- i.connected?.should be_truthy
- i.disconnect
- i.connected?.should be_falsey
- end
- end
-
- describe "read" do
- it "should stop the read thread if no read port given" do
- i = UdpInterface.new('localhost','8888','nil')
- thread = Thread.new { i.read }
- sleep 0.1
- thread.stop?.should be_truthy
- thread.kill
- thread.join
- end
-
- it "should stop the read thread if there is an IOError" do
- read = double("read")
- allow(read).to receive(:read).and_raise(IOError)
- expect(UdpReadSocket).to receive(:new).and_return(read)
- i = UdpInterface.new('localhost','nil','8889')
- i.connect
- thread = Thread.new { i.read }
- sleep 0.1
- thread.stop?.should be_truthy
- thread.kill
- thread.join
- end
-
- it "should count the packets received" do
- read = double("read")
- allow(read).to receive(:read) { "\x00\x01\x02\x03" }
- expect(UdpReadSocket).to receive(:new).and_return(read)
- i = UdpInterface.new('localhost','nil','8889')
- i.connect
- i.read_count.should eql 0
- i.bytes_read.should eql 0
- i.read
- i.read_count.should eql 1
- i.bytes_read.should eql 4
- i.read
- i.read_count.should eql 2
- i.bytes_read.should eql 8
- end
- end
-
- describe "write, write_raw" do
- it "should complain if write_dest not given" do
- i = UdpInterface.new('localhost','nil','8889')
- expect { i.write(Packet.new('','')) }.to raise_error(/read only/)
- expect { i.write_raw('') }.to raise_error(/read only/)
- end
-
- it "should complain if the server is not connected" do
- i = UdpInterface.new('localhost','8888','nil')
- expect { i.write(Packet.new('','')) }.to raise_error(/Interface not connected/)
- expect { i.write_raw('') }.to raise_error(/Interface not connected/)
- end
-
- it "should count the packets written" do
- write = double("write")
- expect(UdpWriteSocket).to receive(:new).and_return(write)
- allow(write).to receive(:write)
- i = UdpInterface.new('localhost','8888','nil')
- i.connect
- i.write_count.should eql 0
- pkt = Packet.new('tgt','pkt')
- pkt.buffer = "\x00\x01\x02\x03"
- i.write(pkt)
- i.write_count.should eql 1
- i.bytes_written.should eql 4
- i.write_raw(pkt.buffer)
- i.write_count.should eql 2
- i.bytes_written.should eql 8
- end
- end
- end
-end
-
+# encoding: ascii-8bit
+
+# Copyright 2014 Ball Aerospace & Technologies Corp.
+# All Rights Reserved.
+#
+# This program is free software; you can modify and/or redistribute it
+# under the terms of the GNU General Public License
+# as published by the Free Software Foundation; version 3 with
+# attribution addendums as found in the LICENSE.txt
+
+require 'spec_helper'
+require 'cosmos/interfaces/udp_interface'
+
+module Cosmos
+
+ describe UdpInterface do
+ describe "initialize" do
+ it "should initialize the instance variables" do
+ i = UdpInterface.new('localhost','8888','8889','8890','127.0.0.1','64','5','5')
+ end
+
+ it "should not be writeable if no write port given" do
+ i = UdpInterface.new('localhost','nil','8889')
+ i.name.should eql "Cosmos::UdpInterface"
+ i.write_allowed?.should be_falsey
+ i.write_raw_allowed?.should be_falsey
+ i.read_allowed?.should be_truthy
+ end
+
+ it "should not be readable if no read port given" do
+ i = UdpInterface.new('localhost','8888','nil')
+ i.name.should eql "Cosmos::UdpInterface"
+ i.write_allowed?.should be_truthy
+ i.write_raw_allowed?.should be_truthy
+ i.read_allowed?.should be_falsey
+ end
+ end
+
+ describe "connect, connected?, disconnect" do
+ it "should create a UdpWriteSocket and UdpReadSocket if both given" do
+ write = double("write")
+ expect(write).to receive(:closed?).and_return(false)
+ expect(write).to receive(:close)
+ read = double("read")
+ expect(read).to receive(:closed?).and_return(false)
+ expect(read).to receive(:close)
+ expect(UdpWriteSocket).to receive(:new).and_return(write)
+ expect(UdpReadSocket).to receive(:new).and_return(read)
+ i = UdpInterface.new('localhost','8888','8889')
+ i.connected?.should be_falsey
+ i.connect
+ i.connected?.should be_truthy
+ i.disconnect
+ i.connected?.should be_falsey
+ end
+
+ it "should create a UdpWriteSocket if write port given" do
+ write = double("write")
+ expect(write).to receive(:closed?).and_return(false)
+ expect(write).to receive(:close)
+ expect(UdpWriteSocket).to receive(:new).and_return(write)
+ expect(UdpReadSocket).to_not receive(:new)
+ i = UdpInterface.new('localhost','8888','nil')
+ i.connected?.should be_falsey
+ i.connect
+ i.connected?.should be_truthy
+ i.disconnect
+ i.connected?.should be_falsey
+ end
+
+ it "should create a UdpReadSocket if read port given" do
+ read = double("read")
+ expect(read).to receive(:closed?).and_return(false)
+ expect(read).to receive(:close)
+ expect(UdpWriteSocket).to_not receive(:new)
+ expect(UdpReadSocket).to receive(:new).and_return(read)
+ i = UdpInterface.new('localhost','nil','8889')
+ i.connected?.should be_falsey
+ i.connect
+ i.connected?.should be_truthy
+ i.disconnect
+ i.connected?.should be_falsey
+ end
+ end
+
+ describe "disconnect" do
+ it "should rescue IOError from close" do
+ write = double("write")
+ expect(write).to receive(:closed?).and_return(false)
+ expect(write).to receive(:close).and_raise(IOError)
+ read = double("read")
+ expect(read).to receive(:closed?).and_return(false)
+ expect(read).to receive(:close).and_raise(IOError)
+ expect(UdpWriteSocket).to receive(:new).and_return(write)
+ expect(UdpReadSocket).to receive(:new).and_return(read)
+ i = UdpInterface.new('localhost','8888','8889')
+ i.connected?.should be_falsey
+ i.connect
+ i.connected?.should be_truthy
+ i.disconnect
+ i.connected?.should be_falsey
+ end
+ end
+
+ describe "read" do
+ it "should stop the read thread if no read port given" do
+ i = UdpInterface.new('localhost','8888','nil')
+ thread = Thread.new { i.read }
+ sleep 0.1
+ thread.stop?.should be_truthy
+ Cosmos.kill_thread(nil, thread)
+ end
+
+ it "should stop the read thread if there is an IOError" do
+ read = double("read")
+ allow(read).to receive(:read).and_raise(IOError)
+ expect(UdpReadSocket).to receive(:new).and_return(read)
+ i = UdpInterface.new('localhost','nil','8889')
+ i.connect
+ thread = Thread.new { i.read }
+ sleep 0.1
+ thread.stop?.should be_truthy
+ Cosmos.kill_thread(nil, thread)
+ end
+
+ it "should count the packets received" do
+ read = double("read")
+ allow(read).to receive(:read) { "\x00\x01\x02\x03" }
+ expect(UdpReadSocket).to receive(:new).and_return(read)
+ i = UdpInterface.new('localhost','nil','8889')
+ i.connect
+ i.read_count.should eql 0
+ i.bytes_read.should eql 0
+ i.read
+ i.read_count.should eql 1
+ i.bytes_read.should eql 4
+ i.read
+ i.read_count.should eql 2
+ i.bytes_read.should eql 8
+ end
+ end
+
+ describe "write, write_raw" do
+ it "should complain if write_dest not given" do
+ i = UdpInterface.new('localhost','nil','8889')
+ expect { i.write(Packet.new('','')) }.to raise_error(/read only/)
+ expect { i.write_raw('') }.to raise_error(/read only/)
+ end
+
+ it "should complain if the server is not connected" do
+ i = UdpInterface.new('localhost','8888','nil')
+ expect { i.write(Packet.new('','')) }.to raise_error(/Interface not connected/)
+ expect { i.write_raw('') }.to raise_error(/Interface not connected/)
+ end
+
+ it "should count the packets written" do
+ write = double("write")
+ expect(UdpWriteSocket).to receive(:new).and_return(write)
+ allow(write).to receive(:write)
+ i = UdpInterface.new('localhost','8888','nil')
+ i.connect
+ i.write_count.should eql 0
+ pkt = Packet.new('tgt','pkt')
+ pkt.buffer = "\x00\x01\x02\x03"
+ i.write(pkt)
+ i.write_count.should eql 1
+ i.bytes_written.should eql 4
+ i.write_raw(pkt.buffer)
+ i.write_count.should eql 2
+ i.bytes_written.should eql 8
+ end
+ end
+ end
+end
+