@@ -24,17 +24,37 @@ import (
24
24
"os"
25
25
"os/exec"
26
26
"path"
27
+ "regexp"
28
+ "strconv"
27
29
"strings"
28
30
"syscall"
29
31
"testing"
30
32
"time"
31
33
34
+ vtutils "vitess.io/vitess/go/vt/utils"
35
+
32
36
"google.golang.org/protobuf/encoding/prototext"
33
37
34
38
"vitess.io/vitess/go/vt/log"
35
39
"vitess.io/vitess/go/vt/servenv"
36
40
)
37
41
42
+ var versionRegex = regexp .MustCompile (`Version: ([0-9]+)\.([0-9]+)\.([0-9]+)` )
43
+
44
+ // getMajorVersion extracts the major version from a binary by running binaryName --version
45
+ func getMajorVersion (binaryName string ) (int , error ) {
46
+ version , err := exec .Command (binaryName , "--version" ).Output ()
47
+ if err != nil {
48
+ return 0 , err
49
+ }
50
+ v := versionRegex .FindStringSubmatch (string (version ))
51
+ if len (v ) != 4 {
52
+ return 0 , fmt .Errorf ("could not parse server version from: %s" , version )
53
+ }
54
+
55
+ return strconv .Atoi (v [1 ])
56
+ }
57
+
38
58
// HealthChecker is a callback that impements a service-specific health check
39
59
// It must return true if the service at the given `addr` is reachable, false
40
60
// otherwerise.
@@ -281,8 +301,12 @@ func VtcomboProcess(environment Environment, args *Config, mysql MySQLManager) (
281
301
if servenv .GRPCAuth () == "mtls" {
282
302
vt .ExtraArgs = append (vt .ExtraArgs , []string {"--grpc-auth-mode" , servenv .GRPCAuth (), "--grpc-key" , servenv .GRPCKey (), "--grpc-cert" , servenv .GRPCCert (), "--grpc-ca" , servenv .GRPCCertificateAuthority (), "--grpc-auth-mtls-allowed-substrings" , servenv .ClientCertSubstrings ()}... )
283
303
}
304
+ vtVer , err := getMajorVersion (vt .Binary )
305
+ if err != nil {
306
+ return nil , err
307
+ }
284
308
if args .VSchemaDDLAuthorizedUsers != "" {
285
- vt .ExtraArgs = append (vt .ExtraArgs , []string {"--vschema-ddl-authorized-users" , args .VSchemaDDLAuthorizedUsers }... )
309
+ vt .ExtraArgs = append (vt .ExtraArgs , []string {vtutils . GetFlagVariantForTestsByVersion ( "--vschema-ddl-authorized-users" , vtVer ) , args .VSchemaDDLAuthorizedUsers }... )
286
310
}
287
311
vt .ExtraArgs = append (vt .ExtraArgs , "--mysql-server-version" , servenv .MySQLServerVersion ())
288
312
if socket != "" {
0 commit comments