expose logs on /job/:id/log.txt
This commit is contained in:
parent
f2d768080f
commit
d441336573
2
Gemfile
2
Gemfile
|
@ -3,8 +3,8 @@ ruby '1.9.3' rescue nil
|
||||||
source :rubygems
|
source :rubygems
|
||||||
gemspec
|
gemspec
|
||||||
|
|
||||||
|
gem 'travis-core', github: 'travis-ci/travis-core', branch: 'sf-archive-logs'
|
||||||
gem 'travis-support', github: 'travis-ci/travis-support'
|
gem 'travis-support', github: 'travis-ci/travis-support'
|
||||||
gem 'travis-core', github: 'travis-ci/travis-core'
|
|
||||||
gem 'travis-sidekiqs', github: 'travis-ci/travis-sidekiqs', require: nil, ref: 'cde9741'
|
gem 'travis-sidekiqs', github: 'travis-ci/travis-sidekiqs', require: nil, ref: 'cde9741'
|
||||||
gem 'sinatra' #github: 'sinatra/sinatra'
|
gem 'sinatra' #github: 'sinatra/sinatra'
|
||||||
gem 'sinatra-contrib', require: nil #github: 'sinatra/sinatra-contrib', require: nil
|
gem 'sinatra-contrib', require: nil #github: 'sinatra/sinatra-contrib', require: nil
|
||||||
|
|
|
@ -45,7 +45,7 @@ GIT
|
||||||
|
|
||||||
GIT
|
GIT
|
||||||
remote: git://github.com/travis-ci/travis-core.git
|
remote: git://github.com/travis-ci/travis-core.git
|
||||||
revision: ba4e4a83b473393539728a3aeb8e3499ab1ef1bc
|
revision: 4637ea48abe8fb0976d8e0bbf997ea2578a3ca62
|
||||||
specs:
|
specs:
|
||||||
travis-core (0.0.1)
|
travis-core (0.0.1)
|
||||||
actionmailer (~> 3.2.11)
|
actionmailer (~> 3.2.11)
|
||||||
|
|
|
@ -111,6 +111,8 @@ module Travis::Api
|
||||||
Travis::Amqp.config = Travis.config.amqp
|
Travis::Amqp.config = Travis.config.amqp
|
||||||
Travis::Database.connect
|
Travis::Database.connect
|
||||||
Travis::Features.start
|
Travis::Features.start
|
||||||
|
|
||||||
|
unless Travis.env == 'test'
|
||||||
Sidekiq.configure_client do |config|
|
Sidekiq.configure_client do |config|
|
||||||
config.redis = Travis.config.redis.merge(size: 1, namespace: Travis.config.sidekiq.namespace)
|
config.redis = Travis.config.redis.merge(size: 1, namespace: Travis.config.sidekiq.namespace)
|
||||||
end
|
end
|
||||||
|
@ -122,6 +124,7 @@ module Travis::Api
|
||||||
Travis::LogSubscriber::ActiveRecordMetrics.attach
|
Travis::LogSubscriber::ActiveRecordMetrics.attach
|
||||||
Travis::Notification.setup
|
Travis::Notification.setup
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def self.load_endpoints
|
def self.load_endpoints
|
||||||
Backports.require_relative_dir 'app/middleware'
|
Backports.require_relative_dir 'app/middleware'
|
||||||
|
|
|
@ -10,6 +10,10 @@ class Travis::Api::App
|
||||||
get '/:id' do
|
get '/:id' do
|
||||||
respond_with service(:find_job, params)
|
respond_with service(:find_job, params)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
get '/:job_id/log' do
|
||||||
|
respond_with service(:find_artifact, params)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,22 +1,13 @@
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
|
||||||
describe 'Workers' do
|
describe 'Workers' do
|
||||||
before(:each) do
|
let!(:workers) { [Worker.create(full_name: 'one'), Worker.create(full_name: 'two')] }
|
||||||
Time.stubs(:now).returns(Time.utc(2011, 11, 11, 11, 11, 11))
|
|
||||||
@workers = [
|
|
||||||
Worker.new('1', full_name: 'ruby1:ruby1.travis-ci.org'),
|
|
||||||
Worker.new('2', full_name: 'ruby2:ruby1.travis-ci.org')
|
|
||||||
]
|
|
||||||
end
|
|
||||||
|
|
||||||
let(:headers) { { 'HTTP_ACCEPT' => 'application/vnd.travis-ci.1+json' } }
|
let(:headers) { { 'HTTP_ACCEPT' => 'application/vnd.travis-ci.1+json' } }
|
||||||
|
|
||||||
attr_reader :workers
|
|
||||||
|
|
||||||
it 'GET /workers' do
|
it 'GET /workers' do
|
||||||
Worker.stubs(all: @workers)
|
Worker.stubs(all: @workers)
|
||||||
response = get '/workers', {}, headers
|
response = get '/workers', {}, headers
|
||||||
response.should deliver_json_for(@workers, version: 'v1', type: 'workers')
|
response.should deliver_json_for(Worker.all, version: 'v1', type: 'workers')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -13,8 +13,14 @@ describe 'Jobs' do
|
||||||
response.should deliver_json_for(Job.queued('builds.common'), version: 'v2')
|
response.should deliver_json_for(Job.queued('builds.common'), version: 'v2')
|
||||||
end
|
end
|
||||||
|
|
||||||
it '/jobs/:job_id' do
|
it '/jobs/:id' do
|
||||||
response = get "/jobs/#{job.id}", {}, headers
|
response = get "/jobs/#{job.id}", {}, headers
|
||||||
response.should deliver_json_for(job, version: 'v2')
|
response.should deliver_json_for(job, version: 'v2')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it '/jobs/:id' do
|
||||||
|
job.log.update_attributes!(content: 'the log')
|
||||||
|
response = get "/jobs/#{job.id}/log.txt", {}, headers
|
||||||
|
response.should deliver_as_txt('the log', version: 'v2')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,22 +1,13 @@
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
|
||||||
describe 'Workers' do
|
describe 'Workers' do
|
||||||
before(:each) do
|
let!(:workers) { [Worker.create(full_name: 'one'), Worker.create(full_name: 'two')] }
|
||||||
Time.stubs(:now).returns(Time.utc(2011, 11, 11, 11, 11, 11))
|
|
||||||
@workers = [
|
|
||||||
Worker.new('1', full_name: 'ruby1:ruby1.travis-ci.org'),
|
|
||||||
Worker.new('2', full_name: 'ruby2:ruby1.travis-ci.org')
|
|
||||||
]
|
|
||||||
end
|
|
||||||
|
|
||||||
let(:headers) { { 'HTTP_ACCEPT' => 'application/vnd.travis-ci.2+json' } }
|
let(:headers) { { 'HTTP_ACCEPT' => 'application/vnd.travis-ci.2+json' } }
|
||||||
|
|
||||||
attr_reader :workers
|
|
||||||
|
|
||||||
it 'GET /workers' do
|
it 'GET /workers' do
|
||||||
Worker.stubs(all: @workers)
|
Worker.stubs(all: @workers)
|
||||||
response = get '/workers', {}, headers
|
response = get '/workers', {}, headers
|
||||||
response.should deliver_json_for(@workers, version: 'v2', type: 'workers')
|
response.should deliver_json_for(Worker.all, version: 'v2', type: 'workers')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,26 @@ RSpec::Matchers.define :deliver_json_for do |resource, options = {}|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
RSpec::Matchers.define :deliver_as_txt do |expected, options = {}|
|
||||||
|
match do |response|
|
||||||
|
if response.status == 200
|
||||||
|
failure_message_for_should do
|
||||||
|
"expected\n\n#{actual}\n\nto equal\n\n#{expected}"
|
||||||
|
end
|
||||||
|
response.body.to_s == expected
|
||||||
|
else
|
||||||
|
failure_message_for_should do
|
||||||
|
"expected the request to be successful (200) but was #{response.status}"
|
||||||
|
end
|
||||||
|
false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def parse(body)
|
||||||
|
MultiJson.decode(body)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
RSpec::Matchers.define :deliver_result_image_for do |name|
|
RSpec::Matchers.define :deliver_result_image_for do |name|
|
||||||
match do |response|
|
match do |response|
|
||||||
header = response.headers['content-disposition']
|
header = response.headers['content-disposition']
|
||||||
|
|
Loading…
Reference in New Issue
Block a user