Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CLOUDNS: enable concurrent access #3232

Merged
merged 4 commits into from
Dec 12, 2024

Conversation

hmoffatt
Copy link
Contributor

This enables concurrent access on CLOUDNS. Tested with my 24 zones.

@hmoffatt
Copy link
Contributor Author

These commits could be squashed before merge, but I've separated them for clarity for now. What do you prefer @tlimoncelli ?

@tlimoncelli
Copy link
Contributor

Great!

Rebase, run "go fmt ./..." and it should all be good to go. Github is set to sqyash automatically.

Thanks!

@hmoffatt
Copy link
Contributor Author

Rebase and go fmt found nothing to do. I've run the test suite and it all passed.

--- PASS: TestDNSProviders (1328.01s)
    --- PASS: TestDNSProviders/dnscontrol-test.dev (1328.01s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty (3.74s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/00:A:Create_A (5.16s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/00:A:Change_A_target (5.16s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#01 (2.99s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/01:Apex:Create_A (5.16s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/01:Apex:Change_A_target (5.18s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#02 (2.95s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/02:Protocol-Wildcard:Create_wildcard (5.91s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/02:Protocol-Wildcard:Delete_wildcard (5.14s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#03 (2.95s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/03:AAAA:Create_AAAA (5.28s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/03:AAAA:Change_AAAA_target (5.14s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#04 (2.95s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/04:CNAME:Create_a_CNAME (5.17s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/04:CNAME:Change_CNAME_target (5.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#05 (2.96s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/05:CNAME-short:Create_a_CNAME (5.92s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#06 (3.69s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/06:MX:Create_MX (5.15s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/06:MX:Change_MX_target (5.16s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/06:MX:Change_MX_p (5.18s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#07 (2.96s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/07:TXT:Create_TXT (5.16s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/07:TXT:Change_TXT_target (5.21s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#08 (2.95s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/08:ManyAtOnce:CreateManyAtLabel (6.65s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/08:ManyAtOnce:Empty (4.45s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/08:ManyAtOnce:Create_an_A_record (5.16s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/08:ManyAtOnce:Add_at_label1 (5.18s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/08:ManyAtOnce:Add_at_label2 (5.19s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#09 (4.47s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/09:manyTypesAtOnce:CreateManyTypesAtLabel (6.65s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/09:manyTypesAtOnce:Empty (4.43s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/09:manyTypesAtOnce:Create_an_A_record (5.13s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/09:manyTypesAtOnce:Add_Type_At_Label (5.18s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/09:manyTypesAtOnce:Add_Type_At_Label#01 (5.21s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#10 (4.45s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/10:Attl:Create_Arc (5.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/10:Attl:Change_TTL (5.16s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#11 (2.97s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/11:TTL:Start (6.62s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/11:TTL:Change_a_ttl (5.18s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/11:TTL:Change_single_target_from_set (5.17s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/11:TTL:Change_all_ttls (6.66s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#12 (4.40s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/12:add_to_label_and_change_orig_ttl:Setup (5.18s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/12:add_to_label_and_change_orig_ttl:Add_at_same_label,_new_ttl (6.02s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#13 (3.69s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/13:TypeChange:Create_A (5.18s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/13:TypeChange:Change_to_MX (5.95s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/13:TypeChange:Change_back_to_A (5.93s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#14 (2.96s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/14:TypeChangeHard:Create_a_CNAME (5.17s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/14:TypeChangeHard:Change_to_A_record (5.89s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/14:TypeChangeHard:Change_back_to_CNAME (5.98s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/15:HTTPS_***SKIPPED(CanUseHTTPS_not_supported)***:Empty (2.95s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/16:SVCB_***SKIPPED(CanUseSVCB_not_supported)***:Empty (2.21s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#15 (2.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/17:CNAME:Record_pointing_to_@ (5.89s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#16 (3.73s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/18:ApexMX:Record_pointing_to_@ (5.92s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#17 (3.70s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/19:NullMX:create (6.64s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/19:NullMX:unnull (5.91s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/19:NullMX:renull (5.90s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#18 (4.45s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/20:NullMXApex:create (6.67s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/20:NullMXApex:unnull (5.89s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/20:NullMXApex:renull (5.92s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#19 (4.41s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/21:NS:NS_for_subdomain (5.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/21:NS:Dual_NS_for_subdomain (5.22s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/21:NS:NS_Record_pointing_to_@ (7.44s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#20 (3.68s)
        --- SKIP: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:a_0-byte_TXT (0.00s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:a_254-byte_TXT (5.14s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:a_255-byte_TXT (5.90s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:a_256-byte_TXT (5.91s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:a_509-byte_TXT (5.93s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:a_510-byte_TXT (5.91s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:a_511-byte_TXT (5.89s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:a_764-byte_TXT (5.90s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:a_765-byte_TXT (5.99s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:a_766-byte_TXT (6.69s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:TXT_with_1_single-quote (6.61s)
        --- SKIP: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:TXT_with_1_backtick (0.00s)
        --- SKIP: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:TXT_with_1_dq-1interior (0.00s)
        --- SKIP: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:TXT_with_2_dq-2interior (0.00s)
        --- SKIP: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:TXT_with_1_dq-left (0.00s)
        --- SKIP: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:TXT_with_1_dq-right (0.00s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:TXT_with_semicolon (5.93s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:TXT_with_semicolon_ws (5.89s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:TXT_interior_ws (5.88s)
        --- SKIP: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:TXT_trailing_ws (0.00s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:Create_a_TXT/SPF (5.91s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:TXT_with_1_backslash (5.90s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:TXT_with_2_backslash (5.95s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:TXT_with_3_backslash (5.88s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/22:complex_TXT:TXT_with_4_backslash (6.03s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#21 (2.98s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/23:TXT_backslashes:TXT_with_backslashs (7.38s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#22 (5.23s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/24:Case_Sensitivity:Create_CAPS (5.16s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/24:Case_Sensitivity:Downcase_label (5.16s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/24:Case_Sensitivity:Downcase_target (5.19s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/24:Case_Sensitivity:Upcase_both (5.21s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#23 (3.68s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/25:testByLabel:initial (5.95s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/25:testByLabel:changeOne (5.17s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/25:testByLabel:deleteOne (5.23s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/25:testByLabel:addOne (5.19s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#24 (3.70s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/26:testByRecordSet:initial (8.12s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/26:testByRecordSet:changeOne (5.17s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/26:testByRecordSet:deleteOne (5.17s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/26:testByRecordSet:addOne (5.13s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#25 (5.89s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/27:IDNA:Internationalized_name (5.17s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/27:IDNA:Change_IDN (5.19s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/27:IDNA:Internationalized_CNAME_Target (5.92s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#26 (2.96s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/28:IDNAs_in_CNAME_targets:IDN_CNAME_AND_Target (5.27s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#27 (2.99s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/29:pager101:99_records (77.97s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/29:pager101:100_records (5.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/29:pager101:101_records (5.19s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/30:pager601_***SKIPPED(disabled_by_only)***:Empty (76.89s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/31:pager1201_***SKIPPED(disabled_by_only)***:Empty (2.21s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/32:batchRecordswithOthers_***SKIPPED(disabled_by_only)***:Empty (2.22s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#28 (2.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/33:CAA:CAA_record (5.25s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/33:CAA:CAA_change_tag (5.19s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/33:CAA:CAA_change_target (5.17s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/33:CAA:CAA_change_flag (5.15s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/33:CAA:CAA_many_records (5.16s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/33:CAA:CAA_whitespace (5.16s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#29 (2.97s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/34:LOC:Single_LOC_record (5.19s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/34:LOC:Update_single_LOC_record (5.16s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/34:LOC:Multiple_LOC_records-create_a-d_modify_apex (8.13s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/35:NAPTR_***SKIPPED(CanUseNAPTR_not_supported)***:Empty (5.89s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/36:PTR_***SKIPPED(excluded_by_not("CLOUDNS"))***:Empty (2.22s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/37:SOA_***SKIPPED(CanUseSOA_not_supported)***:Empty (2.27s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#30 (2.23s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/38:SRV:SRV_record (5.21s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/38:SRV:Second_SRV_record,_same_prio (5.17s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/38:SRV:3_SRV (5.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/38:SRV:Delete_one (5.16s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/38:SRV:Change_Target (5.15s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/38:SRV:Change_Priority (5.18s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/38:SRV:Change_Weight (5.17s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/38:SRV:Change_Port (5.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/38:SRV:Empty (3.71s)
        --- SKIP: TestDNSProviders/dnscontrol-test.dev/38:SRV:Null_Target (0.00s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#31 (2.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/39:SRV:Create_SRV333 (5.22s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/39:SRV:Change_TTL999 (5.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#32 (2.95s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/40:SSHFP:SSHFP_record (5.19s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/40:SSHFP:SSHFP_change_algorithm (5.18s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/40:SSHFP:SSHFP_change_fingerprint_and_type (5.18s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#33 (2.95s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/41:TLSA:TLSA_record (5.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/41:TLSA:TLSA_change_usage (5.17s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/41:TLSA:TLSA_change_selector (5.15s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/41:TLSA:TLSA_change_matchingtype (5.17s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/41:TLSA:TLSA_change_certificate (5.17s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/42:DS_***SKIPPED(CanUseDS_not_supported)***:Empty (2.95s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/43:DS_(children_only)_***SKIPPED(excluded_by_not("CLOUDNS"))***:Empty (2.22s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#34 (2.23s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/44:DS_(children_only)_CLOUDNS:create_DS (5.99s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/44:DS_(children_only)_CLOUDNS:modify_field_1 (5.15s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/44:DS_(children_only)_CLOUDNS:modify_field_3 (5.18s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/44:DS_(children_only)_CLOUDNS:modify_field_2+3 (5.17s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/44:DS_(children_only)_CLOUDNS:modify_field_2 (5.16s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/44:DS_(children_only)_CLOUDNS:delete_1,_create_1 (7.37s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/44:DS_(children_only)_CLOUDNS:add_2_more_DS (5.92s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/45:DHCID_***SKIPPED(CanUseDHCID_not_supported)***:Empty (5.18s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#35 (2.22s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/46:DNAME:Create_DNAME_record (5.18s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/46:DNAME:Modify_DNAME_record (5.15s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/46:DNAME:Create_DNAME_record_in_non-FQDN (5.94s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/47:DNSKEY_***SKIPPED(CanUseDNSKEY_not_supported)***:Empty (2.97s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#36 (2.21s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/48:ALIAS_on_apex:ALIAS_at_root (5.28s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/48:ALIAS_on_apex:change_it (5.15s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#37 (2.95s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/49:ALIAS_to_nonfqdn:ALIAS_at_root (6.02s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#38 (3.69s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/50:ALIAS_on_subdomain:ALIAS_at_subdomain (5.29s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/50:ALIAS_on_subdomain:change_it (5.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/51:AZURE_ALIAS_A_***SKIPPED(CanUseAzureAlias_not_supported)***:Empty (2.96s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/52:AZURE_ALIAS_CNAME_***SKIPPED(CanUseAzureAlias_not_supported)***:Empty (2.23s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/53:R53_ALIAS2_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (2.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/54:R53_ALIAS_ORDER_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (2.21s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/55:R53_ALIAS_CNAME_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (2.19s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/56:R53_ALIAS_Loop_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (2.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/57:R53_alias_pre-existing_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (2.22s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/58:R53_alias_evaluate_target_health_***SKIPPED(CanUseRoute53Alias_not_supported)***:Empty (2.23s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/59:CF_REDIRECT_***SKIPPED(disabled_by_only)***:Empty (2.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/60:CF_REDIRECT_CONVERT_***SKIPPED(excluded_by_alltrue([false]))***:Empty (2.25s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/61:CLOUDFLAREAPI_SINGLE_REDIRECT_***SKIPPED(excluded_by_alltrue([false]))***:Empty (2.24s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/62:CF_PROXY_A_create_***SKIPPED(disabled_by_only)***:Empty (2.21s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/63:CF_PROXY_A_off_to_X_***SKIPPED(disabled_by_only)***:Empty (2.21s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/64:CF_PROXY_A_on_to_X_***SKIPPED(disabled_by_only)***:Empty (2.24s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/65:CF_PROXY_A_full1_to_X_***SKIPPED(disabled_by_only)***:Empty (2.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/66:CF_PROXY_A_full2_to_X_***SKIPPED(disabled_by_only)***:Empty (2.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/67:CF_PROXY_CNAME_create_***SKIPPED(disabled_by_only)***:Empty (2.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/68:CF_PROXY_CNAME_off_to_X_***SKIPPED(disabled_by_only)***:Empty (2.21s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/69:CF_PROXY_CNAME_on_to_X_***SKIPPED(disabled_by_only)***:Empty (2.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/70:CF_PROXY_CNAME_full_to_X_***SKIPPED(disabled_by_only)***:Empty (2.22s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/71:CF_WORKER_ROUTE_***SKIPPED(disabled_by_only)***:Empty (2.22s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#39 (2.23s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/72:IGNORE_main:Create_some_records (6.64s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/72:IGNORE_main:ignore_label=foo (4.43s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/72:IGNORE_main:ignore_type=txt (4.43s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/72:IGNORE_main:ignore_target=1.2.3.4 (4.45s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/72:IGNORE_main:ignore_manytypes (2.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#40 (4.41s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/73:IGNORE_apex:Create_some_records (5.92s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/73:IGNORE_apex:ignore_label=apex (2.30s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/73:IGNORE_apex:ignore_type=txt (4.43s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/73:IGNORE_apex:ignore_target=1.2.3.4 (4.43s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/73:IGNORE_apex:ignore_manytypes (2.21s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#41 (3.72s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/74:IGNORE_NAME_function:Create_some_records (6.62s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/74:IGNORE_NAME_function:ignore_foo (4.42s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/74:IGNORE_NAME_function:Empty (4.44s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/74:IGNORE_NAME_function:Create_some_records#01 (6.65s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/74:IGNORE_NAME_function:ignore_*.foo (4.41s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/74:IGNORE_NAME_function:Empty#01 (4.43s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/74:IGNORE_NAME_function:Create_some_records#02 (5.94s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/74:IGNORE_NAME_function:ignore_*.foo_while_we_add_1 (5.19s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#42 (4.47s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/75:IGNORE_NAME_apex:Create_some_records (7.49s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/75:IGNORE_NAME_apex:ignore_apex (4.46s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/75:IGNORE_NAME_apex:Empty (5.14s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/75:IGNORE_NAME_apex:Add_a_new_record_-_ignoring_apex (6.63s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#43 (4.43s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/76:IGNORE_TARGET_function_CNAME:Create_some_records (5.89s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/76:IGNORE_TARGET_function_CNAME:ignoring_CNAME=test.foo.com. (4.40s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/76:IGNORE_TARGET_function_CNAME:ignoring_CNAME=test.foo.com._and_add (5.93s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#44 (5.17s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/77:IGNORE_TARGET_function_CNAME*:Create_some_records (6.65s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/77:IGNORE_TARGET_function_CNAME*:ignoring_CNAME=test.foo.com. (4.44s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/77:IGNORE_TARGET_function_CNAME*:ignoring_CNAME=test.foo.com._and_add (5.97s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#45 (5.90s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/78:IGNORE_TARGET_function_CNAME**:Create_some_records (6.62s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/78:IGNORE_TARGET_function_CNAME**:ignoring_CNAME=test.foo.com. (4.43s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/78:IGNORE_TARGET_function_CNAME**:ignoring_CNAME=test.foo.com._and_add (5.88s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#46 (5.92s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/79:IGNORE_TARGET_b2285:Create_some_records (5.95s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/79:IGNORE_TARGET_b2285:Add_a_new_record_-_ignoring_test.foo.com. (2.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#47 (3.69s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/80:IGNORE_everything_b2822:Create_some_records (7.44s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/80:IGNORE_everything_b2822:ignore_them_all (4.48s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/81:structured_TXT_***SKIPPED(disabled_by_only)***:Empty (5.16s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/82:structured_TXT_as_native_records_***SKIPPED(disabled_by_only)***:Empty (2.22s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/83:PORKBUN_URLFWD_tests_***SKIPPED(disabled_by_only)***:Empty (2.24s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/84:GCORE_metadata_tests_***SKIPPED(disabled_by_only)***:Empty (2.20s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/Clean_Slate:Empty#48 (2.22s)
        --- PASS: TestDNSProviders/dnscontrol-test.dev/85:final:final (5.20s)
=== RUN   TestDualProviders
    integration_test.go:349: Skipping.  DocDualHost == Cannot
--- SKIP: TestDualProviders (0.74s)
=== RUN   TestNameserverDots
    integration_test.go:427: Skipping.  DocDualHost == Cannot
--- SKIP: TestNameserverDots (0.75s)
PASS
ok  	github.com/StackExchange/dnscontrol/v4/integrationTest	1329.528s

@tlimoncelli
Copy link
Contributor

Thanks so much! Everyone will appreciate how much faster their "preview" runs now!

@tlimoncelli tlimoncelli merged commit 9d42930 into StackExchange:main Dec 12, 2024
2 checks passed
tlimoncelli added a commit that referenced this pull request Dec 12, 2024
tlimoncelli added a commit that referenced this pull request Dec 12, 2024
@hmoffatt
Copy link
Contributor Author

54 seconds with --cmode legacy versus 7 on --cmode concurrent for my 24 CLOUDNS zones, with the API being high latency from here.

@hmoffatt hmoffatt deleted the cloudns-concurrent branch December 13, 2024 03:17
@tlimoncelli
Copy link
Contributor

Nice! legacy spends 99% of its time waiting. Now all that waiting is done in parallel.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants