2012-07-02 15:37:52 +01:00
|
|
|
#!/usr/bin/env ruby
|
|
|
|
# Connect, read the hello then make a write request with an impossible
|
|
|
|
# (from,len) pair. We expect an error response, and not to be
|
|
|
|
# disconnected.
|
2012-07-15 23:19:12 +01:00
|
|
|
#
|
|
|
|
# We then expect to be able to issue a successful write: the destination
|
|
|
|
# has to flush the data in the socket.
|
2012-07-02 15:37:52 +01:00
|
|
|
|
|
|
|
require 'flexnbd/fake_source'
|
2012-07-03 14:39:05 +01:00
|
|
|
include FlexNBD
|
2012-07-02 15:37:52 +01:00
|
|
|
|
|
|
|
addr, port = *ARGV
|
2012-07-03 14:39:05 +01:00
|
|
|
|
2018-02-02 21:34:14 +00:00
|
|
|
client = FakeSource.new(addr, port, 'Timed out connecting')
|
2012-07-15 23:19:12 +01:00
|
|
|
hello = client.read_hello
|
2018-02-02 21:34:14 +00:00
|
|
|
client.write_write_request(hello[:size] + 1, 32, 'myhandle')
|
|
|
|
client.write_data('1' * 32)
|
2012-07-03 14:39:05 +01:00
|
|
|
response = client.read_response
|
2012-07-02 15:37:52 +01:00
|
|
|
|
2018-02-02 21:34:14 +00:00
|
|
|
raise 'Not an error' if response[:error] == 0
|
|
|
|
raise 'Wrong handle' unless response[:handle] == 'myhandle'
|
2012-07-02 15:37:52 +01:00
|
|
|
|
2018-02-02 21:34:14 +00:00
|
|
|
client.write_write_request(0, 32)
|
|
|
|
client.write_data('2' * 32)
|
2012-07-15 23:19:12 +01:00
|
|
|
success_response = client.read_response
|
|
|
|
|
2018-02-02 21:34:14 +00:00
|
|
|
raise 'Second write failed' unless success_response[:error] == 0
|
2012-07-15 23:19:12 +01:00
|
|
|
|
2012-07-03 14:39:05 +01:00
|
|
|
client.close
|
2012-07-02 15:37:52 +01:00
|
|
|
exit(0)
|