Skip to content

Commit 73dbe74

Browse files
mergify[bot]dependabot[bot]mykola-elastic
authored
[9.1](backport #45181) build(deps): bump github.com/godror/godror from 0.33.2 to 0.49.0 (#47263)
* build(deps): bump github.com/godror/godror from 0.33.2 to 0.49.0 (#45181) * build(deps): bump github.com/godror/godror from 0.33.2 to 0.49.0 Bumps [github.com/godror/godror](https://github.com/godror/godror) from 0.33.2 to 0.49.0. - [Changelog](https://github.com/godror/godror/blob/main/CHANGELOG.md) - [Commits](godror/godror@v0.33.2...v0.49.0) --- updated-dependencies: - dependency-name: github.com/godror/godror dependency-version: 0.49.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <[email protected]> * Fix conflicts --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: subham sarkar <[email protected]> (cherry picked from commit a9ad908) # Conflicts: # go.sum * resolve merge conflict * add nolint:errcheck * add !requirefips to integration test --------- Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mykola Kmet <[email protected]>
1 parent 0c2d761 commit 73dbe74

File tree

8 files changed

+492
-33
lines changed

8 files changed

+492
-33
lines changed

NOTICE.txt

Lines changed: 417 additions & 5 deletions
Large diffs are not rendered by default.

go.mod

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ require (
7979
github.com/go-viper/mapstructure/v2 v2.4.0
8080
github.com/gocarina/gocsv v0.0.0-20170324095351-ffef3ffc77be
8181
github.com/godbus/dbus/v5 v5.1.0
82-
github.com/godror/godror v0.33.2
82+
github.com/godror/godror v0.49.0
8383
github.com/gofrs/flock v0.8.1
8484
github.com/gogo/protobuf v1.3.2
8585
github.com/gohugoio/hashstructure v0.5.0
@@ -280,6 +280,7 @@ require (
280280
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 // indirect
281281
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 // indirect
282282
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 // indirect
283+
github.com/VictoriaMetrics/easyproto v0.1.4 // indirect
283284
github.com/andybalholm/brotli v1.2.0 // indirect
284285
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
285286
github.com/apache/arrow/go/v15 v15.0.2 // indirect
@@ -339,7 +340,7 @@ require (
339340
github.com/go-openapi/swag v0.23.0 // indirect
340341
github.com/gobwas/glob v0.2.3 // indirect
341342
github.com/goccy/go-json v0.10.5 // indirect
342-
github.com/godror/knownpb v0.1.0 // indirect
343+
github.com/godror/knownpb v0.3.0 // indirect
343344
github.com/golang-jwt/jwt/v4 v4.5.2 // indirect
344345
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect
345346
github.com/golang-sql/sqlexp v0.1.0 // indirect

go.sum

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,10 @@ github.com/PaloAltoNetworks/pango v0.10.2 h1:Tjn6vIzzAq6Dd7N0mDuiP8w8pz8k5W9zz/T
153153
github.com/PaloAltoNetworks/pango v0.10.2/go.mod h1:GztcRnVLur7G+VFG7Z5ZKNFgScLtsycwPMp1qVebE5g=
154154
github.com/StackExchange/wmi v1.2.1 h1:VIkavFPXSjcnS+O8yTq7NI32k0R5Aj+v39y29VYDOSA=
155155
github.com/StackExchange/wmi v1.2.1/go.mod h1:rcmrprowKIVzvc+NUiLncP2uuArMWLCbu9SBzvHz7e8=
156+
github.com/UNO-SOFT/zlog v0.8.1 h1:TEFkGJHtUfTRgMkLZiAjLSHALjwSBdw6/zByMC5GJt4=
157+
github.com/UNO-SOFT/zlog v0.8.1/go.mod h1:yqFOjn3OhvJ4j7ArJqQNA+9V+u6t9zSAyIZdWdMweWc=
158+
github.com/VictoriaMetrics/easyproto v0.1.4 h1:r8cNvo8o6sR4QShBXQd1bKw/VVLSQma/V2KhTBPf+Sc=
159+
github.com/VictoriaMetrics/easyproto v0.1.4/go.mod h1:QlGlzaJnDfFd8Lk6Ci/fuLxfTo3/GThPs2KH23mv710=
156160
github.com/aerospike/aerospike-client-go/v7 v7.7.1 h1:lcskBtPZYe6ESObhIEQEp4XO1axYZpaFD3ie4iwr6tg=
157161
github.com/aerospike/aerospike-client-go/v7 v7.7.1/go.mod h1:STlBtOkKT8nmp7iD+sEkr/JGEOu+4e2jGlNN0Jiu2a4=
158162
github.com/akavel/rsrc v0.8.0 h1:zjWn7ukO9Kc5Q62DOJCcxGpXC18RawVtYAGdz2aLlfw=
@@ -474,11 +478,9 @@ github.com/go-ldap/ldap/v3 v3.4.6 h1:ert95MdbiG7aWo/oPYp9btL3KJlMPKnP58r09rI8T+A
474478
github.com/go-ldap/ldap/v3 v3.4.6/go.mod h1:IGMQANNtxpsOzj7uUAMjpGBaOVTC4DYyIy8VsTdxmtc=
475479
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
476480
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
477-
github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
478481
github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4=
479482
github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs=
480483
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
481-
github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
482484
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
483485
github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
484486
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
@@ -517,10 +519,10 @@ github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PU
517519
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
518520
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
519521
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
520-
github.com/godror/godror v0.33.2 h1:7UBlS8sAfEQlV5CbkLOJQc90QM+kMthlyLbaAWhawHk=
521-
github.com/godror/godror v0.33.2/go.mod h1:FbrZ7po7LyS3gUTdW/K1+kIoePvP/E044HpwptL4vqw=
522-
github.com/godror/knownpb v0.1.0 h1:dJPK8s/I3PQzGGaGcUStL2zIaaICNzKKAK8BzP1uLio=
523-
github.com/godror/knownpb v0.1.0/go.mod h1:4nRFbQo1dDuwKnblRXDxrfCFYeT4hjg3GjMqef58eRE=
522+
github.com/godror/godror v0.49.0 h1:oXAzPOm7bAGdFGkTaePCRXv3dfyr6Agni++4XhaRcC8=
523+
github.com/godror/godror v0.49.0/go.mod h1:D4gKled+sJVcagT1HWibkBsO9PcLn2Nu96FCr1RtnzI=
524+
github.com/godror/knownpb v0.3.0 h1:+caUdy8hTtl7X05aPl3tdL540TvCcaQA6woZQroLZMw=
525+
github.com/godror/knownpb v0.3.0/go.mod h1:PpTyfJwiOEAzQl7NtVCM8kdPCnp3uhxsZYIzZ5PV4zU=
524526
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
525527
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
526528
github.com/gofrs/uuid/v5 v5.2.0 h1:qw1GMx6/y8vhVsx626ImfKMuS5CvJmhIKKtuyvfajMM=
@@ -557,7 +559,6 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W
557559
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
558560
github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
559561
github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
560-
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
561562
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
562563
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
563564
github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs=
@@ -579,7 +580,6 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
579580
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
580581
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
581582
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
582-
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
583583
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
584584
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
585585
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
@@ -827,7 +827,6 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J
827827
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
828828
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
829829
github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4=
830-
github.com/oklog/ulid/v2 v2.0.2/go.mod h1:mtBL0Qe/0HAx6/a4Z30qxVIAL1eQDweXq5lxOEiwQ68=
831830
github.com/oklog/ulid/v2 v2.1.1 h1:suPZ4ARWLOJLegGFiZZ1dFAkqzhMjL3J1TzI+5wHz8s=
832831
github.com/oklog/ulid/v2 v2.1.1/go.mod h1:rcEKHmBBKfef9DhnvX7y1HZBYxjXb0cP5ExxNsTT1QQ=
833832
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
@@ -861,7 +860,6 @@ github.com/otiai10/mint v1.6.3 h1:87qsV/aw1F5as1eH1zS/yqHY85ANKVMgkDrf9rcxbQs=
861860
github.com/otiai10/mint v1.6.3/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM=
862861
github.com/oxtoacart/bpool v0.0.0-20150712133111-4e1c5567d7c2 h1:CXwSGu/LYmbjEab5aMCs5usQRVBGThelUKBNnoSOuso=
863862
github.com/oxtoacart/bpool v0.0.0-20150712133111-4e1c5567d7c2/go.mod h1:L3UMQOThbttwfYRNFOWLLVXMhk5Lkio4GGOtw5UrxS0=
864-
github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwpVEaDAr341tbn15RS4fCAsIst0qp7i8ex1o=
865863
github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
866864
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
867865
github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU=
@@ -1324,7 +1322,6 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ
13241322
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
13251323
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
13261324
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
1327-
golang.org/x/sync v0.0.0-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
13281325
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
13291326
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
13301327
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
@@ -1452,8 +1449,6 @@ google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
14521449
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
14531450
google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
14541451
google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
1455-
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
1456-
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
14571452
google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw=
14581453
google.golang.org/protobuf v1.36.9/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
14591454
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
FROM docker.elastic.co/observability-ci/database-enterprise:12.2.0.1
22

3-
HEALTHCHECK --interval=1s --retries=90 CMD /usr/bin/echo 'select 1' | /u01/app/oracle/product/12.2.0/dbhome_1/bin/sqlplus sys/Oradoc_db1@localhost:1521/ORCLPDB1.localdomain AS SYSDBA
3+
ENV ORACLE_BASE=/db/oracle
4+
ENV ORACLE_PASSWORD=Oradoc_db1
5+
6+
HEALTHCHECK --interval=30s --timeout=15s --start-period=60s --retries=5 CMD "bash -c echo 'select sysdate from dual;' | ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1/ /u01/app/oracle/product/12.2.0/dbhome_1/bin/sqlplus -s sys/Oradoc_db1@oracle:1521/ORCLCDB.localdomain as sysdba"

x-pack/metricbeat/module/oracle/connection.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func HostParser(mod mb.Module, rawURL string) (mb.HostData, error) {
4242
}
4343

4444
if params.Password.Secret() == "" {
45-
params.StandaloneConnection = true
45+
params.StandaloneConnection = godror.Bool(true)
4646
params.Password = dsn.NewPassword(config.Password)
4747
}
4848

x-pack/metricbeat/module/oracle/testing.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,13 @@ import (
1515
func GetOracleConnectionDetails(host string) string {
1616
params := godror.ConnectionParams{
1717
CommonParams: dsn.CommonParams{
18-
Username: GetOracleEnvUsername(),
19-
Password: dsn.NewPassword((GetOracleEnvPassword())),
18+
CommonSimpleParams: dsn.CommonSimpleParams{
19+
Username: GetOracleEnvUsername(),
20+
Password: dsn.NewPassword((GetOracleEnvPassword())),
21+
},
2022
},
2123
ConnParams: dsn.ConnParams{
22-
IsSysDBA: true,
24+
AdminRole: dsn.SysDBA,
2325
},
2426
}
2527

x-pack/metricbeat/module/sql/query/dsn.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ func oracleParseDSN(config ConnectionDetails, host string) (mb.HostData, error)
9898
params.Username = config.Username
9999
}
100100
if params.Password.Secret() == "" {
101-
params.StandaloneConnection = true
101+
params.StandaloneConnection = godror.Bool(true)
102102
params.Password = dsn.NewPassword(config.Password)
103103
}
104104
return mb.HostData{

x-pack/metricbeat/module/sql/query/query_integration_test.go

Lines changed: 53 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// or more contributor license agreements. Licensed under the Elastic License;
33
// you may not use this file except in compliance with the Elastic License.
44

5-
//go:build integration
5+
//go:build integration && !requirefips
66

77
package query
88

@@ -229,6 +229,10 @@ func TestPostgreSQL(t *testing.T) {
229229
func TestOracle(t *testing.T) {
230230
service := compose.EnsureUp(t, "oracle")
231231
host, port, _ := net.SplitHostPort(service.Host())
232+
233+
// Wait for Oracle to be ready instead of sleeping for 300 seconds
234+
waitForOracleConnection(t, host, port)
235+
232236
cfg := testFetchConfig{
233237
config: config{
234238
Driver: "oracle",
@@ -297,13 +301,14 @@ func assertFieldContainsFloat64(field string, limit float64) func(t *testing.T,
297301
return func(t *testing.T, event beat.Event) {
298302
value, err := event.GetValue("sql.metrics.hit_ratio")
299303
assert.NoError(t, err)
300-
require.GreaterOrEqual(t, value.(float64), limit)
304+
require.GreaterOrEqual(t, value.(float64), limit) //nolint:errcheck // ignore
301305
}
302306
}
303307

304308
func GetOracleConnectionDetails(t *testing.T, host string, port string) string {
305-
params, err := godror.ParseDSN(GetOracleConnectString(host, port))
306-
require.Empty(t, err)
309+
connectString := GetOracleConnectString(host, port)
310+
params, err := godror.ParseDSN(connectString)
311+
require.NoError(t, err, "Failed to parse Oracle DSN: %s", connectString)
307312
return params.StringWithPassword()
308313
}
309314

@@ -325,7 +330,7 @@ func GetOracleEnvUsername() string {
325330
return username
326331
}
327332

328-
// GetOracleEnvUsername returns the port of the Oracle server or the value of the environment variable ORACLE_PASSWORD if not empty
333+
// GetOracleEnvPassword returns the password to use with Oracle testing server or the value of the environment variable ORACLE_PASSWORD if not empty
329334
func GetOracleEnvPassword() string {
330335
password := os.Getenv("ORACLE_PASSWORD")
331336
if len(password) == 0 {
@@ -334,11 +339,52 @@ func GetOracleEnvPassword() string {
334339
return password
335340
}
336341

342+
// GetOracleConnectString builds the Oracle connection string with proper format
337343
func GetOracleConnectString(host string, port string) string {
338-
time.Sleep(300 * time.Second)
339344
connectString := os.Getenv("ORACLE_CONNECT_STRING")
340345
if len(connectString) == 0 {
341-
connectString = fmt.Sprintf("%s/%s@%s:%s/%s as sysdba", GetOracleEnvUsername(), GetOracleEnvPassword(), host, port, GetOracleEnvServiceName())
346+
// Use the recommended connection string format from godror documentation
347+
// Format: oracle://user/password@host:port/service_name
348+
connectString = fmt.Sprintf("oracle://%s:%s@%s:%s/%s",
349+
GetOracleEnvUsername(),
350+
GetOracleEnvPassword(),
351+
host,
352+
port,
353+
GetOracleEnvServiceName())
354+
355+
// Only add SYSDBA if explicitly using 'sys' user
356+
if GetOracleEnvUsername() == "sys" {
357+
connectString += "?sysdba=1"
358+
}
342359
}
343360
return connectString
344361
}
362+
363+
// waitForOracleConnection waits for Oracle service to be ready with exponential backoff
364+
func waitForOracleConnection(t *testing.T, host, port string) {
365+
maxRetries := 30
366+
baseDelay := 2 * time.Second
367+
368+
for i := 0; i < maxRetries; i++ {
369+
// First check if the port is open
370+
conn, err := net.DialTimeout("tcp", net.JoinHostPort(host, port), 10*time.Second)
371+
if err == nil {
372+
conn.Close()
373+
// Give Oracle a bit more time to fully initialize
374+
time.Sleep(90 * time.Second)
375+
return
376+
}
377+
378+
// (1<<uint(i)) == 2^i, which doubles the delay at each iteration, then multiply by baseDelay
379+
delay := time.Duration(1<<uint(i)) * baseDelay
380+
// But don't let the delay get too long; max out at 30 seconds
381+
if delay > 30*time.Second {
382+
delay = 30 * time.Second
383+
}
384+
385+
t.Logf("Oracle not ready yet (attempt %d/%d), waiting %v: %v", i+1, maxRetries, delay, err)
386+
time.Sleep(delay)
387+
}
388+
389+
t.Fatalf("Oracle service did not become ready after %d attempts", maxRetries)
390+
}

0 commit comments

Comments
 (0)