-
Notifications
You must be signed in to change notification settings - Fork 45
/
logging_spec.rb
84 lines (69 loc) · 3.18 KB
/
logging_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# -*- coding: ascii
require 'rmodbus'
describe ModBus::TCPClient do
before(:each) do
@uid = 1
@sock = mock("Socket")
@adu = "\000\001\000\000\000\001\001"
TCPSocket.should_receive(:new).with('127.0.0.1', 1502).and_return(@sock)
@sock.stub!(:read).with(0).and_return('')
@slave = ModBus::TCPClient.new('127.0.0.1', 1502).with_slave(@uid)
@slave.debug = true
end
it 'should log rec\send bytes' do
request, response = "\x3\x0\x6b\x0\x3", "\x3\x6\x2\x2b\x0\x0\x0\x64"
mock_query(request,response)
$stdout.should_receive(:puts).with("Tx (12 bytes): [00][01][00][00][00][06][01][03][00][6b][00][03]")
$stdout.should_receive(:puts).with("Rx (15 bytes): [00][01][00][00][00][09][01][03][06][02][2b][00][00][00][64]")
@slave.query(request)
end
it "should don't logging if debug disable" do
@slave.debug = false
request, response = "\x3\x0\x6b\x0\x3", "\x3\x6\x2\x2b\x0\x0\x0\x64"
mock_query(request,response)
@slave.query(request)
end
it "should log warn message if transaction mismatch" do
@adu[0,2] = @slave.transaction.next.to_word
@sock.should_receive(:write).with(@adu)
@sock.should_receive(:read).with(7).and_return("\000\002\000\000\000\001" + @uid.chr)
@sock.should_receive(:read).with(7).and_return("\000\001\000\000\000\001" + @uid.chr)
$stdout.should_receive(:puts).with("Tx (7 bytes): [00][01][00][00][00][01][01]")
$stdout.should_receive(:puts).with("Rx (7 bytes): [00][02][00][00][00][01][01]")
$stdout.should_receive(:puts).with("Transaction number mismatch. A packet is ignored.")
$stdout.should_receive(:puts).with("Rx (7 bytes): [00][01][00][00][00][01][01]")
@slave.query('')
end
def mock_query(request, response)
@adu = @slave.transaction.next.to_word + "\x0\x0\x0\x9" + @uid.chr + request
@sock.should_receive(:write).with(@adu[0,4] + "\0\6" + @uid.chr + request)
@sock.should_receive(:read).with(7).and_return(@adu[0,7])
@sock.should_receive(:read).with(8).and_return(response)
end
end
begin
require "serialport"
describe ModBus::RTUClient do
before do
@sp = mock('Serial port')
SerialPort.should_receive(:new).with("/dev/port1", 9600, 7, 2, SerialPort::ODD).and_return(@sp)
@sp.should_receive(:flow_control=).with(SerialPort::NONE)
@sp.stub!(:read_timeout=)
@slave = ModBus::RTUClient.new("/dev/port1", 9600, :data_bits => 7, :stop_bits => 2, :parity => SerialPort::ODD).with_slave(1)
@slave.read_retries = 0
end
it 'should log rec\send bytes' do
request = "\x3\x0\x1\x0\x1"
@sp.should_receive(:write).with("\1#{request}\xd5\xca")
@sp.should_receive(:read_nonblock).and_return("\xff\xff") # Clean a garbage
@sp.should_receive(:read).with(2).and_return("\x1\x3")
@sp.should_receive(:read).with(1).and_return("\x2")
@sp.should_receive(:read).with(4).and_return("\xff\xff\xb9\xf4")
@slave.debug = true
$stdout.should_receive(:puts).with("Tx (8 bytes): [01][03][00][01][00][01][d5][ca]")
$stdout.should_receive(:puts).with("Rx (7 bytes): [01][03][02][ff][ff][b9][f4]")
@slave.query(request).should == "\xff\xff"
end
end
rescue LoadError
end