|
33 | 33 |
|
34 | 34 | -export([all_tests/0, test_parsing/0]). |
35 | 35 |
|
| 36 | +%% Exported so the hook mechanism can call back |
| 37 | +-export([handle_hook/3, bad_handle_hook/3, extra_arg_hook/5]). |
| 38 | + |
36 | 39 | -import(lists). |
37 | 40 |
|
38 | 41 | -include("rabbit.hrl"). |
@@ -604,36 +607,32 @@ test_server_status() -> |
604 | 607 |
|
605 | 608 | test_hooks() -> |
606 | 609 | %% Firing of hooks calls all hooks in an isolated manner |
607 | | - rabbit_hooks:subscribe(test_hook, test, |
608 | | - fun(Args) -> |
609 | | - put(fired_testhook_handler, Args) |
610 | | - end), |
611 | | - rabbit_hooks:subscribe(test_hook, test2, |
612 | | - fun(Args) -> |
613 | | - put(fired_testhook_handler2, Args) |
614 | | - end), |
615 | | - rabbit_hooks:subscribe(test_hook2, test2, |
616 | | - fun(Args) -> |
617 | | - put(fired_testhook2_handler, Args) |
618 | | - end), |
| 610 | + rabbit_hooks:subscribe(test_hook, test, {rabbit_tests, handle_hook, []}), |
| 611 | + rabbit_hooks:subscribe(test_hook, test2, {rabbit_tests, handle_hook, []}), |
| 612 | + rabbit_hooks:subscribe(test_hook2, test2, {rabbit_tests, handle_hook, []}), |
619 | 613 | rabbit_hooks:trigger(test_hook, [arg1, arg2]), |
620 | | - [arg1, arg2] = get(fired_testhook_handler), |
621 | | - [arg1, arg2] = get(fired_testhook_handler2), |
622 | | - undefined = get(fired_testhook2_handler), |
| 614 | + [arg1, arg2] = get(test_hook_test_fired), |
| 615 | + [arg1, arg2] = get(test_hook_test2_fired), |
| 616 | + undefined = get(test_hook2_test2_fired), |
623 | 617 |
|
624 | 618 | %% Hook Deletion works |
625 | | - put(fired_testhook_handler, undefined), |
626 | | - put(fired_testhook_handler2, undefined), |
| 619 | + put(test_hook_test_fired, undefined), |
| 620 | + put(test_hook_test2_fired, undefined), |
627 | 621 | rabbit_hooks:unsubscribe(test_hook, test), |
628 | 622 | rabbit_hooks:trigger(test_hook, [arg3, arg4]), |
629 | | - undefined = get(fired_testhook_handler), |
630 | | - [arg3, arg4] = get(fired_testhook_handler2), |
631 | | - undefined = get(fired_testhook2_handler), |
| 623 | + undefined = get(test_hook_test_fired), |
| 624 | + [arg3, arg4] = get(test_hook_test2_fired), |
| 625 | + undefined = get(test_hook2_test2_fired), |
632 | 626 |
|
633 | 627 | %% Catches exceptions from bad hooks |
634 | | - rabbit_hooks:subscribe(test_hook3, test, fun(Args) -> bad:bad() end), |
| 628 | + rabbit_hooks:subscribe(test_hook3, test, {rabbit_tests, bad_handle_hook, []}), |
635 | 629 | ok = rabbit_hooks:trigger(test_hook3, []), |
636 | 630 |
|
| 631 | + %% Passing extra arguments to hooks |
| 632 | + rabbit_hooks:subscribe(arg_hook, test, {rabbit_tests, extra_arg_hook, [1, 3]}), |
| 633 | + rabbit_hooks:trigger(arg_hook, [arg1, arg2]), |
| 634 | + {[arg1, arg2], 1, 3} = get(arg_hook_test_fired), |
| 635 | + |
637 | 636 | passed. |
638 | 637 |
|
639 | 638 | %--------------------------------------------------------------------- |
@@ -719,3 +718,11 @@ delete_log_handlers(Handlers) -> |
719 | 718 | [[] = error_logger:delete_report_handler(Handler) || |
720 | 719 | Handler <- Handlers], |
721 | 720 | ok. |
| 721 | + |
| 722 | +handle_hook(HookName, Handler, Args) -> |
| 723 | + A = atom_to_list(HookName) ++ "_" ++ atom_to_list(Handler) ++ "_fired", |
| 724 | + put(list_to_atom(A), Args). |
| 725 | +bad_handle_hook(_, _, _) -> |
| 726 | + bad:bad(). |
| 727 | +extra_arg_hook(Hookname, Handler, Args, Extra1, Extra2) -> |
| 728 | + handle_hook(Hookname, Handler, {Args, Extra1, Extra2}). |
0 commit comments