eventmachine 1.2.1-x86-mingw32 → 1.2.2-x86-mingw32

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0b338ad9a3e4ff132af4a10fe58e2792d06a587a
4
- data.tar.gz: 3d75940509d1f411eba0100195408dcbedc39f3a
3
+ metadata.gz: 7da92aa45c5a15427b4f22791b55c70432e2ff46
4
+ data.tar.gz: 31c2fb1ef70b792868b994f217c66212ad312d40
5
5
  SHA512:
6
- metadata.gz: 359b6a9186f726223fcabc901a8950697d34411d16e7fb69c1b2feea7dc7ca36e3140f55bd2c5c27555a3b95d8d2890715eb95e4fa3d897d3b7123dd3a6c9fbf
7
- data.tar.gz: ba8ff61fce1735e582c5c757e2bd7a6f68d3e978d0fbef09817b163a4c6f5e231d51793fafe3d44699849f700617ab8f8858f90b94575ed2c1967a5b0c3a3ae8
6
+ metadata.gz: 5cecc62d68106d9490a2bfcceab90430efb2b12b76d46c1f10026013d69a5b2951d629262d7d4d9f7358327b09b250511ccd083b2864a076e0efe4de5f35d5de
7
+ data.tar.gz: 8c1fa375528e06b5a30b00af87a0facd810ddd20c5ce0b70075dbf692766d3dcdda205c7be48ad1b1fd91da864a7f1ca650a5fb6efe46c700168172bb73e0724
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.2.2 (January 23, 2016)
4
+ * Java: Fix Fixnum deprecated warning in Ruby 2.4+ [#759]
5
+ * Fix uncaught C++ exception in file watcher and raise InvalidSignature [#512, #757]
6
+ * Fix connection count off-by-one for epoll and kqueue [#750]
7
+ * Fix uninitialized variable warning in EM::P::HttpClient [#749]
8
+ * Fix missing initial value for EventableDescriptor NextHeartbeat [#748]
9
+ * Fix hostname resolution on Solaris, Ilumos, SmartOS, et al [#745, #746]
10
+ * Improve reliability of tests, reduce public Internet accesses in tests [#656, #666, #749]
11
+
3
12
  ## 1.2.1 (November 15, 2016)
4
13
  * Throw strerror(errno) when getsockname or getpeername fail [#683]
5
14
  * Use a single concrete implementation of getpeername/getsockname, the rest pure virtuals [#683]
data/ext/ed.cpp CHANGED
@@ -84,6 +84,7 @@ EventableDescriptor::EventableDescriptor (SOCKET sd, EventMachine_t *em):
84
84
  MyEventMachine (em),
85
85
  PendingConnectTimeout(20000000),
86
86
  InactivityTimeout (0),
87
+ NextHeartbeat (0),
87
88
  bPaused (false)
88
89
  {
89
90
  /* There are three ways to close a socket, all of which should
@@ -112,12 +113,12 @@ EventableDescriptor::EventableDescriptor (SOCKET sd, EventMachine_t *em):
112
113
  if (MyEventMachine == NULL)
113
114
  throw std::runtime_error ("bad em in eventable descriptor");
114
115
  CreatedAt = MyEventMachine->GetCurrentLoopTime();
116
+ LastActivity = MyEventMachine->GetCurrentLoopTime();
115
117
 
116
118
  #ifdef HAVE_EPOLL
117
119
  EpollEvent.events = 0;
118
120
  EpollEvent.data.ptr = this;
119
121
  #endif
120
- LastActivity = MyEventMachine->GetCurrentLoopTime();
121
122
  }
122
123
 
123
124
 
@@ -1944,7 +1945,7 @@ int DatagramDescriptor::SendOutboundDatagram (const char *data, unsigned long le
1944
1945
 
1945
1946
  struct sockaddr_in6 addr_here;
1946
1947
  size_t addr_here_len = sizeof addr_here;
1947
- if (0 != EventMachine_t::name2address (address, port, (struct sockaddr *)&addr_here, &addr_here_len))
1948
+ if (0 != EventMachine_t::name2address (address, port, SOCK_DGRAM, (struct sockaddr *)&addr_here, &addr_here_len))
1948
1949
  return -1;
1949
1950
 
1950
1951
  if (!data && (length > 0))
data/ext/em.cpp CHANGED
@@ -1194,7 +1194,7 @@ const uintptr_t EventMachine_t::ConnectToServer (const char *bind_addr, int bind
1194
1194
 
1195
1195
  struct sockaddr_storage bind_as;
1196
1196
  size_t bind_as_len = sizeof bind_as;
1197
- int gai = name2address (server, port, (struct sockaddr *)&bind_as, &bind_as_len);
1197
+ int gai = name2address (server, port, SOCK_STREAM, (struct sockaddr *)&bind_as, &bind_as_len);
1198
1198
  if (gai != 0) {
1199
1199
  char buf [200];
1200
1200
  snprintf (buf, sizeof(buf)-1, "unable to resolve address: %s", gai_strerror(gai));
@@ -1223,7 +1223,7 @@ const uintptr_t EventMachine_t::ConnectToServer (const char *bind_addr, int bind
1223
1223
  if (bind_addr) {
1224
1224
  struct sockaddr_storage bind_to;
1225
1225
  size_t bind_to_len = sizeof bind_to;
1226
- gai = name2address (bind_addr, bind_port, (struct sockaddr *)&bind_to, &bind_to_len);
1226
+ gai = name2address (bind_addr, bind_port, SOCK_STREAM, (struct sockaddr *)&bind_to, &bind_to_len);
1227
1227
  if (gai != 0) {
1228
1228
  close (sd);
1229
1229
  char buf [200];
@@ -1543,7 +1543,7 @@ int EventMachine_t::DetachFD (EventableDescriptor *ed)
1543
1543
  name2address
1544
1544
  ************/
1545
1545
 
1546
- int EventMachine_t::name2address (const char *server, int port, struct sockaddr *addr, size_t *addr_len)
1546
+ int EventMachine_t::name2address (const char *server, int port, int socktype, struct sockaddr *addr, size_t *addr_len)
1547
1547
  {
1548
1548
  if (!server || !*server)
1549
1549
  server = "0.0.0.0";
@@ -1551,6 +1551,7 @@ int EventMachine_t::name2address (const char *server, int port, struct sockaddr
1551
1551
  struct addrinfo *ai;
1552
1552
  struct addrinfo hints;
1553
1553
  memset (&hints, 0, sizeof(hints));
1554
+ hints.ai_socktype = socktype;
1554
1555
  hints.ai_family = AF_UNSPEC;
1555
1556
  hints.ai_flags = AI_NUMERICSERV | AI_ADDRCONFIG;
1556
1557
 
@@ -1584,7 +1585,7 @@ const uintptr_t EventMachine_t::CreateTcpServer (const char *server, int port)
1584
1585
 
1585
1586
  struct sockaddr_storage bind_here;
1586
1587
  size_t bind_here_len = sizeof bind_here;
1587
- if (0 != name2address (server, port, (struct sockaddr *)&bind_here, &bind_here_len))
1588
+ if (0 != name2address (server, port, SOCK_STREAM, (struct sockaddr *)&bind_here, &bind_here_len))
1588
1589
  return 0;
1589
1590
 
1590
1591
  SOCKET sd_accept = EmSocket (bind_here.ss_family, SOCK_STREAM, 0);
@@ -1639,7 +1640,7 @@ const uintptr_t EventMachine_t::OpenDatagramSocket (const char *address, int por
1639
1640
 
1640
1641
  struct sockaddr_storage bind_here;
1641
1642
  size_t bind_here_len = sizeof bind_here;
1642
- if (0 != name2address (address, port, (struct sockaddr *)&bind_here, &bind_here_len))
1643
+ if (0 != name2address (address, port, SOCK_DGRAM, (struct sockaddr *)&bind_here, &bind_here_len))
1643
1644
  return 0;
1644
1645
 
1645
1646
  // from here on, early returns must close the socket!
@@ -2087,7 +2088,12 @@ EventMachine_t::GetConnectionCount
2087
2088
 
2088
2089
  int EventMachine_t::GetConnectionCount ()
2089
2090
  {
2090
- return Descriptors.size() + NewDescriptors.size();
2091
+ int i = 0;
2092
+ // Subtract one for epoll or kqueue because of the LoopbreakDescriptor
2093
+ if (Poller == Poller_Epoll || Poller == Poller_Kqueue)
2094
+ i = 1;
2095
+
2096
+ return Descriptors.size() + NewDescriptors.size() - i;
2091
2097
  }
2092
2098
 
2093
2099
 
data/ext/em.h CHANGED
@@ -201,7 +201,7 @@ class EventMachine_t
201
201
 
202
202
  Poller_t GetPoller() { return Poller; }
203
203
 
204
- static int name2address (const char *server, int port, struct sockaddr *addr, size_t *addr_len);
204
+ static int name2address (const char *server, int port, int socktype, struct sockaddr *addr, size_t *addr_len);
205
205
 
206
206
  private:
207
207
  void _RunTimers();
data/ext/rubymain.cpp CHANGED
@@ -58,6 +58,7 @@ static VALUE EM_eConnectionError;
58
58
  static VALUE EM_eUnknownTimerFired;
59
59
  static VALUE EM_eConnectionNotBound;
60
60
  static VALUE EM_eUnsupported;
61
+ static VALUE EM_eInvalidSignature;
61
62
 
62
63
  static VALUE Intern_at_signature;
63
64
  static VALUE Intern_at_timers;
@@ -1036,7 +1037,12 @@ t_unwatch_filename
1036
1037
 
1037
1038
  static VALUE t_unwatch_filename (VALUE self UNUSED, VALUE sig)
1038
1039
  {
1039
- evma_unwatch_filename(NUM2BSIG (sig));
1040
+ try {
1041
+ evma_unwatch_filename(NUM2BSIG (sig));
1042
+ } catch (std::runtime_error e) {
1043
+ rb_raise (EM_eInvalidSignature, "%s", e.what());
1044
+ }
1045
+
1040
1046
  return Qnil;
1041
1047
  }
1042
1048
 
@@ -1389,6 +1395,7 @@ extern "C" void Init_rubyeventmachine()
1389
1395
  EM_eConnectionNotBound = rb_define_class_under (EmModule, "ConnectionNotBound", rb_eRuntimeError);
1390
1396
  EM_eUnknownTimerFired = rb_define_class_under (EmModule, "UnknownTimerFired", rb_eRuntimeError);
1391
1397
  EM_eUnsupported = rb_define_class_under (EmModule, "Unsupported", rb_eRuntimeError);
1398
+ EM_eInvalidSignature = rb_define_class_under (EmModule, "InvalidSignature", rb_eRuntimeError);
1392
1399
 
1393
1400
  rb_define_module_function (EmModule, "initialize_event_machine", (VALUE(*)(...))t_initialize_event_machine, 0);
1394
1401
  rb_define_module_function (EmModule, "run_machine_once", (VALUE(*)(...))t_run_machine_once, 0);
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -62,6 +62,7 @@ module EventMachine
62
62
 
63
63
  def initialize
64
64
  warn "HttpClient is deprecated and will be removed. EM-Http-Request should be used instead."
65
+ @connected = false
65
66
  end
66
67
 
67
68
  # @param args [Hash] The request arguments
data/lib/em/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module EventMachine
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.2"
3
3
  end
data/lib/jeventmachine.rb CHANGED
@@ -226,12 +226,12 @@ module EventMachine
226
226
  field.setAccessible(true)
227
227
  fileno = field.get(fileno)
228
228
  else
229
- raise ArgumentError, 'attach_fd requires Java Channel or POSIX fileno' unless fileno.is_a? Fixnum
229
+ raise ArgumentError, 'attach_fd requires Java Channel or POSIX fileno' unless fileno.is_a? Integer
230
230
  end
231
231
 
232
232
  if fileno == 0
233
233
  raise "can't open STDIN as selectable in Java =("
234
- elsif fileno.is_a? Fixnum
234
+ elsif fileno.is_a? Integer
235
235
  # 8Aug09: The following code is specific to the sun jvm's SocketChannelImpl. Is there a cross-platform
236
236
  # way of implementing this? If so, also remember to update EventableSocketChannel#close and #cleanup
237
237
  fd = FileDescriptor.new
data/tests/test_basic.rb CHANGED
@@ -146,7 +146,7 @@ class TestBasic < Test::Unit::TestCase
146
146
  def test_bind_connect
147
147
  pend('FIXME: this test is broken on Windows') if windows?
148
148
 
149
- local_ip = UDPSocket.open {|s| s.connect('google.com', 80); s.addr.last }
149
+ local_ip = UDPSocket.open {|s| s.connect('localhost', 80); s.addr.last }
150
150
 
151
151
  bind_port = next_port
152
152
 
@@ -1,13 +1,42 @@
1
1
  require 'em_test_helper'
2
2
 
3
3
  class TestConnectionCount < Test::Unit::TestCase
4
+ def teardown
5
+ EM.epoll = false
6
+ EM.kqueue = false
7
+ end
8
+
4
9
  def test_idle_connection_count
10
+ count = nil
5
11
  EM.run {
6
- $count = EM.connection_count
12
+ count = EM.connection_count
7
13
  EM.stop_event_loop
8
14
  }
15
+ assert_equal(0, count)
16
+ end
17
+
18
+ # Run this again with epoll enabled (if available)
19
+ def test_idle_connection_count_epoll
20
+ EM.epoll if EM.epoll?
9
21
 
10
- assert_equal(0, $count)
22
+ count = nil
23
+ EM.run {
24
+ count = EM.connection_count
25
+ EM.stop_event_loop
26
+ }
27
+ assert_equal(0, count)
28
+ end
29
+
30
+ # Run this again with kqueue enabled (if available)
31
+ def test_idle_connection_count_kqueue
32
+ EM.kqueue if EM.kqueue?
33
+
34
+ count = nil
35
+ EM.run {
36
+ count = EM.connection_count
37
+ EM.stop_event_loop
38
+ }
39
+ assert_equal(0, count)
11
40
  end
12
41
 
13
42
  module Client
@@ -55,6 +55,25 @@ class TestFileWatch < Test::Unit::TestCase
55
55
  assert($deleted)
56
56
  assert($unbind)
57
57
  end
58
+
59
+ # Refer: https://github.com/eventmachine/eventmachine/issues/512
60
+ def test_invalid_signature
61
+ # This works fine with kqueue, only fails with linux inotify.
62
+ omit_if(EM.kqueue?)
63
+
64
+ EM.run {
65
+ file = Tempfile.new('foo')
66
+
67
+ w1 = EventMachine.watch_file(file.path)
68
+ w2 = EventMachine.watch_file(file.path)
69
+
70
+ assert_raise EventMachine::InvalidSignature do
71
+ w2.stop_watching
72
+ end
73
+
74
+ EM.stop
75
+ }
76
+ end
58
77
  else
59
78
  warn "EM.watch_file not implemented, skipping tests in #{__FILE__}"
60
79
 
@@ -2,13 +2,8 @@ require 'em_test_helper'
2
2
 
3
3
  class TestHttpClient < Test::Unit::TestCase
4
4
 
5
- Localhost = "127.0.0.1"
6
- Localport = 9801
7
-
8
5
  def setup
9
- end
10
-
11
- def teardown
6
+ @port = next_port
12
7
  end
13
8
 
14
9
  #-------------------------------------
@@ -19,6 +14,7 @@ class TestHttpClient < Test::Unit::TestCase
19
14
  c = silent { EM::P::HttpClient.send :request, :host => "www.google.com", :port => 80 }
20
15
  c.callback {
21
16
  ok = true
17
+ c.close_connection
22
18
  EM.stop
23
19
  }
24
20
  c.errback {EM.stop} # necessary, otherwise a failure blocks the test suite forever.
@@ -32,7 +28,11 @@ class TestHttpClient < Test::Unit::TestCase
32
28
  ok = false
33
29
  EM.run {
34
30
  c = silent { EM::P::HttpClient.send :request, :host => "www.google.com", :port => 80 }
35
- c.callback {ok = true; EM.stop}
31
+ c.callback {
32
+ ok = true
33
+ c.close_connection
34
+ EM.stop
35
+ }
36
36
  c.errback {EM.stop}
37
37
  }
38
38
  assert ok
@@ -44,8 +44,9 @@ class TestHttpClient < Test::Unit::TestCase
44
44
  ok = false
45
45
  EM.run {
46
46
  c = silent { EM::P::HttpClient.send :request, :host => "www.google.com", :port => 80 }
47
- c.callback {|result|
48
- ok = true;
47
+ c.callback {
48
+ ok = true
49
+ c.close_connection
49
50
  EM.stop
50
51
  }
51
52
  c.errback {EM.stop}
@@ -74,10 +75,11 @@ class TestHttpClient < Test::Unit::TestCase
74
75
  def test_http_empty_content
75
76
  ok = false
76
77
  EM.run {
77
- EM.start_server "127.0.0.1", 9701, EmptyContent
78
- c = silent { EM::P::HttpClient.send :request, :host => "127.0.0.1", :port => 9701 }
79
- c.callback {|result|
78
+ EM.start_server "127.0.0.1", @port, EmptyContent
79
+ c = silent { EM::P::HttpClient.send :request, :host => "127.0.0.1", :port => @port }
80
+ c.callback {
80
81
  ok = true
82
+ c.close_connection
81
83
  EM.stop
82
84
  }
83
85
  }
@@ -132,15 +134,15 @@ class TestHttpClient < Test::Unit::TestCase
132
134
  def test_post
133
135
  response = nil
134
136
  EM.run {
135
- EM.start_server Localhost, Localport, PostContent
137
+ EM.start_server '127.0.0.1', @port, PostContent
136
138
  setup_timeout(2)
137
139
  c = silent { EM::P::HttpClient.request(
138
- :host=>Localhost,
139
- :port=>Localport,
140
- :method=>:post,
141
- :request=>"/aaa",
142
- :content=>"XYZ",
143
- :content_type=>"text/plain"
140
+ :host => '127.0.0.1',
141
+ :port => @port,
142
+ :method => :post,
143
+ :request => "/aaa",
144
+ :content => "XYZ",
145
+ :content_type => "text/plain"
144
146
  )}
145
147
  c.callback {|r|
146
148
  response = r
@@ -159,8 +161,9 @@ class TestHttpClient < Test::Unit::TestCase
159
161
  ok = false
160
162
  EM.run {
161
163
  c = silent { EM::Protocols::HttpClient.send :request, :host => "www.google.com", :port => 80, :cookie=>"aaa=bbb" }
162
- c.callback {|result|
163
- ok = true;
164
+ c.callback {
165
+ ok = true
166
+ c.close_connection
164
167
  EM.stop
165
168
  }
166
169
  c.errback {EM.stop}
@@ -178,8 +181,9 @@ class TestHttpClient < Test::Unit::TestCase
178
181
  :port => 80,
179
182
  :version => "1.0"
180
183
  )}
181
- c.callback {|result|
182
- ok = true;
184
+ c.callback {
185
+ ok = true
186
+ c.close_connection
183
187
  EM.stop
184
188
  }
185
189
  c.errback {EM.stop}
@@ -215,14 +219,15 @@ class TestHttpClient < Test::Unit::TestCase
215
219
 
216
220
  def test_http_chunked_encoding_content
217
221
  ok = false
218
- EventMachine.run {
219
- EventMachine.start_server "127.0.0.1", 9701, ChunkedEncodingContent
220
- c = EventMachine::Protocols::HttpClient.send :request, :host => "127.0.0.1", :port => 9701
221
- c.callback {|result|
222
+ EM.run {
223
+ EM.start_server "127.0.0.1", @port, ChunkedEncodingContent
224
+ c = silent { EM::P::HttpClient.send :request, :host => "127.0.0.1", :port => @port }
225
+ c.callback { |result|
222
226
  if result[:content] == "chunk1" * 1024 + "chunk2" * 15
223
227
  ok = true
224
228
  end
225
- EventMachine.stop
229
+ c.close_connection
230
+ EM.stop
226
231
  }
227
232
  }
228
233
  assert ok
@@ -1,17 +1,11 @@
1
1
  require 'em_test_helper'
2
2
 
3
3
  class TestHttpClient2 < Test::Unit::TestCase
4
- Localhost = "127.0.0.1"
5
- Localport = 9801
6
-
7
- def setup
8
- end
9
-
10
- def teardown
4
+ class TestServer < EM::Connection
11
5
  end
12
6
 
13
-
14
- class TestServer < EM::Connection
7
+ def setup
8
+ @port = next_port
15
9
  end
16
10
 
17
11
  # #connect returns an object which has made a connection to an HTTP server
@@ -21,21 +15,22 @@ class TestHttpClient2 < Test::Unit::TestCase
21
15
  #
22
16
  def test_connect
23
17
  EM.run {
24
- EM.start_server Localhost, Localport, TestServer
18
+ setup_timeout(1)
19
+ EM.start_server '127.0.0.1', @port, TestServer
25
20
  silent do
26
- EM::P::HttpClient2.connect Localhost, Localport
27
- EM::P::HttpClient2.connect( :host=>Localhost, :port=>Localport )
21
+ EM::P::HttpClient2.connect '127.0.0.1', @port
22
+ EM::P::HttpClient2.connect( :host=>'127.0.0.1', :port=>@port )
28
23
  end
29
24
  EM.stop
30
25
  }
31
26
  end
32
27
 
33
-
34
28
  def test_bad_port
35
29
  EM.run {
36
- EM.start_server Localhost, Localport, TestServer
30
+ setup_timeout(1)
31
+ EM.start_server '127.0.0.1', @port, TestServer
37
32
  assert_raises( ArgumentError ) {
38
- silent { EM::P::HttpClient2.connect Localhost, "xxx" }
33
+ silent { EM::P::HttpClient2.connect '127.0.0.1', "xxx" }
39
34
  }
40
35
  EM.stop
41
36
  }
@@ -44,7 +39,8 @@ class TestHttpClient2 < Test::Unit::TestCase
44
39
  def test_bad_server
45
40
  err = nil
46
41
  EM.run {
47
- http = silent { EM::P::HttpClient2.connect Localhost, 9999 }
42
+ setup_timeout(1)
43
+ http = silent { EM::P::HttpClient2.connect '127.0.0.1', 9999 }
48
44
  d = http.get "/"
49
45
  d.errback { err = true; d.internal_error; EM.stop }
50
46
  }
@@ -54,7 +50,8 @@ class TestHttpClient2 < Test::Unit::TestCase
54
50
  def test_get
55
51
  content = nil
56
52
  EM.run {
57
- http = silent { EM::P::HttpClient2.connect "google.com", 80 }
53
+ setup_timeout(1)
54
+ http = silent { EM::P::HttpClient2.connect :host => "google.com", :port => 80, :version => '1.0' }
58
55
  d = http.get "/"
59
56
  d.callback {
60
57
  content = d.content
@@ -70,7 +67,8 @@ class TestHttpClient2 < Test::Unit::TestCase
70
67
  def _test_get_multiple
71
68
  content = nil
72
69
  EM.run {
73
- http = silent { EM::P::HttpClient2.connect "google.com", 80 }
70
+ setup_timeout(1)
71
+ http = silent { EM::P::HttpClient2.connect "google.com", :version => '1.0' }
74
72
  d = http.get "/"
75
73
  d.callback {
76
74
  e = http.get "/"
@@ -86,6 +84,7 @@ class TestHttpClient2 < Test::Unit::TestCase
86
84
  def test_get_pipeline
87
85
  headers, headers2 = nil, nil
88
86
  EM.run {
87
+ setup_timeout(1)
89
88
  http = silent { EM::P::HttpClient2.connect "google.com", 80 }
90
89
  d = http.get("/")
91
90
  d.callback {
@@ -102,11 +101,11 @@ class TestHttpClient2 < Test::Unit::TestCase
102
101
  assert(headers2)
103
102
  end
104
103
 
105
-
106
104
  def test_authheader
107
105
  EM.run {
108
- EM.start_server Localhost, Localport, TestServer
109
- http = silent { EM::P::HttpClient2.connect Localhost, 18842 }
106
+ setup_timeout(1)
107
+ EM.start_server '127.0.0.1', @port, TestServer
108
+ http = silent { EM::P::HttpClient2.connect '127.0.0.1', 18842 }
110
109
  d = http.get :url=>"/", :authorization=>"Basic xxx"
111
110
  d.callback {EM.stop}
112
111
  d.errback {EM.stop}
@@ -114,15 +113,16 @@ class TestHttpClient2 < Test::Unit::TestCase
114
113
  end
115
114
 
116
115
  def test_https_get
116
+ omit_unless(EM.ssl?)
117
117
  d = nil
118
118
  EM.run {
119
- http = silent { EM::P::HttpClient2.connect :host => 'www.apple.com', :port => 443, :ssl => true }
119
+ setup_timeout(1)
120
+ http = silent { EM::P::HttpClient2.connect :host => 'www.google.com', :port => 443, :ssl => true, :version => '1.0' }
120
121
  d = http.get "/"
121
- d.callback {
122
- EM.stop
123
- }
122
+ d.callback {EM.stop}
123
+ d.errback {EM.stop}
124
124
  }
125
125
  assert_equal(200, d.status)
126
- end if EM.ssl?
126
+ end
127
127
 
128
128
  end