Вече го изпробвах, но следното съобщение за грешка се появява, докато се появява: Контролите на съдържанието трябва да са контроли от най-високо ниво в страница със съдържание или вложена шаблонна страница, която препраща към шаблонна страница. System.Web.HttpException: Контролите на съдържанието трябва да бъдат контроли от най-високо ниво в страница със съдържание или вложена шаблонна страница, която препраща към шаблонна страница.

person bartligthart    schedule 09.09.2009    source източник


Отговори (3)


Създаването на такъв тест не би трябвало да е голям проблем. Генерирайте 100 имейла с висок приоритет, след това 100 с нисък. Или обратното. Не започвайте работниците си, преди да сте проверили базата данни, за да видите, че всяка работа е там и е отчетена. Стартирайте вашите работници и наблюдавайте как се изпълняват задачите - и в правилния ред. Не забравяйте, че приоритетът в d_j е възходящ, така че приоритет 1 е по-висок от 10.

Сега 200 работни места не са много. Вашите работници вероятно ще ги екзекутират всички доста бързо. Ако наистина искате да проверите дали вашите имейли с нисък приоритет все още се изпращат, вероятно ще трябва да разчитате на това какво друго имате в опашката си - при условие, че използвате d_j за нещо повече от имейл. Бих посъветвал да попълните опашката с поне няколко хиляди работни места - или каквото можете да си представите като "най-лошия сценарий" - и да изпълните теста с това. Ако задачите, които не са свързани с имейл, имат по-висок приоритет от имейлите с нисък приоритет, е по-вероятно те да повлияят на доставката на имейли, отколкото 100-те такива с висок приоритет.

person vonconrad    schedule 17.03.2010

Ако се интересувате да разберете колко бързо тези имейли ще достигнат до реални получатели там, можете да направите само едно нещо: Изпратете тези имейли. Без действително преминаване през целия процес на доставка, няма абсолютно никакъв начин да се каже колко от тези имейли ще бъдат забавени поради сив списък, неправилно работещи MX, претоварени MX, повредени скенери за съдържание (или по-лошо, повредени скенери за съдържание в SMTP прокси режим), прекъсната интернет връзка на получаващите сървъри и т.н.

person cite    schedule 09.09.2009

Всъщност внедрих теста, за да тествам обработката на DelayedJob при изпращане на имейли. Тестът всъщност е доста прост.

Трябва да поставите 2 задачи в опашка (вместо 100), една с висок приоритет и една с по-нисък приоритет. След това можете да използвате метода "Delayed::Job.work_off", за да изпълните първото задание, след което да потвърдите, че заданието с по-нисък приоритет все още е в чакащата база данни. Ако все още не сте сигурни как да изпълните задача, разгледайте библиотеката. Кодът е доста добре написан.

Ето извадката от кода от моето приложение. По принцип трябва да изпращам напомнящи имейли до потребителите, така че трябва да се уверя, че задачите се изпълняват правилно и мейлъра няма да избухне. Поставих този тест във файла за тестване на модула напомняне_test.rb, тъй като моделът Reminder знае всичко за това как да поставя в опашка и да изпраща имейли.

# enqueue the jobs here

assert_difference 'Delayed::Job.count', -1, 'Job should execute successfully' do
  assert_difference 'ActionMailer::Base.deliveries.count' do
    Delayed::Job.work_off
  end 
end

# make sure the email was properly delivered
email = ActionMailer::Base.deliveries.last
assert_equal email.to[0], @user.email
assert (Time.now - @reminder.reload.sent_at) < 1.seconds

наздраве! Надявам се това да помогне

Алекс

person Alex Le    schedule 02.08.2010