Sha256: 738555af619b479de210a5688c8beacef9f86910124fbd6b30029eb91ea37cdf

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

module MongoTestServer
  extend self
  
  MONGODB_DBPATH = "/tmp/mongo_browser/db"

  def ensure_test_server_is_running
    if `lsof -i :#{MongoBrowser.mongodb_port}`.size == 0
      clean_up

      FileUtils.mkdir_p(MONGODB_DBPATH)
      `mongod --port #{MongoBrowser.mongodb_port} --dbpath #{MONGODB_DBPATH} --fork --logpath #{MONGODB_DBPATH}/../db.log`
    end
  end

  def load_fixtures
    # Delete all databases
    connection.database_names.each do |db_name|
      connection.drop_database(db_name)
    end

    # Load fixtures
    data = JSON.parse(File.open(File.expand_path("spec/fixtures/databases.json"), "r").read)
    data.each do |database_data|
      database = connection.db(database_data["name"])

      (database_data["collections"] || []).each do |collection_data|
        collection = database.create_collection(collection_data["name"])

        (collection_data["documents"] || []).each do |document_data|
          collection.insert(document_data)
        end
      end
    end
  end

  def connection
    @connection ||= Mongo::Connection.new(MongoBrowser.mongodb_host, MongoBrowser.mongodb_port)
  end

  def clean_up
    out = `ps aux | grep "mongod"`
    out.lines.each do |line|
      if line.include?("mongod") and line.include?("--dbpath #{MONGODB_DBPATH}")
        pid = line.split[1]
        `kill -9 #{pid}`
      end
    end
    FileUtils.rm_rf("#{MONGODB_DBPATH}/..")
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mongo_browser-0.1.0 spec/support/mongo_test_server.rb