spec/mock_tcp_socket.rb in fastdfs-client-1.4.4 vs spec/mock_tcp_socket.rb in fastdfs-client-2.0.0

- old
+ new

@@ -3,24 +3,23 @@ include Fastdfs::Client attr_accessor :host, :port, :cmd, :recv_offset, :connect_state def initialize(host, port) - @host = host - @port = port - @recv_offset = 0 - @connect_state = true - @cmd = nil - @content = [] - @header = [] + @host, @port = host, port + reload_data end def connection - @content = [] - @header = [] + reload_data end + def reload_data + init_options + init_data + end + def write(*args) pkg = args[0].unpack("C*") if @header.length <= 0 @header = pkg else @@ -49,71 +48,83 @@ @recv_offset = len data end def close - @recv_offset = 0 + init_options @connect_state = false - @cmd = nil end def closed? - @connect_state + !@connect_state end private def gate_tracker(len) - header = ProtoCommon.header_bytes(CMD::RESP_CODE, 0) + header = init_header_bytes header[7] = ProtoCommon::TRACKER_BODY_LEN group_name = Utils.array_merge([].fill(0, 0...16), TestConfig::GROUP_NAME.bytes) ip = Utils.array_merge([].fill(0, 0...15), TestConfig::STORAGE_IP.bytes) port = TestConfig::STORAGE_PORT.to_i.to_eight_buffer store_path = Array(TestConfig::STORE_PATH) - (header+group_name+ip+port+store_path)[@recv_offset...@recv_offset+len].pack("C*") end def upload_file(len) - header = ProtoCommon.header_bytes(CMD::RESP_CODE, 0) + header = init_header_bytes group_name = Utils.array_merge([].fill(0, 0...16), TestConfig::GROUP_NAME.bytes) path = path_replace_extname file_path_bytes = path.bytes res = (group_name + file_path_bytes) header[7] = (header + res).length - res = (header + res) + res = (header + res) res[@recv_offset...@recv_offset+len].pack("C*") end def delete_file(len) - header = ProtoCommon.header_bytes(CMD::RESP_CODE, 0) + header = init_header_bytes header.pack("C*") end def get_metadata(len) - header = ProtoCommon.header_bytes(CMD::RESP_CODE, 0) + header = init_header_bytes body = TestConfig::METADATA.map{|a| a.join(ProtoCommon::FILE_SEPERATOR)}.join(ProtoCommon::RECORD_SEPERATOR).bytes header[7] = body.length (header + body)[@recv_offset...@recv_offset+len].pack("C*") end def set_metadata(len) - header = ProtoCommon.header_bytes(CMD::RESP_CODE, 0) + header = init_header_bytes header.pack("C*") end def download_file(len) - header = ProtoCommon.header_bytes(CMD::RESP_CODE, 0) + header = init_header_bytes body = IO.read(TestConfig::FILE).bytes header[7] = body.length (header + body)[@recv_offset...@recv_offset+len].pack("C*") end - private + def init_options + @recv_offset = 0 + @connect_state = true + @cmd = nil + end + + def init_data + @content = [] + @header = [] + end + def path_replace_extname path = TestConfig::FILE_PATH extname = File.extname(path) path.gsub!(extname, ".#{@header[19..-1].reject{|i| i.zero? }.pack('C*')}") path + end + + def init_header_bytes + ProtoCommon.header_bytes(CMD::RESP_CODE, 0) end end \ No newline at end of file