Sha256: 073c8668848b2be3629637538b983300e5a2313a68bf489cd90c97d1eef0d2f1

Contents?: true

Size: 1.38 KB

Versions: 7

Compression:

Stored size: 1.38 KB

Contents

# Copyright (c) 2011, SoundCloud Ltd., Rany Keddo, Tobias Bielohlawek, Tobias
# Schmidt

require File.expand_path(File.dirname(__FILE__)) + '/unit_helper'

require 'lhm/table'
require 'lhm/migration'
require 'lhm/locked_switcher'

describe Lhm::LockedSwitcher do
  include UnitHelper

  before(:each) do
    @start       = Time.now
    @origin      = Lhm::Table.new("origin")
    @destination = Lhm::Table.new("destination")
    @migration   = Lhm::Migration.new(@origin, @destination, @start)
    @switcher    = Lhm::LockedSwitcher.new(@migration)
  end

  describe "uncommitted" do
    it "should disable autocommit first" do
      @switcher.
        statements[0..1].
        must_equal([
          "set @lhm_auto_commit = @@session.autocommit",
          "set session autocommit = 0"
        ])
    end

    it "should reapply original autocommit settings at the end" do
      @switcher.
        statements[-1].
        must_equal("set session autocommit = @lhm_auto_commit")
    end
  end

  describe "switch" do
    it "should lock origin and destination table, switch, commit and unlock" do
      @switcher.
        switch.
        must_equal([
          "lock table `origin` write, `destination` write",
          "alter table `origin` rename `#{ @migration.archive_name }`",
          "alter table `destination` rename `origin`",
          "commit",
          "unlock tables"
        ])
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
lhm-1.0.3 spec/unit/locked_switcher_spec.rb
lhm-1.0.2 spec/unit/locked_switcher_spec.rb
lhm-1.0.0.rc7 spec/unit/locked_switcher_spec.rb
lhm-1.0.0.rc6 spec/unit/locked_switcher_spec.rb
lhm-1.0.0.rc5 spec/unit/locked_switcher_spec.rb
lhm-1.0.0.rc4 spec/unit/locked_switcher_spec.rb
lhm-1.0.0.rc3 spec/unit/locked_switcher_spec.rb