namespace :abcrunch do

AbCrunch::Config.page_sets.keys.each do |page_set_key|
  unless Rake::Task.task_defined? page_set_key
    desc "Run load tests for #{page_set_key}"
    task page_set_key do
      AbCrunch::Tester.test(AbCrunch::Config.page_sets[page_set_key])
    end

    namespace page_set_key do
      desc "Run a focused page load test in #{page_set_key}. Example rake abcrunch:#{page_set_key}:focus[0] runs the first page"
      task :focus, [:page_index] do |t, args|
        unless verify_abcrunch_args(args, page_set_key)
          raise "usage: rake abcrunch:#{page_set_key}:focus[<page_index>]"
        end

        orig_page = AbCrunch::Config.page_sets[page_set_key][args[:page_index].to_i]
        AbCrunch::PageTester.test(orig_page)
      end

      def verify_abcrunch_args(args, page_set_key)
        max_idx = AbCrunch::Config.page_sets[page_set_key].length-1
        if !args[:page_index]
          puts "Focusing on... NOTHING!  (dork)"
          return false
        elsif !(0..max_idx).include?(args[:page_index].to_i)
          puts "Page index (#{args[:page_index]}) not in range (0..#{max_idx})"
          return false
        end
        true
      end
    end
  end
end

end