wip integration servers
This commit is contained in:
parent
2d6f51f68c
commit
bd1c8efe54
6 changed files with 65 additions and 9 deletions
|
|
@ -6,7 +6,7 @@ require 'uri'
|
||||||
class AppConfig < Settingslogic
|
class AppConfig < Settingslogic
|
||||||
|
|
||||||
def self.source_file_name
|
def self.source_file_name
|
||||||
if Rails.env == 'test' || ENV["CI"]
|
if Rails.env == 'test' || ENV["CI"] || Rails.env.include?("integration")
|
||||||
File.join(Rails.root, "config", "application.yml.example")
|
File.join(Rails.root, "config", "application.yml.example")
|
||||||
else
|
else
|
||||||
File.join(Rails.root, "config", "application.yml")
|
File.join(Rails.root, "config", "application.yml")
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,8 @@ class Retraction
|
||||||
def subscribers(user)
|
def subscribers(user)
|
||||||
unless self.type == 'Person'
|
unless self.type == 'Person'
|
||||||
@subscribers ||= self.object.subscribers(user)
|
@subscribers ||= self.object.subscribers(user)
|
||||||
|
@subscribers -= self.object.resharers
|
||||||
|
@subscribers
|
||||||
else
|
else
|
||||||
raise 'HAX: you must set the subscribers manaully before unfriending' if @subscribers.nil?
|
raise 'HAX: you must set the subscribers manaully before unfriending' if @subscribers.nil?
|
||||||
@subscribers
|
@subscribers
|
||||||
|
|
|
||||||
|
|
@ -154,3 +154,10 @@ test:
|
||||||
open_invitations: false
|
open_invitations: false
|
||||||
|
|
||||||
|
|
||||||
|
integration_1:
|
||||||
|
<<: *defaults
|
||||||
|
pod_url: "http://localhost:45789"
|
||||||
|
|
||||||
|
integration_2:
|
||||||
|
<<: *defaults
|
||||||
|
pod_url: "http://localhost:34658"
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ class Chubbies
|
||||||
|
|
||||||
def self.run
|
def self.run
|
||||||
@pid = fork do
|
@pid = fork do
|
||||||
Process.exec "cd #{Rails.root}/spec/chubbies/ && bundle exec rackup -p #{PORT} 2> /dev/null 1> /dev/null"
|
Process.exec "cd #{Rails.root}/spec/chubbies/ && bundle exec #{run_command} #{nullify}"
|
||||||
end
|
end
|
||||||
|
|
||||||
at_exit do
|
at_exit do
|
||||||
|
|
@ -94,9 +94,13 @@ class Chubbies
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.run_command
|
||||||
|
"rackup -p #{PORT}"
|
||||||
|
end
|
||||||
|
|
||||||
def self.get_pid
|
def self.get_pid
|
||||||
@pid ||= lambda {
|
@pid ||= lambda {
|
||||||
processes = `ps ax -o pid,command | grep "rackup -p #{PORT}"`.split("\n")
|
processes = `ps ax -o pid,command | grep "#{run_command}"`.split("\n")
|
||||||
processes = processes.select{|p| !p.include?("grep") }
|
processes = processes.select{|p| !p.include?("grep") }
|
||||||
processes.first.split(" ").first
|
processes.first.split(" ").first
|
||||||
}.call
|
}.call
|
||||||
|
|
|
||||||
|
|
@ -2,13 +2,18 @@
|
||||||
|
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
WebMock::Config.instance.allow_localhost = true
|
WebMock::Config.instance.allow_localhost = true
|
||||||
if Server.all && Server.all.first && Server.all.first.running?
|
unless Server.all.empty?
|
||||||
describe Server do
|
describe Server do
|
||||||
before(:all) do
|
before(:all) do
|
||||||
WebMock::Config.instance.allow_localhost = true
|
WebMock::Config.instance.allow_localhost = true
|
||||||
|
Server.all.each{|s| s.kill if s.running?}
|
||||||
|
Server.all.each{|s| s.run}
|
||||||
end
|
end
|
||||||
|
|
||||||
after(:all) do
|
after(:all) do
|
||||||
|
Server.all.each{|s| s.kill if s.running?}
|
||||||
|
sleep(1)
|
||||||
|
Server.all.each{|s| puts "Server at port #{s.port} still running." if s.running?}
|
||||||
WebMock::Config.instance.allow_localhost = false
|
WebMock::Config.instance.allow_localhost = false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -25,12 +30,12 @@ if Server.all && Server.all.first && Server.all.first.running?
|
||||||
it 'takes an environment' do
|
it 'takes an environment' do
|
||||||
server = Server.new("integration_1")
|
server = Server.new("integration_1")
|
||||||
server.env.should == "integration_1"
|
server.env.should == "integration_1"
|
||||||
server.port.should == ActiveRecord::Base.configurations["integration_1"]["app_server_port"]
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
describe "#running?" do
|
describe "#running?" do
|
||||||
it "verifies that the server is running" do
|
it "verifies that the server is running" do
|
||||||
Server.new("integration_1").running?.should be_true
|
server = Server.new("integration_1")
|
||||||
|
server.running?.should be_true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
describe '#db' do
|
describe '#db' do
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,48 @@ class Server
|
||||||
|
|
||||||
attr_reader :port, :env
|
attr_reader :port, :env
|
||||||
def initialize(env)
|
def initialize(env)
|
||||||
@config = ActiveRecord::Base.configurations[env]
|
@db_config = ActiveRecord::Base.configurations[env]
|
||||||
@port = @config["app_server_port"]
|
@app_config = (YAML.load_file AppConfig.source)[env]
|
||||||
|
@port = URI::parse(@app_config["pod_url"]).port
|
||||||
@env = env
|
@env = env
|
||||||
|
ensure_database_setup
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def ensure_database_setup
|
||||||
|
`cd #{Rails.root} && RAILS_ENV=#{@env} bundle exec rake db:create`
|
||||||
|
tables_exist = self.db do
|
||||||
|
ActiveRecord::Base.connection.tables.include?("users")
|
||||||
|
end
|
||||||
|
if tables_exist
|
||||||
|
truncate_database
|
||||||
|
else
|
||||||
|
`cd #{Rails.root} && RAILS_ENV=#{@env} bundle exec rake db:schema:load`
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def run
|
||||||
|
@pid = fork do
|
||||||
|
Process.exec "cd #{Rails.root} && RAILS_ENV=#{@env} bundle exec #{run_command}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def kill
|
||||||
|
puts "I am trying to kill the server"
|
||||||
|
`kill -9 #{get_pid}`
|
||||||
|
end
|
||||||
|
|
||||||
|
def run_command
|
||||||
|
"rails s thin -p #{@port}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def get_pid
|
||||||
|
@pid = lambda {
|
||||||
|
processes = `ps ax -o pid,command | grep "#{run_command}"`.split("\n")
|
||||||
|
processes = processes.select{|p| !p.include?("grep") }
|
||||||
|
processes.first.split(" ").first
|
||||||
|
}.call
|
||||||
|
end
|
||||||
|
|
||||||
def running?
|
def running?
|
||||||
begin
|
begin
|
||||||
RestClient.get("localhost:#{@port}/users/sign_in")
|
RestClient.get("localhost:#{@port}/users/sign_in")
|
||||||
|
|
@ -25,8 +62,9 @@ class Server
|
||||||
def db
|
def db
|
||||||
former_env = Rails.env
|
former_env = Rails.env
|
||||||
ActiveRecord::Base.establish_connection(env)
|
ActiveRecord::Base.establish_connection(env)
|
||||||
yield
|
result = yield
|
||||||
ActiveRecord::Base.establish_connection(former_env)
|
ActiveRecord::Base.establish_connection(former_env)
|
||||||
|
result
|
||||||
end
|
end
|
||||||
|
|
||||||
def truncate_database
|
def truncate_database
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue