Created
March 28, 2013 21:59
-
-
Save waptang/5267188 to your computer and use it in GitHub Desktop.
What seems to be a bug in CFEngine when using useresult/bundle_return_value_index. It appears that in some situations, the called bundles fail unless there is an additional output in the results section of the called bundle. The only difference between the bad_result and good_result bundles is that good_result has "input: $(input)" in the report…
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
R: input: test_result.data[alpha] | |
R: good: ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
body common control | |
{ | |
inputs => {"cfengine_stdlib.cf"}; | |
bundlesequence => {"test_result"}; | |
} | |
bundle agent test_result | |
{ | |
vars: | |
any:: | |
"data[alpha][upper]" string => "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; | |
"data[alpha][lower]" string => "abcdefghijklmnopqrstuvwxyz"; | |
"data_idx" slist => getindices("data"); | |
"bad_classes" slist => maplist("bad_$(this)", "data_idx"); | |
"good_classes" slist => maplist("good_$(this)", "data_idx"); | |
classes: | |
any:: | |
"bad_done" and => {@(bad_classes)}; | |
"good_done" and => {@(good_classes)}; | |
methods: | |
any:: | |
"test bad result" usebundle => bad_result("test_result.data[$(data_idx)]"), | |
classes => if_repaired("bad_$(data_idx)"), | |
useresult => "bad[$(data_idx)]"; | |
"test good result" usebundle => good_result("test_result.data[$(data_idx)]"), | |
classes => if_repaired("good_$(data_idx)"), | |
useresult => "good[$(data_idx)]"; | |
reports: | |
bad_done:: | |
"bad: $(bad[$(data_idx)][0])"; | |
good_done:: | |
"good: $(good[$(data_idx)][0])"; | |
} | |
bundle agent bad_result(input) | |
{ | |
vars: | |
any:: | |
"input_idx" slist => getindices("$(input)"); | |
"input_vals" slist => maplist("$($(input)[$(this)])", "input_idx"); | |
"result" string => join("-", "input_vals"), | |
classes => if_repaired("done"); | |
reports: | |
done:: | |
"$(result)", | |
bundle_return_value_index => "0"; | |
} | |
bundle agent good_result(input) | |
{ | |
vars: | |
any:: | |
"input_idx" slist => getindices("$(input)"); | |
"input_vals" slist => maplist("$($(input)[$(this)])", "input_idx"); | |
"result" string => join("-", "input_vals"), | |
classes => if_repaired("done"); | |
reports: | |
done:: | |
"input: $(input)"; | |
"$(result)", | |
bundle_return_value_index => "0"; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cf3> CFEngine - autonomous configuration engine - commence self-diagnostic prelude | |
cf3> ------------------------------------------------------------------------ | |
cf3> Work directory is /var/cfengine | |
cf3> Looking for a source of entropy in /var/cfengine/randseed | |
cf3> Making sure that locks are private... | |
cf3> Checking integrity of the state database | |
cf3> Checking integrity of the module directory | |
cf3> Checking integrity of the PKI directory | |
cf3> -> Loaded private key /var/cfengine/ppkeys/localhost.priv | |
cf3> -> Loaded public key /var/cfengine/ppkeys/localhost.pub | |
cf3> Setting cfengine default port to 5308 = 5308 | |
cf3> Reference time set to Thu Mar 28 22:41:19 2013 | |
cf3> CFEngine Core 3.4.4 | |
cf3> ------------------------------------------------------------------------ | |
cf3> Host name is: localhost.localdomain | |
cf3> Operating System Type is linux | |
cf3> Operating System Release is 2.6.32-279.el6.x86_64 | |
cf3> Architecture = x86_64 | |
cf3> Using internal soft-class linux for host localhost.localdomain | |
cf3> The time is now Thu Mar 28 22:41:19 2013 | |
cf3> ------------------------------------------------------------------------ | |
cf3> # Extended system discovery is only available in version Nova and above | |
cf3> Additional hard class defined as: 64_bit | |
cf3> Additional hard class defined as: linux_2_6_32_279_el6_x86_64 | |
cf3> Additional hard class defined as: linux_x86_64 | |
cf3> Additional hard class defined as: linux_x86_64_2_6_32_279_el6_x86_64 | |
cf3> GNU autoconf class from compile time: compiled_on_linux_gnu | |
cf3> Address given by nameserver: 127.0.0.1 | |
cf3> -> No interface exception file /var/cfengine/inputs/ignore_interfaces.rx | |
cf3> Interface 1: lo | |
cf3> Interface 2: eth0 | |
cf3> Interface 3: eth1 | |
cf3> Trying to locate my IPv6 address | |
cf3> Found IPv6 address fe80::a00:27ff:fe41:f043 | |
cf3> Found IPv6 address fe80::a00:27ff:fec9:dd25 | |
cf3> Looking for environment from cf-monitord... | |
cf3> Unable to detect environment from cf-monitord | |
cf3> This appears to be a redhat (or redhat-based) system. | |
cf3> Looking for redhat linux info in "CentOS release 6.3 (Final)" | |
cf3> Reading /proc/stat utilization data ------- | |
cf3> -> Found 1 cpu cores | |
cf3> *********************************************************** | |
cf3> Loading persistent classes | |
cf3> *********************************************************** | |
cf3> *********************************************************** | |
cf3> Loaded persistent memory | |
cf3> *********************************************************** | |
cf3> -> No policy server (hub) watch yet registered | |
cf3> -> Input file is outside default repository, validating it | |
cf3> -> Promises seem to change | |
cf3> -> Input file is changed since last validation, validating it | |
cf3> -> Verifying the syntax of the inputs... | |
cf3> Checking policy with command ""/var/cfengine/bin/cf-promises" -f "./test.cf"" | |
cf3> > Parsing file ./test.cf | |
cf3> Initiate variable convergence... | |
cf3> Function "join" was promised a list called "this.input_vals" but this was not (yet) found | |
cf3> Function "join" was promised a list called "this.input_vals" but this was not (yet) found | |
cf3> > Parsing file ./cfengine_stdlib.cf | |
cf3> Initiate variable convergence... | |
cf3> Function "join" was promised a list called "this.input_vals" but this was not (yet) found | |
cf3> Function "join" was promised a list called "this.input_vals" but this was not (yet) found | |
cf3> -> Checking common class promises... | |
cf3> ?> defining additional global class _stdlib_path_exists_df | |
cf3> ?> defining explicit global class _stdlib_path_exists_df | |
cf3> ?> defining additional global class _stdlib_path_exists_cat | |
cf3> ?> defining explicit global class _stdlib_path_exists_cat | |
cf3> ?> defining additional global class _stdlib_path_exists_chkconfig | |
cf3> ?> defining explicit global class _stdlib_path_exists_chkconfig | |
cf3> ?> defining additional global class _stdlib_path_exists_find | |
cf3> ?> defining explicit global class _stdlib_path_exists_find | |
cf3> ?> defining additional global class _stdlib_path_exists_ifconfig | |
cf3> ?> defining explicit global class _stdlib_path_exists_ifconfig | |
cf3> ?> defining additional global class _stdlib_path_exists_hostname | |
cf3> ?> defining explicit global class _stdlib_path_exists_hostname | |
cf3> ?> defining additional global class _stdlib_path_exists_sort | |
cf3> ?> defining explicit global class _stdlib_path_exists_sort | |
cf3> ?> defining additional global class _stdlib_path_exists_sed | |
cf3> ?> defining explicit global class _stdlib_path_exists_sed | |
cf3> ?> defining additional global class _stdlib_path_exists_service | |
cf3> ?> defining explicit global class _stdlib_path_exists_service | |
cf3> ?> defining additional global class _stdlib_path_exists_printf | |
cf3> ?> defining explicit global class _stdlib_path_exists_printf | |
cf3> ?> defining additional global class _stdlib_path_exists_egrep | |
cf3> ?> defining explicit global class _stdlib_path_exists_egrep | |
cf3> ?> defining additional global class _stdlib_path_exists_rpm | |
cf3> ?> defining explicit global class _stdlib_path_exists_rpm | |
cf3> ?> defining additional global class _stdlib_path_exists_groupdel | |
cf3> ?> defining explicit global class _stdlib_path_exists_groupdel | |
cf3> ?> defining additional global class _stdlib_path_exists_userdel | |
cf3> ?> defining explicit global class _stdlib_path_exists_userdel | |
cf3> ?> defining additional global class _stdlib_path_exists_domainname | |
cf3> ?> defining explicit global class _stdlib_path_exists_domainname | |
cf3> ?> defining additional global class _stdlib_path_exists_useradd | |
cf3> ?> defining explicit global class _stdlib_path_exists_useradd | |
cf3> ?> defining additional global class _stdlib_path_exists_svc | |
cf3> ?> defining explicit global class _stdlib_path_exists_svc | |
cf3> ?> defining additional global class _stdlib_path_exists_netstat | |
cf3> ?> defining explicit global class _stdlib_path_exists_netstat | |
cf3> ?> defining additional global class _stdlib_path_exists_groupadd | |
cf3> ?> defining explicit global class _stdlib_path_exists_groupadd | |
cf3> ?> defining additional global class _stdlib_path_exists_echo | |
cf3> ?> defining explicit global class _stdlib_path_exists_echo | |
cf3> ?> defining additional global class _stdlib_path_exists_yum | |
cf3> ?> defining explicit global class _stdlib_path_exists_yum | |
cf3> ?> defining additional global class _stdlib_path_exists_grep | |
cf3> ?> defining explicit global class _stdlib_path_exists_grep | |
cf3> ?> defining additional global class _stdlib_path_exists_cksum | |
cf3> ?> defining explicit global class _stdlib_path_exists_cksum | |
cf3> ?> defining additional global class _stdlib_path_exists_tr | |
cf3> ?> defining explicit global class _stdlib_path_exists_tr | |
cf3> ?> defining additional global class _stdlib_path_exists_awk | |
cf3> ?> defining explicit global class _stdlib_path_exists_awk | |
cf3> ?> defining additional global class _stdlib_path_exists_diff | |
cf3> ?> defining explicit global class _stdlib_path_exists_diff | |
cf3> ?> defining additional global class _stdlib_path_exists_ip | |
cf3> ?> defining explicit global class _stdlib_path_exists_ip | |
cf3> ?> defining additional global class _stdlib_path_exists_ls | |
cf3> ?> defining explicit global class _stdlib_path_exists_ls | |
cf3> ?> defining additional global class _stdlib_path_exists_cut | |
cf3> ?> defining explicit global class _stdlib_path_exists_cut | |
cf3> Initiate variable convergence... | |
cf3> Function "join" was promised a list called "this.input_vals" but this was not (yet) found | |
cf3> Function "join" was promised a list called "this.input_vals" but this was not (yet) found | |
cf3> -> Checking common class promises... | |
cf3> -> Hard classes = { 10_0_2_15 192_168_34_10 1_cpu 64_bit Day28 Evening GMT_Hr21 Hr22 Hr22_Q3 Lcycle_0 March Min40_45 Min41 PK_MD5_ae5bc9f4ce9bf15bde526741b3231153 Q3 Thursday Yr2013 agent any centos centos_6 centos_6_3 cfengine cfengine_3 cfengine_3_4 cfengine_3_4_4 community_edition compiled_on_linux_gnu fe80__a00_27ff_fe41_f043 fe80__a00_27ff_fec9_dd25 ipv4_10 ipv4_10_0 ipv4_10_0_2 ipv4_10_0_2_15 ipv4_192 ipv4_192_168 ipv4_192_168_34 ipv4_192_168_34_10 linux linux_2_6_32_279_el6_x86_64 linux_x86_64 linux_x86_64_2_6_32_279_el6_x86_64 linux_x86_64_2_6_32_279_el6_x86_64__1_SMP_Fri_Jun_22_12_19_21_UTC_2012 localdomain localhost localhost4 localhost4_localdomain4 localhost6 localhost6_localdomain6 localhost_localdomain mac_08_00_27_41_f0_43 mac_08_00_27_c9_dd_25 net_iface_eth0 net_iface_eth1 redhat verbose_mode x86_64 } | |
cf3> -> Additional classes = { _stdlib_path_exists_awk _stdlib_path_exists_cat _stdlib_path_exists_chkconfig _stdlib_path_exists_cksum _stdlib_path_exists_cut _stdlib_path_exists_df _stdlib_path_exists_diff _stdlib_path_exists_domainname _stdlib_path_exists_echo _stdlib_path_exists_egrep _stdlib_path_exists_find _stdlib_path_exists_grep _stdlib_path_exists_groupadd _stdlib_path_exists_groupdel _stdlib_path_exists_hostname _stdlib_path_exists_ifconfig _stdlib_path_exists_ip _stdlib_path_exists_ls _stdlib_path_exists_netstat _stdlib_path_exists_printf _stdlib_path_exists_rpm _stdlib_path_exists_sed _stdlib_path_exists_service _stdlib_path_exists_sort _stdlib_path_exists_svc _stdlib_path_exists_tr _stdlib_path_exists_useradd _stdlib_path_exists_userdel _stdlib_path_exists_yum } | |
cf3> -> Negated Classes = { } | |
cf3> Function "join" was promised a list called "this.input_vals" but this was not (yet) found | |
cf3> Function "join" was promised a list called "this.input_vals" but this was not (yet) found | |
cf3> Function "join" was promised a list called "this.input_vals" but this was not (yet) found | |
cf3> Function "join" was promised a list called "this.input_vals" but this was not (yet) found | |
cf3> Initiate variable convergence... | |
cf3> Function "join" was promised a list called "this.input_vals" but this was not (yet) found | |
cf3> Function "join" was promised a list called "this.input_vals" but this was not (yet) found | |
cf3> -> Checking common class promises... | |
cf3> ?> defining additional global class _stdlib_has_path_createrepo | |
cf3> ?> defining explicit global class _stdlib_has_path_createrepo | |
cf3> ?> defining additional global class _stdlib_has_path_df | |
cf3> ?> defining explicit global class _stdlib_has_path_df | |
cf3> ?> defining additional global class _stdlib_has_path_ping | |
cf3> ?> defining explicit global class _stdlib_has_path_ping | |
cf3> ?> defining additional global class _stdlib_has_path_cat | |
cf3> ?> defining explicit global class _stdlib_has_path_cat | |
cf3> ?> defining additional global class _stdlib_has_path_chkconfig | |
cf3> ?> defining explicit global class _stdlib_has_path_chkconfig | |
cf3> ?> defining additional global class _stdlib_has_path_find | |
cf3> ?> defining explicit global class _stdlib_has_path_find | |
cf3> ?> defining additional global class _stdlib_has_path_ifconfig | |
cf3> ?> defining explicit global class _stdlib_has_path_ifconfig | |
cf3> ?> defining additional global class _stdlib_has_path_dig | |
cf3> ?> defining explicit global class _stdlib_has_path_dig | |
cf3> ?> defining additional global class _stdlib_has_path_hostname | |
cf3> ?> defining explicit global class _stdlib_has_path_hostname | |
cf3> ?> defining additional global class _stdlib_has_path_sort | |
cf3> ?> defining explicit global class _stdlib_has_path_sort | |
cf3> ?> defining additional global class _stdlib_has_path_sed | |
cf3> ?> defining explicit global class _stdlib_has_path_sed | |
cf3> ?> defining additional global class _stdlib_has_path_crontabs | |
cf3> ?> defining explicit global class _stdlib_has_path_crontabs | |
cf3> ?> defining additional global class _stdlib_has_path_service | |
cf3> ?> defining explicit global class _stdlib_has_path_service | |
cf3> ?> defining additional global class _stdlib_has_path_printf | |
cf3> ?> defining explicit global class _stdlib_has_path_printf | |
cf3> ?> defining additional global class _stdlib_has_path_egrep | |
cf3> ?> defining explicit global class _stdlib_has_path_egrep | |
cf3> ?> defining additional global class _stdlib_has_path_rpm | |
cf3> ?> defining explicit global class _stdlib_has_path_rpm | |
cf3> ?> defining additional global class _stdlib_has_path_groupdel | |
cf3> ?> defining explicit global class _stdlib_has_path_groupdel | |
cf3> ?> defining additional global class _stdlib_has_path_userdel | |
cf3> ?> defining explicit global class _stdlib_has_path_userdel | |
cf3> ?> defining additional global class _stdlib_has_path_domainname | |
cf3> ?> defining explicit global class _stdlib_has_path_domainname | |
cf3> ?> defining additional global class _stdlib_has_path_useradd | |
cf3> ?> defining explicit global class _stdlib_has_path_useradd | |
cf3> ?> defining additional global class _stdlib_has_path_svc | |
cf3> ?> defining explicit global class _stdlib_has_path_svc | |
cf3> ?> defining additional global class _stdlib_has_path_crontab | |
cf3> ?> defining explicit global class _stdlib_has_path_crontab | |
cf3> ?> defining additional global class _stdlib_has_path_netstat | |
cf3> ?> defining explicit global class _stdlib_has_path_netstat | |
cf3> ?> defining additional global class _stdlib_has_path_groupadd | |
cf3> ?> defining explicit global class _stdlib_has_path_groupadd | |
cf3> ?> defining additional global class _stdlib_has_path_echo | |
cf3> ?> defining explicit global class _stdlib_has_path_echo | |
cf3> ?> defining additional global class _stdlib_has_path_yum | |
cf3> ?> defining explicit global class _stdlib_has_path_yum | |
cf3> ?> defining additional global class _stdlib_has_path_grep | |
cf3> ?> defining explicit global class _stdlib_has_path_grep | |
cf3> ?> defining additional global class _stdlib_has_path_cksum | |
cf3> ?> defining explicit global class _stdlib_has_path_cksum | |
cf3> ?> defining additional global class _stdlib_has_path_tr | |
cf3> ?> defining explicit global class _stdlib_has_path_tr | |
cf3> ?> defining additional global class _stdlib_has_path_bc | |
cf3> ?> defining explicit global class _stdlib_has_path_bc | |
cf3> ?> defining additional global class _stdlib_has_path_dc | |
cf3> ?> defining explicit global class _stdlib_has_path_dc | |
cf3> ?> defining additional global class _stdlib_has_path_awk | |
cf3> ?> defining explicit global class _stdlib_has_path_awk | |
cf3> ?> defining additional global class _stdlib_has_path_diff | |
cf3> ?> defining explicit global class _stdlib_has_path_diff | |
cf3> ?> defining additional global class _stdlib_has_path_ip | |
cf3> ?> defining explicit global class _stdlib_has_path_ip | |
cf3> ?> defining additional global class _stdlib_has_path_ls | |
cf3> ?> defining explicit global class _stdlib_has_path_ls | |
cf3> ?> defining additional global class _stdlib_has_path_cut | |
cf3> ?> defining explicit global class _stdlib_has_path_cut | |
cf3> -> Immunizing against parental death | |
cf3> -> Bundlesequence => {'test_result'} | |
cf3> | |
cf3> ***************************************************************** | |
cf3> BUNDLE test_result | |
cf3> ***************************************************************** | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> vars in bundle test_result (1) | |
cf3> ========================================================= | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> classes in bundle test_result (1) | |
cf3> ========================================================= | |
cf3> | |
cf3> Initiate variable convergence... | |
cf3> | |
cf3> + Private classes augmented: | |
cf3> | |
cf3> - Private classes diminished: | |
cf3> | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> methods in bundle test_result (1) | |
cf3> ========================================================= | |
cf3> | |
cf3> | |
cf3> ......................................................... | |
cf3> Promise's handle: | |
cf3> Promise made by: "test bad result" | |
cf3> ......................................................... | |
cf3> | |
cf3> | |
cf3> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * | |
cf3> BUNDLE bad_result( {'test_result.data[alpha]'} ) | |
cf3> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * | |
cf3> | |
cf3> Initiate variable convergence... | |
cf3> Function "join" was promised a list called "this.input_vals" but this was not (yet) found | |
cf3> ? Augment scope bad_result with input (s) | |
cf3> | |
cf3> ========================================================= | |
cf3> vars in bundle bad_result (1) | |
cf3> ========================================================= | |
cf3> | |
cf3> ?> defining promise result class done | |
cf3> ?> defining promise result class done | |
cf3> | |
cf3> + Private classes augmented: | |
cf3> | |
cf3> - Private classes diminished: | |
cf3> | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> reports in bundle bad_result (1) | |
cf3> ========================================================= | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> vars in bundle bad_result (2) | |
cf3> ========================================================= | |
cf3> | |
cf3> ?> defining promise result class done | |
cf3> ?> defining promise result class done | |
cf3> | |
cf3> + Private classes augmented: | |
cf3> | |
cf3> - Private classes diminished: | |
cf3> | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> reports in bundle bad_result (2) | |
cf3> ========================================================= | |
cf3> | |
cf3> -> This promise has already been verified | |
cf3> | |
cf3> ========================================================= | |
cf3> vars in bundle bad_result (3) | |
cf3> ========================================================= | |
cf3> | |
cf3> ?> defining promise result class done | |
cf3> ?> defining promise result class done | |
cf3> | |
cf3> + Private classes augmented: | |
cf3> | |
cf3> - Private classes diminished: | |
cf3> | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> reports in bundle bad_result (3) | |
cf3> ========================================================= | |
cf3> | |
cf3> -> This promise has already been verified | |
cf3> ==> Zero promises executed for bundle "bad_result" | |
cf3> -> Method verified | |
cf3> | |
cf3> ......................................................... | |
cf3> Promise's handle: | |
cf3> Promise made by: "test good result" | |
cf3> ......................................................... | |
cf3> | |
cf3> | |
cf3> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * | |
cf3> BUNDLE good_result( {'test_result.data[alpha]'} ) | |
cf3> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * | |
cf3> | |
cf3> Initiate variable convergence... | |
cf3> Function "join" was promised a list called "this.input_vals" but this was not (yet) found | |
cf3> ? Augment scope good_result with input (s) | |
cf3> | |
cf3> ========================================================= | |
cf3> vars in bundle good_result (1) | |
cf3> ========================================================= | |
cf3> | |
cf3> ?> defining promise result class done | |
cf3> ?> defining promise result class done | |
cf3> | |
cf3> + Private classes augmented: | |
cf3> | |
cf3> - Private classes diminished: | |
cf3> | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> reports in bundle good_result (1) | |
cf3> ========================================================= | |
cf3> | |
cf3> | |
cf3> ......................................................... | |
cf3> Promise's handle: | |
cf3> Promise made by: "input: test_result.data[alpha]" | |
cf3> ......................................................... | |
cf3> | |
cf3> Report: input: test_result.data[alpha] | |
cf3> R: input: test_result.data[alpha] | |
cf3> | |
cf3> ========================================================= | |
cf3> vars in bundle good_result (2) | |
cf3> ========================================================= | |
cf3> | |
cf3> ?> defining promise result class done | |
cf3> ?> defining promise result class done | |
cf3> | |
cf3> + Private classes augmented: | |
cf3> | |
cf3> - Private classes diminished: | |
cf3> | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> reports in bundle good_result (2) | |
cf3> ========================================================= | |
cf3> | |
cf3> -> This promise has already been verified | |
cf3> -> This promise has already been verified | |
cf3> | |
cf3> ========================================================= | |
cf3> vars in bundle good_result (3) | |
cf3> ========================================================= | |
cf3> | |
cf3> ?> defining promise result class done | |
cf3> ?> defining promise result class done | |
cf3> | |
cf3> + Private classes augmented: | |
cf3> | |
cf3> - Private classes diminished: | |
cf3> | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> reports in bundle good_result (3) | |
cf3> ========================================================= | |
cf3> | |
cf3> -> This promise has already been verified | |
cf3> -> This promise has already been verified | |
cf3> ==> == Bundle Accounting Summary for "good_result" == | |
cf3> ==> Promises kept in "good_result" = 0 | |
cf3> ==> Promises not kept in "good_result" = 0 | |
cf3> ==> Promises repaired in "good_result" = 1 | |
cf3> ==> Aggregate compliance (promises kept/repaired) for bundle "good_result" = 100.0% | |
cf3> !! Method invoked repairs | |
cf3> ?> defining promise result class good_alpha | |
cf3> | |
cf3> ========================================================= | |
cf3> reports in bundle test_result (1) | |
cf3> ========================================================= | |
cf3> | |
cf3> | |
cf3> . . . . . . . . . . . . . . . . . . . . . . . . . . . . | |
cf3> Skipping whole next promise (bad: ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz), as context bad_done is not relevant | |
cf3> . . . . . . . . . . . . . . . . . . . . . . . . . . . . | |
cf3> | |
cf3> . . . . . . . . . . . . . . . . . . . . . . . . . . . . | |
cf3> Skipping whole next promise (good: ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz), as context good_done is not relevant | |
cf3> . . . . . . . . . . . . . . . . . . . . . . . . . . . . | |
cf3> | |
cf3> ========================================================= | |
cf3> vars in bundle test_result (2) | |
cf3> ========================================================= | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> classes in bundle test_result (2) | |
cf3> ========================================================= | |
cf3> | |
cf3> ?> defining explicit local bundle class good_done | |
cf3> Initiate variable convergence... | |
cf3> | |
cf3> + Private classes augmented: | |
cf3> + good_done | |
cf3> | |
cf3> - Private classes diminished: | |
cf3> | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> methods in bundle test_result (2) | |
cf3> ========================================================= | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> reports in bundle test_result (2) | |
cf3> ========================================================= | |
cf3> | |
cf3> | |
cf3> . . . . . . . . . . . . . . . . . . . . . . . . . . . . | |
cf3> Skipping whole next promise (bad: ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz), as context bad_done is not relevant | |
cf3> . . . . . . . . . . . . . . . . . . . . . . . . . . . . | |
cf3> | |
cf3> ......................................................... | |
cf3> Promise's handle: | |
cf3> Promise made by: "good: ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz" | |
cf3> ......................................................... | |
cf3> | |
cf3> Report: good: ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz | |
cf3> R: good: ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz | |
cf3> | |
cf3> ========================================================= | |
cf3> vars in bundle test_result (3) | |
cf3> ========================================================= | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> classes in bundle test_result (3) | |
cf3> ========================================================= | |
cf3> | |
cf3> Initiate variable convergence... | |
cf3> | |
cf3> + Private classes augmented: | |
cf3> + good_done | |
cf3> | |
cf3> - Private classes diminished: | |
cf3> | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> methods in bundle test_result (3) | |
cf3> ========================================================= | |
cf3> | |
cf3> | |
cf3> ========================================================= | |
cf3> reports in bundle test_result (3) | |
cf3> ========================================================= | |
cf3> | |
cf3> | |
cf3> . . . . . . . . . . . . . . . . . . . . . . . . . . . . | |
cf3> Skipping whole next promise (bad: ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz), as context bad_done is not relevant | |
cf3> . . . . . . . . . . . . . . . . . . . . . . . . . . . . | |
cf3> ==> == Bundle Accounting Summary for "test_result" == | |
cf3> ==> Promises kept in "test_result" = 1 | |
cf3> ==> Promises not kept in "test_result" = 0 | |
cf3> ==> Promises repaired in "test_result" = 3 | |
cf3> ==> Aggregate compliance (promises kept/repaired) for bundle "test_result" = 100.0% | |
cf3> Total: Outcome of version (not specified) (agent-0): Promises observed to be kept 25%, Promises repaired 75%, Promises not repaired 0% | |
cf3> -> Checked 0 objects with 20 promises, i.e. model efficiency 0.00% | |
cf3> -> The 20 declared promise patterns actually expanded into 4 individual promises, i.e. declaration efficiency -400.00% | |
cf3> -> No lock purging scheduled |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
None of the promises in your bad_result agent are actually repaired. Since you're only setting classes in test_result from the methods "if_repaired", there's nothing to trigger that.
Reporting a line happens to count as a repair, so having the good_result log anything triggers your if_repaired.
You could also use body classes always or if_ok.