Sha256: ad0ac9bd30c17ad6592ba4e228c050490885a504d1e3d8f2bba515f213b87c85

Contents?: true

Size: 1.76 KB

Versions: 1

Compression:

Stored size: 1.76 KB

Contents

require 'spec_helper'

describe Fastdfs::Client::Tracker do 

  let(:host){ "192.168.9.16" }
  let(:port){ "22122" }

  let(:tracker){ FC::Tracker.new(host, port) }

  it "initialize the server" do 
    expect(FC::Socket).to receive(:new).with(host, port, nil) 
    FC::Tracker.new(host, port) 
  end

  it "should have access to the storage connection" do
    expect(tracker.socket).to receive(:connection).and_return({})
    expect(tracker.socket).to receive(:close)
    tracker.get_storage
  end

  it "should have access to the storage class" do 
    expect(tracker.get_storage.class).to eq(FC::Storage)
  end

  it "verify the server address and port" do 
    expect(tracker.get_storage.socket.host).to eq(TestConfig::STORAGE_IP)
    #[0, 0, 0, 0, 0, 89, 216, 0]
    expect(tracker.get_storage.socket.port.to_s).to eq(TestConfig::STORAGE_PORT)
    expect(tracker.get_storage.store_path).to eq(TestConfig::STORE_PATH)
  end

  it "get to the server failed" do 
    result = FC::ProtoCommon.header_bytes(FC::CMD::RESP_CODE, 0, 22)
    MockTCPSocket.any_instance.stub("recv").and_return(result.pack("C*"))
    expect(tracker.get_storage).to be_a_kind_of(Hash)
    expect(tracker.get_storage[:status]).to be_falsey
  end

  it "run server flow" do 
    items = 5.times.map do
      Thread.new do 
        storage = tracker.get_storage
        results = storage.upload(File.open(File.expand_path("../page.png", __FILE__)))[:result]
        puts results
        puts storage.delete(results[:path], results[:group_name])
      end
    end

    items.each{|item|  item.join }

    # storage = tracker.get_storage
    # puts "#{storage.host}, #{storage.port}"
    # results = storage.upload(File.open("page.png"))
    # puts results
    # puts storage.delete(results[:path], results[:group_name])
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fastdfs-client-1.2.0 spec/tracker_spec.rb