File: have_memcached_sasl.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 (71 lines) | stat: -rw-r--r-- 1,920 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
--disable_query_log
--disable_warnings
if (!$memcached_port) {
  --die You need to specify $memcached_port variable
}
if ($DAEMON_MEMCACHED_DIR == '') {
  --skip Memcached not available
}

--let ENV_MEMCACHED_PORT= $memcached_port
source include/memcache_config.inc;

INSERT INTO cache_policies VALUES("cache_policy", "innodb_only",
"innodb_only", "innodb_only", "innodb_only");
INSERT INTO config_options VALUES("separator", "0");
INSERT INTO containers VALUES ("desc_t1", "innodb_memcache", "t1", "c1",
"c2", "0", "0", "0", "PRIMARY");
CREATE TABLE t1 (c1 VARCHAR(32), c2 VARCHAR(1024), primary key(c1))
ENGINE = INNODB;

INSTALL PLUGIN daemon_memcached SONAME 'libmemcached.so';

perl;
use strict;
use File::Basename;
use IO::File;
use lib "lib";
use My::Memcache;

use constant BIN_CMD_SASL_AUTH => 0x21;
use constant ERR_AUTH_FAILURE  => 0x20;

sub authenticate {
  my ($mc, $user, $pass, $mech)= @_;
  $mech ||= 'PLAIN';
  my $buf = sprintf("%c%s%c%s", 0, $user, 0, $pass);
  $mc->send_binary_request(BIN_CMD_SASL_AUTH, $mech, $buf, '');
  my ($status, $result) = $mc->get_binary_response();
  if ($status == ERR_AUTH_FAILURE) {
    $mc->{error} = "AUTH_FAILURE";
  };
  return ($status == 0) ? 1 : 0;
}

my $vardir = $ENV{MYSQLTEST_VARDIR} or die "Need MYSQLTEST_VARDIR";
my $F = IO::File->new("$vardir/tmp/have_sasl_result.inc", "w") or die;

my $mc = My::Memcache::Binary->new();
my $r = $mc->connect("127.0.0.1", $ENV{'ENV_MEMCACHED_PORT'});

if (!authenticate($mc, 'testuser', 'testpass')) {
  #print $mc->{error} . "\n";
  if ($mc->{error} eq 'UNKNOWN_COMMAND') {
    print $F "--let \$skip_test=1\n";
  };
};

$F->close();
EOF

--source $MYSQLTEST_VARDIR/tmp/have_sasl_result.inc
--remove_file $MYSQLTEST_VARDIR/tmp/have_sasl_result.inc

UNINSTALL PLUGIN daemon_memcached;
DROP DATABASE innodb_memcache;

if ($skip_test) {
  --skip SASL is not supported by this build
}
--enable_warnings
--enable_query_log