File: have_network_namespaces.inc

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (83 lines) | stat: -rw-r--r-- 2,189 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# The inc file ensures that the the test which it sources
# runs on linux and that the programs 'mysqld', 'mysql' and
# 'mysqlxtest' have the 'cap_sys_admin' capability granted.
# It also checks whether a couple of network namespaces
# named 'red' and 'blue' are configured on the machine.

--perl
  use strict;
  use File::Basename;

  my $osname = $^O;
  my $mysqld_cap_set = 0;
  my $mysql_cap_set = 0;
  my $mysqlxtest_cap_set = 0;
  my $red_netns_set = 0;
  my $blue_netns_set = 0;
  my $platform_support = 0;
  my $exe_mysqlxtest;

  if( $osname eq 'linux')
  {
    $platform_support = 1;

    `/sbin/getcap $ENV{'MYSQLD'} | grep -F -q cap_sys_admin`;
    $mysqld_cap_set = 1 if $? == 0;

    `/sbin/getcap $ENV{'EXE_MYSQL'} | grep -F -q cap_sys_admin`;
    $mysql_cap_set = 1 if $? == 0;

    ($exe_mysqlxtest) = split (/\s/, $ENV{'MYSQLXTEST'});
    `/sbin/getcap $exe_mysqlxtest | grep -F -q cap_sys_admin`;
    $mysqlxtest_cap_set = 1 if $? == 0;

    `/sbin/ip netns list | grep -F -q red`;
    $red_netns_set = 1 if $? == 0;

    `/sbin/ip netns list | grep -F -q blue`;
    $blue_netns_set = 1 if $? == 0;
  }

  open(FH, ">$ENV{MYSQL_TMP_DIR}/netns_vars.inc") or
    die("Unable to open file: $!\n");
  print FH "let \$mysqld_cap_set= $mysqld_cap_set;\n";
  print FH "let \$mysql_cap_set= $mysql_cap_set;\n";
  print FH "let \$mysqlxtest_cap_set= $mysqlxtest_cap_set;\n";
  print FH "let \$exe_mysqlxtest= $exe_mysqlxtest;\n";
  print FH "let \$red_netns_set= $red_netns_set;\n";
  print FH "let \$blue_netns_set= $blue_netns_set;\n";
  close FH;
EOF

--source $MYSQL_TMP_DIR/netns_vars.inc
--remove_file $MYSQL_TMP_DIR/netns_vars.inc

if ($platform_support == 0)
{
  --skip Test is not supported on the platform
}

if ($mysqld_cap_set == 0)
{
  --skip Test requires that mysqld has cap_sys_admin
}

if ($mysql_cap_set == 0)
{
  --skip Test requires that mysql client has cap_sys_admin
}

if ($mysqlxtest_cap_set == 0)
{
  --skip Test requires that mysqlxtest client has cap_sys_admin
}

if ($red_netns_set == 0)
{
  --skip Test requires that network namespace 'red' is present
}

if ($blue_netns_set == 0)
{
  --skip Test requires that network namespace 'blue' is present
}