@@ -10,6 +10,7 @@ import (
1010 "errors"
1111 "net/url"
1212 "os"
13+ "net"
1314 "path/filepath"
1415 "testing"
1516
@@ -740,7 +741,7 @@ func TestCollector_updateNginxAppProtectTcplogReceivers(t *testing.T) {
740741 require .NoError (t , err )
741742
742743 nginxConfigContext := & model.NginxConfigContext {
743- NAPSysLogServer : "localhost:151" ,
744+ NAPSysLogServers : [] string { "localhost:15632" } ,
744745 }
745746
746747 assert .Empty (t , conf .Collector .Receivers .TcplogReceivers )
@@ -750,7 +751,7 @@ func TestCollector_updateNginxAppProtectTcplogReceivers(t *testing.T) {
750751
751752 assert .True (tt , tcplogReceiverAdded )
752753 assert .Len (tt , conf .Collector .Receivers .TcplogReceivers , 1 )
753- assert .Equal (tt , "localhost:151 " , conf .Collector .Receivers .TcplogReceivers ["nginx_app_protect" ].ListenAddress )
754+ assert .Equal (tt , "localhost:15632 " , conf .Collector .Receivers .TcplogReceivers ["nginx_app_protect" ].ListenAddress )
754755 assert .Len (tt , conf .Collector .Receivers .TcplogReceivers ["nginx_app_protect" ].Operators , 6 )
755756 })
756757
@@ -760,7 +761,7 @@ func TestCollector_updateNginxAppProtectTcplogReceivers(t *testing.T) {
760761 tcplogReceiverAdded := collector .updateNginxAppProtectTcplogReceivers (nginxConfigContext )
761762 assert .False (t , tcplogReceiverAdded )
762763 assert .Len (t , conf .Collector .Receivers .TcplogReceivers , 1 )
763- assert .Equal (t , "localhost:151 " , conf .Collector .Receivers .TcplogReceivers ["nginx_app_protect" ].ListenAddress )
764+ assert .Equal (t , "localhost:15632 " , conf .Collector .Receivers .TcplogReceivers ["nginx_app_protect" ].ListenAddress )
764765 assert .Len (t , conf .Collector .Receivers .TcplogReceivers ["nginx_app_protect" ].Operators , 6 )
765766 })
766767
@@ -773,13 +774,13 @@ func TestCollector_updateNginxAppProtectTcplogReceivers(t *testing.T) {
773774 t .Run ("Test 4: NewCollector tcplogReceiver added and deleted another" , func (tt * testing.T ) {
774775 tcplogReceiverDeleted := collector .updateNginxAppProtectTcplogReceivers (
775776 & model.NginxConfigContext {
776- NAPSysLogServer : "localhost:152" ,
777+ NAPSysLogServers : [] string { "localhost:1555" } ,
777778 },
778779 )
779780
780781 assert .True (t , tcplogReceiverDeleted )
781782 assert .Len (t , conf .Collector .Receivers .TcplogReceivers , 1 )
782- assert .Equal (t , "localhost:152 " , conf .Collector .Receivers .TcplogReceivers ["nginx_app_protect" ].ListenAddress )
783+ assert .Equal (t , "localhost:1555 " , conf .Collector .Receivers .TcplogReceivers ["nginx_app_protect" ].ListenAddress )
783784 assert .Len (t , conf .Collector .Receivers .TcplogReceivers ["nginx_app_protect" ].Operators , 6 )
784785 })
785786}
@@ -903,6 +904,74 @@ func TestSetExporterProxyEnvVars(t *testing.T) {
903904 os .Unsetenv ("HTTP_PROXY" )
904905 os .Unsetenv ("HTTPS_PROXY" )
905906 }
907+ }
908+ }
909+ }
910+
911+ func TestCollector_findAvailableSyslogServers (t * testing.T ) {
912+ conf := types .OTelConfig (t )
913+ conf .Collector .Log .Path = ""
914+ conf .Collector .Processors .Batch = nil
915+ conf .Collector .Processors .Attribute = nil
916+ conf .Collector .Processors .Resource = nil
917+ conf .Collector .Processors .LogsGzip = nil
918+ collector , err := NewCollector (conf )
919+ require .NoError (t , err )
920+
921+ tests := []struct {
922+ name string
923+ expectedSyslogServer string
924+ previousNAPSysLogServer string
925+ syslogServers []string
926+ portInUse bool
927+ }{
928+ {
929+ name : "Test 1: port available" ,
930+ expectedSyslogServer : "localhost:15632" ,
931+ previousNAPSysLogServer : "" ,
932+ syslogServers : []string {"localhost:15632" },
933+ portInUse : false ,
934+ },
935+ {
936+ name : "Test 2: port in use" ,
937+ expectedSyslogServer : "" ,
938+ previousNAPSysLogServer : "" ,
939+ syslogServers : []string {"localhost:15632" },
940+ portInUse : true ,
941+ },
942+ {
943+ name : "Test 3: syslog server already configured" ,
944+ expectedSyslogServer : "localhost:15632" ,
945+ previousNAPSysLogServer : "localhost:15632" ,
946+ syslogServers : []string {"localhost:15632" },
947+ portInUse : false ,
948+ },
949+ {
950+ name : "Test 4: new syslog server" ,
951+ expectedSyslogServer : "localhost:15632" ,
952+ previousNAPSysLogServer : "localhost:1122" ,
953+ syslogServers : []string {"localhost:15632" },
954+ portInUse : false ,
955+ },
956+ {
957+ name : "Test 5: port in use find next server" ,
958+ expectedSyslogServer : "localhost:1122" ,
959+ previousNAPSysLogServer : "" ,
960+ syslogServers : []string {"localhost:15632" , "localhost:1122" },
961+ portInUse : true ,
962+ },
963+ }
964+
965+ for _ , test := range tests {
966+ t .Run (test .name , func (tt * testing.T ) {
967+ if test .portInUse {
968+ ln , listenError := net .Listen ("tcp" , "localhost:15632" )
969+ require .NoError (t , listenError )
970+ defer ln .Close ()
971+ }
972+
973+ actual := collector .findAvailableSyslogServers (test .syslogServers )
974+ assert .Equal (tt , test .expectedSyslogServer , actual )
906975 })
907976 }
908977}
0 commit comments