VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /var/lib/gems/2.5.0/gems/em-synchrony-1.0.3/spec/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/lib/gems/2.5.0/gems/em-synchrony-1.0.3/spec/iterator_spec.rb
require "spec/helper/all"
require "em-synchrony/iterator"

describe EventMachine::Synchrony::Iterator do

  it "should wait until the iterator is done" do
    EM.synchrony do

      results = []
      i = EM::Synchrony::Iterator.new(1..50, 10).each do |num, iter|
        results.push num
        iter.next
      end

      results.should == (1..50).to_a
      results.size.should == 50
      EventMachine.stop
    end
  end

  it "should map values within the iterator" do
    EM.synchrony do
      results = EM::Synchrony::Iterator.new(1..50, 10).map do |num, iter|
        iter.return(num + 1)
      end

      results.should == (2..51).to_a
      results.size.should == 50
      EventMachine.stop
    end
  end

  it "should sum values within the iterator" do
    EM.synchrony do
      data = (1..50).to_a
      res = EM::Synchrony::Iterator.new(data, 10).inject(0) do |total, num, iter|
        total += num
        iter.return(total)
      end

      res.should == data.inject(:+)
      EventMachine.stop
    end
  end

  it "should fire async http requests in blocks of 2" do
    EM.synchrony do
      num_urls = 4
      concurrency = 2
      delay = 0.25
      
      s = StubServer.new("HTTP/1.0 200 OK\r\nConnection: close\r\n\r\nFoo", delay)
      urls = ['http://localhost:8081/'] * num_urls
      
      start = now
      results = EM::Synchrony::Iterator.new(urls, concurrency).map do |url, iter|
        http = EventMachine::HttpRequest.new(url).aget
        http.callback { iter.return(http) }
      end

      results.size.should == 4
      (now - start.to_f).should be_within(delay * 0.15).of(delay * (num_urls / concurrency))
      
      EventMachine.stop
    end
  end

end

VaKeR 2022