Commit fc8e9e3d authored by Greg Williams's avatar Greg Williams
Browse files

Added experimental addition of OSX build, which is setup to not fail is OSX...

Added experimental addition of OSX build, which is setup to not fail is OSX build fails, until it can be stabilized. Added os-specific init, namely for cppcheck, which will hopefully still work on linux nodes. Disabled new Travis config validation, since fails with os=osx added. May need to get travis to turn on the support for OSX to get it working.
Cleaned up/simplified test server operation.
parent 83b4e0a6
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
os:
  - linux
  - osx
matrix:
  allow_failures:
    - os: osx
language: ruby
rvm:
  - "1.9.3"
  - "2.0.0"
install:
  - sudo apt-get update
  - sudo apt-get install cppcheck
  - ruby script/travis_install.rb
  - bundle install
script:
  - bundle exec rake verbose ci
+4 −0
Original line number Diff line number Diff line
source "http://rubygems.org/"
gem 'bundler', '>= 1.3.5'
gem 'ceedling', '>= 0.15'

group :development do
  gem 'travis-lint'
end
+4 −0
Original line number Diff line number Diff line
@@ -4,8 +4,11 @@ GEM
    ceedling (0.15.1)
      rake (>= 0.8.7)
      thor (>= 0.14.5)
    json (1.8.1)
    rake (10.3.2)
    thor (0.19.1)
    travis-lint (2.0.0)
      json

PLATFORMS
  ruby
@@ -13,3 +16,4 @@ PLATFORMS
DEPENDENCIES
  bundler (>= 1.3.5)
  ceedling (>= 0.15)
  travis-lint
+52 −26
Original line number Diff line number Diff line
@@ -122,7 +122,8 @@ end
namespace :test_server do

  require "webrick"

  DEFAULT_KINETIC_PORT = 8123
  TEST_KINETIC_PORT = 8999
  $test_server = nil

  # WEBrick is a Ruby library that makes it easy to build an HTTP server with Ruby.
@@ -150,35 +151,51 @@ namespace :test_server do

  class KineticTestServer

    def initialize(port=8213)
      @server = WEBrick::HTTPServer.new(:Port => port)
    def initialize(port = DEFAULT_KINETIC_PORT)
      raise "Invalid Kinetic test server port specified (port: #{port})" if !port || port < 0
      @port = port
      @server = nil
      @worker = nil
    end

    def start
      return unless @server.nil?

      # Start the werver
      @server = WEBrick::HTTPServer.new(:Port => @port)

      # Mount test server servlet
      @server.mount "/", KineticServlet

      # Setup handler for signaled shutdown (via ctrl+c)
      trap("INT") do
        report "INT triggered Kintic Test Server shutdown"
        shutdown
      end
      @abort = false

      # Create worker thread for test server to run in so we can continue
      @worker = Thread.new do
        @server.start
        while !@abort do
          puts 'X'
        end
      end
    end

    def shutdown
      return if @server.nil?
      if @worker
        report_banner "Kinetic Test Server shutting down..."
      @abort = true
      @worker.join(2)
        @server.shutdown
      sleep(0.2)
        @worker.join(5)
      end
      @server = nil
      @worker = nil
      report "Kinetic Test Server shutdown complete"
    end

  end

  task :start do
    $test_server ||= KineticTestServer.new(8999)
    $test_server ||= KineticTestServer.new(TEST_KINETIC_PORT)
    $test_server.start
  end

  task :shutdown do
@@ -190,23 +207,11 @@ end

task 'test/integration/test_kinetic_socket.c' => ['test_server:start']

task :default => [
  'test:all',
  'release'
]

desc "Run client test utility"
task :run do
  execute_command "./build/release/kinetic-c-client", "Running client test utility"
end

desc "Build all and run test utility"
task :all => [
  'cppcheck',
  'default',
  'run'
]

desc "Prepend license to source files"
task :apply_license do
  Dir['include/**/*.h', 'src/**/*.h', 'src/**/*.c', 'test/**/*.h', 'test/**/*.c'].each do |f|
@@ -214,14 +219,35 @@ task :apply_license do
  end
end

desc "Validate .travis.yml config file"
namespace :travis do
  task :validate do
    execute_command "travis-lint", "Validating Travis CI Configuration"
  end
end

desc "Enable verbose Ceedling output"
task :verbose do
  Rake::Task[:verbosity].invoke(4) # Set verbosity to 4-obnoxious for debugging
end

task :default => [
  'test:delta',
  'release'
]

desc "Build all and run test utility"
task :all => [
  'cppcheck',
  'default',
  'run',
  'travis:validate'
]

desc "Run full CI build"
task :ci => [
  'clobber',
  # 'verbose', # uncomment to enable verbose output for CI builds
  'verbose', # uncomment to enable verbose output for CI builds
  'all'
]

+9 −0
Original line number Diff line number Diff line
require 'rake'

if ENV['TRAVIS_OS_NAME'] =~ /osx/i
  sh "brew install cppcheck"
else
  sh "sudo apt-get update"
  sh "sudo apt-get install -y cppcheck"
end