xref: /unit/test/test_ruby_hooks.py (revision 2692:97b0a59051f1)
12491Szelenkov@nginx.comfrom unit.applications.lang.ruby import ApplicationRuby
21912So.canty@f5.comfrom unit.option import option
31912So.canty@f5.comfrom unit.utils import waitforglob
4*2692Szelenkov@nginx.comfrom packaging import version
51912So.canty@f5.com
6*2692Szelenkov@nginx.comprerequisites = {
7*2692Szelenkov@nginx.com    'modules': {'ruby': lambda v: version.parse(v) >= version.parse('3.0')}
8*2692Szelenkov@nginx.com}
92488Szelenkov@nginx.com
102491Szelenkov@nginx.comclient = ApplicationRuby()
111912So.canty@f5.com
122491Szelenkov@nginx.com
132491Szelenkov@nginx.comdef wait_cookie(pattern, count):
142491Szelenkov@nginx.com    return waitforglob(f'{option.temp_dir}/ruby/hooks/cookie_{pattern}', count)
151912So.canty@f5.com
162491Szelenkov@nginx.com
172491Szelenkov@nginx.comdef test_ruby_hooks_eval():
182491Szelenkov@nginx.com    processes = 2
191912So.canty@f5.com
202491Szelenkov@nginx.com    client.load('hooks', processes=processes, hooks='eval.rb')
211912So.canty@f5.com
222491Szelenkov@nginx.com    hooked = wait_cookie('eval.*', processes)
232491Szelenkov@nginx.com
242491Szelenkov@nginx.com    assert hooked, 'hooks evaluated'
251912So.canty@f5.com
261912So.canty@f5.com
272491Szelenkov@nginx.comdef test_ruby_hooks_on_worker_boot():
282491Szelenkov@nginx.com    processes = 2
291912So.canty@f5.com
302491Szelenkov@nginx.com    client.load('hooks', processes=processes, hooks='on_worker_boot.rb')
311912So.canty@f5.com
322491Szelenkov@nginx.com    hooked = wait_cookie('worker_boot.*', processes)
331912So.canty@f5.com
342491Szelenkov@nginx.com    assert hooked, 'on_worker_boot called'
352491Szelenkov@nginx.com
361912So.canty@f5.com
372491Szelenkov@nginx.comdef test_ruby_hooks_on_worker_shutdown():
382491Szelenkov@nginx.com    processes = 2
391912So.canty@f5.com
402491Szelenkov@nginx.com    client.load('hooks', processes=processes, hooks='on_worker_shutdown.rb')
411912So.canty@f5.com
422491Szelenkov@nginx.com    assert client.get()['status'] == 200, 'app response'
431912So.canty@f5.com
442491Szelenkov@nginx.com    client.load('empty')
451912So.canty@f5.com
462491Szelenkov@nginx.com    hooked = wait_cookie('worker_shutdown.*', processes)
471912So.canty@f5.com
482491Szelenkov@nginx.com    assert hooked, 'on_worker_shutdown called'
492491Szelenkov@nginx.com
501912So.canty@f5.com
512491Szelenkov@nginx.comdef test_ruby_hooks_on_thread_boot():
522491Szelenkov@nginx.com    processes = 1
532491Szelenkov@nginx.com    threads = 2
541912So.canty@f5.com
552491Szelenkov@nginx.com    client.load(
562491Szelenkov@nginx.com        'hooks',
572491Szelenkov@nginx.com        processes=processes,
582491Szelenkov@nginx.com        threads=threads,
592491Szelenkov@nginx.com        hooks='on_thread_boot.rb',
602491Szelenkov@nginx.com    )
611912So.canty@f5.com
622491Szelenkov@nginx.com    hooked = wait_cookie('thread_boot.*', processes * threads)
631912So.canty@f5.com
642491Szelenkov@nginx.com    assert hooked, 'on_thread_boot called'
651912So.canty@f5.com
662491Szelenkov@nginx.com
672491Szelenkov@nginx.comdef test_ruby_hooks_on_thread_shutdown():
682491Szelenkov@nginx.com    processes = 1
692491Szelenkov@nginx.com    threads = 2
701912So.canty@f5.com
712491Szelenkov@nginx.com    client.load(
722491Szelenkov@nginx.com        'hooks',
732491Szelenkov@nginx.com        processes=processes,
742491Szelenkov@nginx.com        threads=threads,
752491Szelenkov@nginx.com        hooks='on_thread_shutdown.rb',
762491Szelenkov@nginx.com    )
771912So.canty@f5.com
782491Szelenkov@nginx.com    assert client.get()['status'] == 200, 'app response'
791912So.canty@f5.com
802491Szelenkov@nginx.com    client.load('empty')
811912So.canty@f5.com
822491Szelenkov@nginx.com    hooked = wait_cookie('thread_shutdown.*', processes * threads)
831912So.canty@f5.com
842491Szelenkov@nginx.com    assert hooked, 'on_thread_shutdown called'
852491Szelenkov@nginx.com
861912So.canty@f5.com
872491Szelenkov@nginx.comdef test_ruby_hooks_multiple():
882491Szelenkov@nginx.com    processes = 1
892491Szelenkov@nginx.com    threads = 1
901912So.canty@f5.com
912491Szelenkov@nginx.com    client.load(
922491Szelenkov@nginx.com        'hooks',
932491Szelenkov@nginx.com        processes=processes,
942491Szelenkov@nginx.com        threads=threads,
952491Szelenkov@nginx.com        hooks='multiple.rb',
962491Szelenkov@nginx.com    )
971912So.canty@f5.com
982491Szelenkov@nginx.com    hooked = wait_cookie('worker_boot.*', processes)
992491Szelenkov@nginx.com    assert hooked, 'on_worker_boot called'
1001912So.canty@f5.com
1012491Szelenkov@nginx.com    hooked = wait_cookie('thread_boot.*', threads)
1022491Szelenkov@nginx.com    assert hooked, 'on_thread_boot called'
103