Sha256: d82dedea679791d847da547b6383d79ce659eb3465c0958d091aedf524870aa7

Contents?: true

Size: 1.79 KB

Versions: 5

Compression:

Stored size: 1.79 KB

Contents

require File.expand_path(File.join(File.dirname(__FILE__), '../test_helper'))

require 'einhorn'

class EinhornTest < Test::Unit::TestCase
  context "when sockifying" do
    teardown do
      Einhorn::State.sockets = {}
    end

    should "correctly parse srv: arguments" do
      cmd = ['foo', 'srv:1.2.3.4:123,llama,test', 'bar']
      Einhorn.expects(:bind).once.with('1.2.3.4', '123', ['llama', 'test']).returns(4)

      Einhorn.socketify!(cmd)

      assert_equal(['foo', '4', 'bar'], cmd)
    end

    should "correctly parse --opt=srv: arguments" do
      cmd = ['foo', '--opt=srv:1.2.3.4:456', 'baz']
      Einhorn.expects(:bind).once.with('1.2.3.4', '456', []).returns(5)

      Einhorn.socketify!(cmd)

      assert_equal(['foo', '--opt=5', 'baz'], cmd)
    end

    should "use the same fd number for the same server spec" do
      cmd = ['foo', '--opt=srv:1.2.3.4:8910', 'srv:1.2.3.4:8910']
      Einhorn.expects(:bind).once.with('1.2.3.4', '8910', []).returns(10)

      Einhorn.socketify!(cmd)

      assert_equal(['foo', '--opt=10', '10'], cmd)
    end
  end

  context '.update_state' do
    should 'correctly update keys to match new default state hash' do
      Einhorn::State.stubs(:default_state).returns(:baz => 23, :foo => 1)
      old_state = {:foo => 2, :bar => 2}

      updated_state, message = Einhorn.update_state(old_state)
      assert_equal({:baz => 23, :foo => 2}, updated_state)
      assert_match(/State format has changed/, message)
    end

    should 'not change the state if the format has not changed' do
      Einhorn::State.stubs(:default_state).returns(:baz => 23, :foo => 1)
      old_state = {:baz => 14, :foo => 1234}

      updated_state, message = Einhorn.update_state(old_state)
      assert_equal({:baz => 14, :foo => 1234}, updated_state)
      assert(message.nil?)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
einhorn-0.4.7 test/unit/einhorn.rb
einhorn-0.4.6 test/unit/einhorn.rb
einhorn-0.4.5 test/unit/einhorn.rb
einhorn-0.4.4 test/unit/einhorn.rb
einhorn-0.4.3 test/unit/einhorn.rb