ruby-vnc 1.1.0 → 1.3.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.
- checksums.yaml +7 -0
- data/Changelog.rdoc +31 -0
- data/{README → README.rdoc} +12 -0
- data/Rakefile +23 -38
- data/lib/net/rfb/frame_buffer.rb +175 -0
- data/lib/net/vnc/version.rb +3 -4
- data/lib/net/vnc.rb +361 -300
- data/spec/real_net_vnc_spec.rb +76 -0
- metadata +123 -62
- data/ChangeLog +0 -13
- data/lib/cipher/des.rb +0 -439
- data/spec/cipher_des_spec.rb +0 -142
- data/spec/net_vnc_spec.rb +0 -136
data/spec/net_vnc_spec.rb
DELETED
@@ -1,136 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
-
require 'net/vnc'
|
3
|
-
|
4
|
-
=begin
|
5
|
-
class SocketMock
|
6
|
-
class MockIOError < IOError
|
7
|
-
end
|
8
|
-
|
9
|
-
def initialize
|
10
|
-
# this can be used to make detailed assertions
|
11
|
-
@trace = []
|
12
|
-
@read_buf = ''
|
13
|
-
@write_buf = ''
|
14
|
-
end
|
15
|
-
|
16
|
-
def read len
|
17
|
-
@trace << [:read, len]
|
18
|
-
if @read_buf.length < len
|
19
|
-
msg = 'bad socket read sequence - read(%d) but only %d byte(s) available' % [len, @read_buf.length]
|
20
|
-
raise MockIOError, msg
|
21
|
-
end
|
22
|
-
@read_buf.slice! 0, len
|
23
|
-
end
|
24
|
-
|
25
|
-
def write data
|
26
|
-
@trace << [:write, data]
|
27
|
-
@write_buf << data
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
class VNCServerSocketMock < SocketMock
|
32
|
-
TICK_TIME = 0.1
|
33
|
-
|
34
|
-
def initialize(&block)
|
35
|
-
super
|
36
|
-
|
37
|
-
@pending_read = nil
|
38
|
-
obj = self
|
39
|
-
@t = Thread.new { block.call obj; @pending_read = nil }
|
40
|
-
100.times do |i|
|
41
|
-
break if @pending_read
|
42
|
-
if i == 99
|
43
|
-
msg = 'blah'
|
44
|
-
raise MockIOError, msg
|
45
|
-
end
|
46
|
-
sleep TICK_TIME
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def run
|
51
|
-
yield
|
52
|
-
100.times do |i|
|
53
|
-
break unless @pending_read
|
54
|
-
if i == 99
|
55
|
-
msg = 'missing socket write sequence'
|
56
|
-
raise MockIOError, msg
|
57
|
-
end
|
58
|
-
sleep TICK_TIME
|
59
|
-
end
|
60
|
-
raise 'wrote to much' if @write_buf.length != 0
|
61
|
-
raise 'did not read enough' if @read_buf.length != 0
|
62
|
-
end
|
63
|
-
|
64
|
-
def read len
|
65
|
-
@trace << [:read, len]
|
66
|
-
100.times do |i|
|
67
|
-
break if @read_buf.length >= len
|
68
|
-
if i == 99
|
69
|
-
msg = 'timeout during socket read sequence - read(%d) but only %d byte(s) available' % [len, @read_buf.length]
|
70
|
-
raise MockIOError, msg
|
71
|
-
end
|
72
|
-
sleep TICK_TIME
|
73
|
-
end
|
74
|
-
@read_buf.slice! 0, len
|
75
|
-
end
|
76
|
-
|
77
|
-
def write data
|
78
|
-
unless @read_buf.empty?
|
79
|
-
raise MockIOError, 'tried to write with non empty read buffer - (%p, %p)' % [@read_buf, data]
|
80
|
-
end
|
81
|
-
super
|
82
|
-
if !@pending_read
|
83
|
-
raise MockIOError, "wrote to socket but server is not expecting it"
|
84
|
-
end
|
85
|
-
if @write_buf.length >= @pending_read
|
86
|
-
@pending_read = @write_buf.slice!(0, @pending_read)
|
87
|
-
sleep TICK_TIME while @pending_read.is_a? String
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
def provide_data data
|
92
|
-
@read_buf << data
|
93
|
-
end
|
94
|
-
|
95
|
-
def expect_data len
|
96
|
-
@pending_read = len
|
97
|
-
sleep TICK_TIME while @pending_read.is_a? Fixnum
|
98
|
-
@pending_read
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
describe 'Net::VNC' do
|
103
|
-
VNC = Net::VNC
|
104
|
-
|
105
|
-
it 'should do something' do
|
106
|
-
=begin
|
107
|
-
socket_mock.should_receive(:read).once.ordered.with(12).and_return("RFB 003.003\n")
|
108
|
-
socket_mock.should_receive(:write).once.ordered.with(/^RFB (\d{3}.\d{3})\n$/)
|
109
|
-
socket_mock.should_receive(:read).once.ordered.with(4).and_return([1].pack('N'))
|
110
|
-
socket_mock.should_receive(:write).once.ordered.with("\000")
|
111
|
-
socket_mock.should_receive(:read).once.ordered.with(20).and_return('')
|
112
|
-
socket_mock.should_receive(:read).once.ordered.with(4).and_return([0].pack('N'))
|
113
|
-
#m = mock('my mock')
|
114
|
-
#m.should_receive(:test1).ordered.once.with('argument').and_return(1)
|
115
|
-
#m.should_receive(:test2).ordered.once.with('argument').and_return(2)
|
116
|
-
#p m.test1('argument')
|
117
|
-
#p m.test2('argument')
|
118
|
-
vnc = VNC.open('192.168.0.1:0')
|
119
|
-
#=end
|
120
|
-
|
121
|
-
server = VNCServerSocketMock.new do |s|
|
122
|
-
s.provide_data "RFB 003.003\n"
|
123
|
-
p :read => s.expect_data(12)
|
124
|
-
s.provide_data [1].pack('N')
|
125
|
-
p :read => s.expect_data(1)
|
126
|
-
s.provide_data ' ' * 20
|
127
|
-
s.provide_data [0].pack('N')
|
128
|
-
end
|
129
|
-
server.run do
|
130
|
-
TCPSocket.should_receive(:open).with('192.168.0.1', 5900).and_return(server)
|
131
|
-
vnc = VNC.open('192.168.0.1:0')
|
132
|
-
end
|
133
|
-
end
|
134
|
-
end
|
135
|
-
=end
|
136
|
-
|