]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Use trigger to detect when server is ready in ldap_sync tests
authorNick Porter <nick@portercomputing.co.uk>
Mon, 14 Nov 2022 18:21:25 +0000 (18:21 +0000)
committerNick Porter <nick@portercomputing.co.uk>
Tue, 29 Nov 2022 12:26:03 +0000 (12:26 +0000)
More reliable than just a sleep 1

src/tests/ldap_sync/active_directory/all.mk
src/tests/ldap_sync/active_directory/config/radiusd.conf
src/tests/ldap_sync/persistent_search/all.mk
src/tests/ldap_sync/persistent_search/config/radiusd.conf
src/tests/ldap_sync/rfc4533/all.mk
src/tests/ldap_sync/rfc4533/config/radiusd.conf

index 34b161b11173ed4dd3383105af7c399934785cde..0b9f57cd9f0a3a932b4001f01cb1ff3ca0eda14f 100644 (file)
@@ -16,12 +16,15 @@ $(eval $(call TEST_BOOTSTRAP))
 include src/tests/radiusd.mk
 $(eval $(call RADIUSD_SERVICE,radiusd,$(OUTPUT)))
 
+$(TEST).trigger_clear:
+       $(Q)rm -f $(BUILD_DIR)/tests/ldap_sync/active_directory/sync_started
+
 #
 #      There is a delay of up to 30 seconds looking for the output file
 #      as samba only sends results of persistent LDAP searches on a polled
 #      basis.  Real Active Directory sends the results immediately.
 #
-$(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
+$(OUTPUT)/%: $(DIR)/% | $(TEST).trigger_clear $(TEST).radiusd_kill $(TEST).radiusd_start
        $(eval TARGET   := $(notdir $<))
        $(eval EXPECTED := $(patsubst %.sh,%.out,$<))
        $(eval FOUND    := $(patsubst %.sh,%.out,$@))
@@ -31,7 +34,17 @@ $(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
        $(Q)echo "LDAPSYNC-TEST active_directory $(TARGET)"
        $(Q)[ -f $(dir $@)/radiusd.pid ] || exit 1
        $(Q)rm -f $(OUT_DIR)/$(OUT).out
-       $(Q)sleep 1
+
+#      Wait for the sync to start before applying changes
+       $(Q)i=0; while [ $$i -lt 100 ] ; \
+               do if [ -e $(OUT_DIR)/sync_started ];   \
+               then                                    \
+               break;                                  \
+               fi;                                     \
+               sleep .1;                               \
+               i=$$((i+1));                            \
+       done;
+
        $(Q)$<
        $(Q)i=0; while [ $$i -lt 600 ] ; \
                do if [ -e $(OUT_DIR)/$(OUT).out ] ;    \
index 0135f6e982325256466957ce23b50b67bfdda7c7..e99eb8ed4bee0267ede53d815390fdaf2c3bca76 100644 (file)
@@ -40,6 +40,10 @@ global {
        }
 }
 
+#  Dummy global trigger section to enable triggers
+trigger {
+}
+
 policy {
        linelogprep {
                &control.Tmp-String-0 := "%{Packet-Type} %{LDAP-Sync.DN} %{LDAP-Sync.Entry-DN} %{Proto.radius.User-Name} %{Tmp-Integer-0} %{Tmp-String-0}"
@@ -128,6 +132,10 @@ server test {
                                &Proto.radius.User-Name = 'sAMAccountName'
                                &Tmp-Integer-0 = 'userAccountControl'
                        }
+
+                       trigger {
+                               start = "/usr/bin/touch ${run_dir}/sync_started"
+                       }
                }
 
                sync {
index f30e34c82268f91e418dfeeac0cf14baffd43ac2..384e9fa53c25d033027389e2ca75ab9d201c1037 100644 (file)
@@ -16,7 +16,10 @@ $(eval $(call TEST_BOOTSTRAP))
 include src/tests/radiusd.mk
 $(eval $(call RADIUSD_SERVICE,radiusd,$(OUTPUT)))
 
-$(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
+$(TEST).trigger_clear:
+       $(Q)rm -f $(BUILD_DIR)/tests/ldap_sync/persistent_search/sync_started
+
+$(OUTPUT)/%: $(DIR)/% | $(TEST).trigger_clear $(TEST).radiusd_kill $(TEST).radiusd_start
        $(eval TARGET   := $(notdir $<))
        $(eval EXPECTED := $(patsubst %.ldif,%.out,$<))
        $(eval FOUND    := $(patsubst %.ldif,%.out,$@))
@@ -27,7 +30,17 @@ $(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
        $(Q)echo "LDAPSYNC-TEST persistent_search $(TARGET)"
        $(Q)[ -f $(dir $@)/radiusd.pid ] || exit 1
        $(Q)rm -f $(OUT_DIR)/$(OUT).out
-       $(Q)sleep 1
+
+#      Wait for the sync to start before applying changes
+       $(Q)i=0; while [ $$i -lt 100 ] ; \
+               do if [ -e $(OUT_DIR)/sync_started ] ;  \
+               then                                    \
+               break;                                  \
+               fi;                                     \
+               sleep .1;                               \
+               i=$$((i+1));                            \
+       done;
+
        $(Q)ldapmodify $(ARGV) -f $< > /dev/null
        $(Q)i=0; while [ $$i -lt 600 ] ; \
                do if [ -e $(OUT_DIR)/$(OUT).out ] ;    \
index f2321adfcdf9610c4080a477214256ceac862c65..d410002177fb90c10013102e3f2a95a3228a0410 100644 (file)
@@ -40,6 +40,10 @@ global {
        }
 }
 
+#  Dummy global trigger section to enable triggers
+trigger {
+}
+
 policy {
        linelogprep {
                &request.Tmp-String-8 := &LDAP-Sync.DN
@@ -140,6 +144,10 @@ server test {
                                &Proto.radius.User-Name = 'uid'
                                &Password.With-Header = 'userPassword'
                        }
+
+                       trigger {
+                               start = "/usr/bin/touch ${run_dir}/sync_started"
+                       }
                }
 
                sync {
index fec35fdbb49d4db3d93c956249a47932fb17411d..fe7ca6636be5646bd06368c675cdd4b6bea4394e 100644 (file)
@@ -17,7 +17,10 @@ $(eval $(call TEST_BOOTSTRAP))
 include src/tests/radiusd.mk
 $(eval $(call RADIUSD_SERVICE,radiusd,$(OUTPUT)))
 
-$(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
+$(TEST).trigger_clear:
+       $(Q)rm -f $(BUILD_DIR)/tests/ldap_sync/rfc4533/sync_started
+
+$(OUTPUT)/%: $(DIR)/% | $(TEST).trigger_clear $(TEST).radiusd_kill $(TEST).radiusd_start
        $(eval TARGET   := $(notdir $<))
        $(eval EXPECTED := $(patsubst %.ldif,%.out,$<))
        $(eval FOUND    := $(patsubst %.ldif,%.out,$@))
@@ -28,7 +31,17 @@ $(OUTPUT)/%: $(DIR)/% | $(TEST).radiusd_kill $(TEST).radiusd_start
        $(Q)echo "LDAPSYNC-TEST rfc4533 $(TARGET)"
        $(Q)[ -f $(dir $@)/radiusd.pid ] || exit 1
        $(Q)rm -f $(OUT_DIR)/$(OUT).out
-       $(Q)sleep 1
+
+#      Wait for the sync to start before applying changes
+       $(Q)i=0; while [ $$i -lt 100 ] ; \
+               do if [ -e $(OUT_DIR)/sync_started ];   \
+               then                                    \
+               break;                                  \
+               fi;                                     \
+               sleep .1;                               \
+               i=$$((i+1));                            \
+       done ;
+
        $(Q)ldapmodify $(ARGV) -f $< > /dev/null
        $(Q)i=0; while [ $$i -lt 600 ] ; \
                do if [ -e $(OUT_DIR)/$(OUT).out ] ;    \
index c96b2cd5d8fc9967bbebb35306a0965dab1be844..a3b5fa5421a6a026caf77a46f72a3ca2fbdb817e 100644 (file)
@@ -40,6 +40,10 @@ global {
        }
 }
 
+#  Dummy global trigger section to enable triggers
+trigger {
+}
+
 policy {
        linelogprep {
                &request.Tmp-String-8 := &LDAP-Sync.DN
@@ -163,6 +167,10 @@ server test {
                                &Proto.radius.User-Name = 'uid'
                                &Password.With-Header = 'userPassword'
                        }
+
+                       trigger {
+                               start = "/usr/bin/touch ${run_dir}/sync_started"
+                       }
                }
 
                sync {