@@ -4,9 +4,11 @@ import (
44 "context"
55 "database/sql"
66 sqldriver "database/sql/driver"
7+ "errors"
78 "fmt"
89 "log"
910 "runtime"
11+ "strconv"
1012 "strings"
1113 "testing"
1214 "time"
@@ -92,6 +94,7 @@ func Test(t *testing.T) {
9294 t .Run ("testMsiTrue" , testMsiTrue )
9395 t .Run ("testOpenWithPasswordAndMSI" , testOpenWithPasswordAndMSI )
9496 t .Run ("testMsiFalse" , testMsiFalse )
97+ t .Run ("testNoLockWorks" , testNoLockWorks )
9598
9699 t .Cleanup (func () {
97100 for _ , spec := range specs {
@@ -311,6 +314,54 @@ func testOpenWithPasswordAndMSI(t *testing.T) {
311314 })
312315}
313316
317+ func TestNoLockParamValidation (t * testing.T ) {
318+ p := & SQLServer {}
319+ _ , err := p .Open ("sqlserver://sa:password@localhost?x-no-lock=not-a-bool" )
320+ if ! errors .Is (err , strconv .ErrSyntax ) {
321+ t .Fatal ("Expected syntax error when passing a non-bool as x-no-lock parameter" )
322+ }
323+ }
324+
325+ func testNoLockWorks (t * testing.T ) {
326+ dktesting .ParallelTest (t , specs , func (t * testing.T , c dktest.ContainerInfo ) {
327+ SkipIfUnsupportedArch (t , c )
328+ ip , port , err := c .Port (defaultPort )
329+ if err != nil {
330+ t .Fatal (err )
331+ }
332+
333+ addr := msConnectionString (ip , port )
334+ p := & SQLServer {}
335+ d , err := p .Open (addr )
336+ if err != nil {
337+ t .Fatal (err )
338+ }
339+
340+ lock := d .(* SQLServer )
341+
342+ p = & SQLServer {}
343+ d , err = p .Open (addr + "&x-no-lock=true" )
344+ if err != nil {
345+ t .Fatal (err )
346+ }
347+
348+ noLock := d .(* SQLServer )
349+
350+ if err = lock .Lock (); err != nil {
351+ t .Fatal (err )
352+ }
353+ if err = noLock .Lock (); err != nil {
354+ t .Fatal (err )
355+ }
356+ if err = lock .Unlock (); err != nil {
357+ t .Fatal (err )
358+ }
359+ if err = noLock .Unlock (); err != nil {
360+ t .Fatal (err )
361+ }
362+ })
363+ }
364+
314365func testMsiFalse (t * testing.T ) {
315366 dktesting .ParallelTest (t , specs , func (t * testing.T , c dktest.ContainerInfo ) {
316367 SkipIfUnsupportedArch (t , c )
0 commit comments