<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -5,5 +5,10 @@
 # Fri Mar 20 22:54:46 JST 2009
 #
 
-Dir[&quot;#{File.dirname(__FILE__)}/*_spec.rb&quot;].each { |path| load(path) }
+specs = Dir[&quot;#{File.dirname(__FILE__)}/*_spec.rb&quot;]
+
+specs = specs - [ 'spec/stress_schedule_unschedule_spec.rb' ]
+  # this spec takes 11 minutes, removing it from the regular spec run
+
+specs.each { |path| load(path) }
 </diff>
      <filename>spec/spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,156 +3,150 @@ $LOAD_PATH &lt;&lt; 'lib'
 require 'rufus/sc/scheduler'
 
 require 'rubygems'
-require 'spec/autorun'
 require 'eventmachine'
 
+#require 'spec/autorun'
+require File.dirname(__FILE__) + '/spec_base'
+
 JOB_COUNT = 1000
 JOB_IDS = (1..JOB_COUNT).to_a
 NUM_RESCHEDULES = 20
 SECONDS_FROM_NOW = 30
 
 describe Rufus::Scheduler do
-  
-  before do #(:each) do
-    @trigger_queue = Queue.new
-    @cron_trigger = ((Time.now.to_i%60) + SECONDS_FROM_NOW) % 60 # 30 seconds from now
-    @at_trigger = Time.now + SECONDS_FROM_NOW
-    @every_trigger = &quot;#{SECONDS_FROM_NOW}s&quot;
-    @trigger_proc = lambda { |params| @trigger_queue &lt;&lt; params[:job_id] }
-  end
-  
-  after do #(:each) do
-    @trigger_queue = nil
-  end
-  
-  it &quot;should immediately trigger an at event in the past&quot; do
-    scheduler = Rufus::Scheduler::EmScheduler.start_new
-    scheduler.at(Time.now - 10, {}, &amp;@trigger_proc)
-    sleep 1
-    @trigger_queue.size.should be(1)
-    scheduler.stop
-  end
-
-  it &quot;(Plain) should allow frequent schedule/unschedule 'cron' jobs with same ids&quot; do
-    schedule_unschedule_same_ids_spec(:cron, Rufus::Scheduler::PlainScheduler.start_new)
-  end
-  
-  it &quot;(Plain) should allow frequent schedule/unschedule 'at' jobs with same ids&quot; do
-    schedule_unschedule_same_ids_spec(:at, Rufus::Scheduler::PlainScheduler.start_new)
-  end
-  
-  it &quot;(Plain) should allow frequent schedule/unschedule 'every' jobs same ids&quot; do
-    schedule_unschedule_same_ids_spec(:every,Rufus::Scheduler::PlainScheduler.start_new)
-  end
-  
-  it &quot;(Plain) should allow frequent schedule/unschedule 'cron' jobs with unique ids&quot; do
-    schedule_unschedule_unique_ids_spec(:cron, Rufus::Scheduler::PlainScheduler.start_new)
-  end
-  
-  it &quot;(Plain) should allow frequent schedule/unschedule 'at' jobs with unique ids&quot; do
-    schedule_unschedule_unique_ids_spec(:at, Rufus::Scheduler::PlainScheduler.start_new)
-  end
-  
-  it &quot;(Plain) should allow frequent schedule/unschedule 'every' jobs unique ids&quot; do
-    schedule_unschedule_unique_ids_spec(:every, Rufus::Scheduler::PlainScheduler.start_new)
-  end
-  
-  it &quot;(EM) should allow frequent schedule/unschedule 'cron' jobs with same ids&quot; do
-    schedule_unschedule_same_ids_spec(:cron, Rufus::Scheduler::EmScheduler.start_new)
-  end
 
-  it &quot;(EM) should allow frequent schedule/unschedule 'at' jobs with same ids&quot; do
-    schedule_unschedule_same_ids_spec(:at, Rufus::Scheduler::EmScheduler.start_new)
-  end
-  
-  it &quot;(EM) should allow frequent schedule/unschedule 'every' jobs same ids&quot; do
-    schedule_unschedule_same_ids_spec(:every,Rufus::Scheduler::EmScheduler.start_new)
-  end
-  
-  it &quot;(EM) should allow frequent schedule/unschedule 'cron' jobs with unique ids&quot; do
-    schedule_unschedule_unique_ids_spec(:cron, Rufus::Scheduler::EmScheduler.start_new)
-  end
+# helper methods
 
-  it &quot;(EM) should allow frequent schedule/unschedule 'at' jobs with unique ids&quot; do
-    schedule_unschedule_unique_ids_spec(:at, Rufus::Scheduler::EmScheduler.start_new)
-  end
-  
-  it &quot;(EM) should allow frequent schedule/unschedule 'every' jobs unique ids&quot; do
-    schedule_unschedule_unique_ids_spec(:every, Rufus::Scheduler::EmScheduler.start_new)
-  end
+def schedule_unschedule_same_ids_spec(mode, scheduler)
+  schedule_unschedule(scheduler, mode, NUM_RESCHEDULES)
+  JOB_IDS.sort.should.equal(scheduler.find_jobs.map{ |job| job.job_id }.sort)
+  sleep SECONDS_FROM_NOW # wait for jobs to trigger
+  @trigger_queue.size.should.equal(JOB_COUNT)
+  scheduler.stop
+end
 
-  # protected
-  
-  # helper methods
-  
-  def schedule_unschedule_same_ids_spec(mode, scheduler)
-    schedule_unschedule(scheduler, mode, NUM_RESCHEDULES)
-    JOB_IDS.sort.should eql(scheduler.find_jobs.map{ |job| job.job_id }.sort)
-    sleep SECONDS_FROM_NOW # wait for jobs to trigger
-    @trigger_queue.size.should be(JOB_COUNT)
-    scheduler.stop
-  end
-  
-  def schedule_unschedule_unique_ids_spec(mode, scheduler)
-    job_ids = schedule_unschedule(scheduler, mode, NUM_RESCHEDULES, true)
-    job_ids.sort.should eql(scheduler.find_jobs.map{ |job| job.job_id }.sort)
-    sleep SECONDS_FROM_NOW # wait for jobs to trigger
-    @trigger_queue.size.should be(JOB_COUNT)
-    scheduler.stop
-  end
+def schedule_unschedule_unique_ids_spec(mode, scheduler)
+  job_ids = schedule_unschedule(scheduler, mode, NUM_RESCHEDULES, true)
+  job_ids.sort.should.equal(scheduler.find_jobs.map{ |job| job.job_id }.sort)
+  sleep SECONDS_FROM_NOW # wait for jobs to trigger
+  @trigger_queue.size.should.equal(JOB_COUNT)
+  scheduler.stop
+end
 
-  def schedule_unschedule(scheduler, mode, num_reschedules, generate_ids = false)
+def schedule_unschedule(scheduler, mode, num_reschedules, generate_ids = false)
+  job_ids = schedule_jobs(scheduler, mode, generate_ids)
+  1.upto(num_reschedules) do
+    sleep 0.01 # allows scheduler to pick up scheduled jobs
+    unschedule_jobs(scheduler, job_ids)
     job_ids = schedule_jobs(scheduler, mode, generate_ids)
-    1.upto(num_reschedules) do
-      sleep 0.01 # allows scheduler to pick up scheduled jobs
-      unschedule_jobs(scheduler, job_ids)
-      job_ids = schedule_jobs(scheduler, mode, generate_ids)
-    end
+  end
 
-    sleep 10 # allow scheduler to process schedule/unschedule requests
-    # print_scheduler_counts(scheduler, 10)
+  sleep 10 # allow scheduler to process schedule/unschedule requests
+  # print_scheduler_counts(scheduler, 10)
 
-    job_ids
-  end
+  job_ids
+end
 
-  def print_scheduler_counts(scheduler, seconds)
-    1.upto(seconds) do
-      puts &quot;all:%d at:%d cron:%d every:%d pending:%d&quot; % [
-        scheduler.all_jobs.size,
-        scheduler.at_job_count,
-        scheduler.cron_job_count,
-        scheduler.every_job_count,
-        scheduler.pending_job_count]
-      sleep 1
-    end
+def print_scheduler_counts(scheduler, seconds)
+  1.upto(seconds) do
+    puts &quot;all:%d at:%d cron:%d every:%d pending:%d&quot; % [
+      scheduler.all_jobs.size,
+      scheduler.at_job_count,
+      scheduler.cron_job_count,
+      scheduler.every_job_count,
+      scheduler.pending_job_count]
+    sleep 1
   end
+end
 
-  def schedule_jobs(scheduler, mode, generate_ids = false)
-    job_ids = []
-    JOB_IDS.each do |job_id|
-      case mode
-      when :cron
-        job_ids &lt;&lt; scheduler.cron(&quot;%d * * * * *&quot; % @cron_trigger,
-                                  { :job_id =&gt; (generate_ids ? nil : job_id) },
-                                  &amp;@trigger_proc).job_id
-      when :at
-        job_ids &lt;&lt; scheduler.at(@at_trigger,
+def schedule_jobs(scheduler, mode, generate_ids = false)
+  job_ids = []
+  JOB_IDS.each do |job_id|
+    case mode
+    when :cron
+      job_ids &lt;&lt; scheduler.cron(&quot;%d * * * * *&quot; % @cron_trigger,
                                 { :job_id =&gt; (generate_ids ? nil : job_id) },
                                 &amp;@trigger_proc).job_id
-      when :every
-        job_ids &lt;&lt; scheduler.every(@every_trigger,
-                                   { :job_id =&gt; (generate_ids ? nil : job_id) },
-                                   &amp;@trigger_proc).job_id
-      else
-        raise ArgumentError
-      end
+    when :at
+      job_ids &lt;&lt; scheduler.at(@at_trigger,
+                              { :job_id =&gt; (generate_ids ? nil : job_id) },
+                              &amp;@trigger_proc).job_id
+    when :every
+      job_ids &lt;&lt; scheduler.every(@every_trigger,
+                                 { :job_id =&gt; (generate_ids ? nil : job_id) },
+                                 &amp;@trigger_proc).job_id
+    else
+      raise ArgumentError
     end
-    job_ids
   end
+  job_ids
+end
 
-  def unschedule_jobs(scheduler, job_ids)
-    job_ids.each { |job_id| scheduler.unschedule(job_id) }
-  end
-  
+def unschedule_jobs(scheduler, job_ids)
+  job_ids.each { |job_id| scheduler.unschedule(job_id) }
 end
-  
\ No newline at end of file
+
+# the actual tests
+
+before do #(:each) do
+  @trigger_queue = Queue.new
+  @cron_trigger = ((Time.now.to_i%60) + SECONDS_FROM_NOW) % 60 # 30 seconds from now
+  @at_trigger = Time.now + SECONDS_FROM_NOW
+  @every_trigger = &quot;#{SECONDS_FROM_NOW}s&quot;
+  @trigger_proc = lambda { |params| @trigger_queue &lt;&lt; params[:job_id] }
+end
+
+after do #(:each) do
+  @trigger_queue = nil
+end
+
+it &quot;(Plain) should allow frequent schedule/unschedule 'cron' jobs with same ids&quot; do
+  schedule_unschedule_same_ids_spec(:cron, Rufus::Scheduler::PlainScheduler.start_new)
+end
+
+it &quot;(Plain) should allow frequent schedule/unschedule 'at' jobs with same ids&quot; do
+  schedule_unschedule_same_ids_spec(:at, Rufus::Scheduler::PlainScheduler.start_new)
+end
+
+it &quot;(Plain) should allow frequent schedule/unschedule 'every' jobs same ids&quot; do
+  schedule_unschedule_same_ids_spec(:every,Rufus::Scheduler::PlainScheduler.start_new)
+end
+
+it &quot;(Plain) should allow frequent schedule/unschedule 'cron' jobs with unique ids&quot; do
+  schedule_unschedule_unique_ids_spec(:cron, Rufus::Scheduler::PlainScheduler.start_new)
+end
+
+it &quot;(Plain) should allow frequent schedule/unschedule 'at' jobs with unique ids&quot; do
+  schedule_unschedule_unique_ids_spec(:at, Rufus::Scheduler::PlainScheduler.start_new)
+end
+
+it &quot;(Plain) should allow frequent schedule/unschedule 'every' jobs unique ids&quot; do
+  schedule_unschedule_unique_ids_spec(:every, Rufus::Scheduler::PlainScheduler.start_new)
+end
+
+it &quot;(EM) should allow frequent schedule/unschedule 'cron' jobs with same ids&quot; do
+  schedule_unschedule_same_ids_spec(:cron, Rufus::Scheduler::EmScheduler.start_new)
+end
+
+it &quot;(EM) should allow frequent schedule/unschedule 'at' jobs with same ids&quot; do
+  schedule_unschedule_same_ids_spec(:at, Rufus::Scheduler::EmScheduler.start_new)
+end
+
+it &quot;(EM) should allow frequent schedule/unschedule 'every' jobs same ids&quot; do
+  schedule_unschedule_same_ids_spec(:every, Rufus::Scheduler::EmScheduler.start_new)
+end
+
+it &quot;(EM) should allow frequent schedule/unschedule 'cron' jobs with unique ids&quot; do
+  schedule_unschedule_unique_ids_spec(:cron, Rufus::Scheduler::EmScheduler.start_new)
+end
+
+it &quot;(EM) should allow frequent schedule/unschedule 'at' jobs with unique ids&quot; do
+  schedule_unschedule_unique_ids_spec(:at, Rufus::Scheduler::EmScheduler.start_new)
+end
+
+it &quot;(EM) should allow frequent schedule/unschedule 'every' jobs unique ids&quot; do
+  schedule_unschedule_unique_ids_spec(:every, Rufus::Scheduler::EmScheduler.start_new)
+end
+
+end
+</diff>
      <filename>spec/stress_schedule_unschedule_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -13,101 +13,101 @@ require 'eventmachine'
 
 class CronTest &lt; Test::Unit::TestCase
 
-  #
-  # Stress test program for rufus-scheduler
-  #
-  
-  SECONDS_FROM_NOW = 30
-  MODE = :cron
-  JOB_COUNT = 1000
-  JOB_IDS = (1..JOB_COUNT).to_a
-  NUM_RESCHEDULES = 20
-  
-  def setup
-    @trigger_queue = Queue.new
-  end
-  
-  def test_stress_schedule_unschedule_plain_cron
-    stress_schedule_unschedule(:cron, Rufus::Scheduler::PlainScheduler.start_new)
-  end
-  
-  def test_stress_schedule_unschedule_plain_at
-    stress_schedule_unschedule(:at, Rufus::Scheduler::PlainScheduler.start_new)
-  end
-  
-  def test_stress_schedule_unschedule_plain_every
-    stress_schedule_unschedule(:every, Rufus::Scheduler::PlainScheduler.start_new)
-  end
+#
+# Stress test program for rufus-scheduler
+#
 
-  def test_stress_schedule_unschedule_em_cron
-    stress_schedule_unschedule(:cron, Rufus::Scheduler::EmScheduler.start_new)
-  end
-  
-  def test_stress_schedule_unschedule_em_at
-    stress_schedule_unschedule(:at, Rufus::Scheduler::EmScheduler.start_new)
-  end
-  
-  def test_stress_schedule_unschedule_em_every
-    stress_schedule_unschedule(:every, Rufus::Scheduler::EmScheduler.start_new)
-  end
+SECONDS_FROM_NOW = 30
+MODE = :cron
+JOB_COUNT = 1000
+JOB_IDS = (1..JOB_COUNT).to_a
+NUM_RESCHEDULES = 20
 
-  protected
-  
-  def stress_schedule_unschedule(mode, scheduler)
-    
-    # Schedule all jobs, then unschedule and (re)schedule a number of times
-    schedule_unschedule(scheduler, mode, NUM_RESCHEDULES)
-    
-    # give scheduler thread 10 seconds to process the schedule and unschedule requests
-    # but don't wait for the jobs to trigger (which is in less than 30 seconds)
-    sleep 10
-    # print_scheduler_counts(scheduler, 10)
-    
-    # by now the scheduler should have processed everything, check
-    assert(JOB_IDS.sort == scheduler.find_jobs.map{ |job| job.job_id }.sort)
-    sleep SECONDS_FROM_NOW # wait for jobs to trigger
-    assert(JOB_COUNT == @trigger_queue.size)
-  end
-  
-  def schedule_unschedule(scheduler, mode, num_reschedules)
+def setup
+  @trigger_queue = Queue.new
+end
+
+def test_stress_schedule_unschedule_plain_cron
+  stress_schedule_unschedule(:cron, Rufus::Scheduler::PlainScheduler.start_new)
+end
+
+def test_stress_schedule_unschedule_plain_at
+  stress_schedule_unschedule(:at, Rufus::Scheduler::PlainScheduler.start_new)
+end
+
+def test_stress_schedule_unschedule_plain_every
+  stress_schedule_unschedule(:every, Rufus::Scheduler::PlainScheduler.start_new)
+end
+
+def test_stress_schedule_unschedule_em_cron
+  stress_schedule_unschedule(:cron, Rufus::Scheduler::EmScheduler.start_new)
+end
+
+def test_stress_schedule_unschedule_em_at
+  stress_schedule_unschedule(:at, Rufus::Scheduler::EmScheduler.start_new)
+end
+
+def test_stress_schedule_unschedule_em_every
+  stress_schedule_unschedule(:every, Rufus::Scheduler::EmScheduler.start_new)
+end
+
+protected
+
+def stress_schedule_unschedule(mode, scheduler)
+
+  # Schedule all jobs, then unschedule and (re)schedule a number of times
+  schedule_unschedule(scheduler, mode, NUM_RESCHEDULES)
+
+  # give scheduler thread 10 seconds to process the schedule and unschedule requests
+  # but don't wait for the jobs to trigger (which is in less than 30 seconds)
+  sleep 10
+  # print_scheduler_counts(scheduler, 10)
+
+  # by now the scheduler should have processed everything, check
+  assert(JOB_IDS.sort == scheduler.find_jobs.map{ |job| job.job_id }.sort)
+  sleep SECONDS_FROM_NOW # wait for jobs to trigger
+  assert(JOB_COUNT == @trigger_queue.size)
+end
+
+def schedule_unschedule(scheduler, mode, num_reschedules)
+  schedule_jobs(scheduler, mode)
+  1.upto(num_reschedules) do
+    sleep 0.01 # cause schedule's to happen before unscheduling
+    unschedule_jobs(scheduler)
     schedule_jobs(scheduler, mode)
-    1.upto(num_reschedules) do
-      sleep 0.01 # cause schedule's to happen before unscheduling
-      unschedule_jobs(scheduler)
-      schedule_jobs(scheduler, mode)
-    end
   end
-  
-  def print_scheduler_counts(scheduler, seconds)
-    1.upto(seconds) do
-      puts &quot;all:%d at:%d cron:%d every:%d pending:%d&quot; % [
-        scheduler.all_jobs.size,
-        scheduler.at_job_count,
-        scheduler.cron_job_count,
-        scheduler.every_job_count,
-        scheduler.pending_job_count]
-      sleep 1
-    end
+end
+
+def print_scheduler_counts(scheduler, seconds)
+  1.upto(seconds) do
+    puts &quot;all:%d at:%d cron:%d every:%d pending:%d&quot; % [
+      scheduler.all_jobs.size,
+      scheduler.at_job_count,
+      scheduler.cron_job_count,
+      scheduler.every_job_count,
+      scheduler.pending_job_count]
+    sleep 1
   end
-  
-  def schedule_jobs(scheduler, mode)
-    trigger_proc = lambda { |params| @trigger_queue &lt;&lt; params[:job_id] }
-    JOB_IDS.each do |job_id|
-      case mode
-      when :at
-        scheduler.at(Time.now + SECONDS_FROM_NOW, {:job_id =&gt; job_id}, &amp;trigger_proc)
-      when :every
-        scheduler.every(&quot;#{SECONDS_FROM_NOW}s&quot;, {:job_id =&gt; job_id}, &amp;trigger_proc)
-      when :cron
-        scheduler.cron(&quot;%d * * * * *&quot; % ((Time.now.to_i%60) + SECONDS_FROM_NOW) % 60,
-                       {:job_id =&gt; job_id}, &amp;trigger_proc)
-      end
+end
+
+def schedule_jobs(scheduler, mode)
+  trigger_proc = lambda { |params| @trigger_queue &lt;&lt; params[:job_id] }
+  JOB_IDS.each do |job_id|
+    case mode
+    when :at
+      scheduler.at(Time.now + SECONDS_FROM_NOW, {:job_id =&gt; job_id}, &amp;trigger_proc)
+    when :every
+      scheduler.every(&quot;#{SECONDS_FROM_NOW}s&quot;, {:job_id =&gt; job_id}, &amp;trigger_proc)
+    when :cron
+      scheduler.cron(&quot;%d * * * * *&quot; % ((Time.now.to_i%60) + SECONDS_FROM_NOW) % 60,
+                     {:job_id =&gt; job_id}, &amp;trigger_proc)
     end
   end
-  
-  def unschedule_jobs(scheduler)
-    JOB_IDS.each { |job_id| scheduler.unschedule(job_id) }
-  end
-  
 end
-  
\ No newline at end of file
+
+def unschedule_jobs(scheduler)
+  JOB_IDS.each { |job_id| scheduler.unschedule(job_id) }
+end
+
+end
+</diff>
      <filename>test/kjw.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>ec620b3c589c4eeb9eecd2a374ac15af75b52b8a</id>
    </parent>
  </parents>
  <author>
    <name>John Mettraux</name>
    <email>jmettraux@gmail.com</email>
  </author>
  <url>http://github.com/jmettraux/rufus-scheduler/commit/0f1243ca9bde087bfae76dc42848b407c2e94fc0</url>
  <id>0f1243ca9bde087bfae76dc42848b407c2e94fc0</id>
  <committed-date>2009-05-02T05:55:00-07:00</committed-date>
  <authored-date>2009-05-02T05:55:00-07:00</authored-date>
  <message>adapted Klaas Jan Wierenga's stress spec to bacon</message>
  <tree>c1ef18bcd89b27da48196a721f16c0f94bc615e3</tree>
  <committer>
    <name>John Mettraux</name>
    <email>jmettraux@gmail.com</email>
  </committer>
</commit>
