File: memc290_read_committed.test

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 (141 lines) | stat: -rw-r--r-- 4,060 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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# Bug#20205934 - ENABLE VALGRIND FOR MEMCACHED TESTS
source include/not_valgrind.inc;
source include/have_memcached_plugin.inc;

--disable_query_log
CALL mtr.add_suppression("daemon-memcached-w-batch-size': unsigned");
CALL mtr.add_suppression("Could not obtain server's UPN to be used as target service name");
CALL mtr.add_suppression("Warning: MySQL is trying to drop");
# Create the memcached tables
source include/memcache_config.inc;
--enable_query_log

INSERT INTO cache_policies VALUES('cache_policy', 'innodb_only',
				  'innodb_only', 'innodb_only', 'innodb_only');

INSERT INTO config_options VALUES('separator', '|');

# describe table for memcache
INSERT INTO containers VALUES ('desc_t1', 'test', 't1',
			       'c1', 'c2', '0', '0', '0', 'PRIMARY');

USE test;
let MEMCACHED_PORT=11290;

CREATE TABLE t1        (c1 VARCHAR(32),
			c2 BLOB,
			primary key(c1))
ENGINE = INNODB;

INSERT INTO t1 VALUES ('A', repeat('a',8000));
INSERT INTO t1 VALUES ('B', 'Berlin');
INSERT INTO t1 VALUES ('C', 'Cottbus');
INSERT INTO t1 VALUES ('D', 'Darmstadt');
INSERT INTO t1 VALUES ('H', 'Hamburg');

# Tables must exist before plugin can be started!
--let $memcached_address=127.0.0.1:11290
--source ../include/load_daemon_memcached_expecting_success.inc

SELECT @@innodb_api_trx_level;
SELECT @@innodb_api_bk_commit_interval;
SELECT @@daemon_memcached_r_batch_size;
SELECT @@daemon_memcached_w_batch_size;

--write_file $MYSQLTEST_VARDIR/tmp/read_committed.pl
use DBI;
use Cache::Memcached;
my $memcached_port=$ENV{'MEMCACHED_PORT'};

if (!$memcached_port) {
print "memcached port is Empty. The test should set ENV variable
MEMCACHED_PORT\n";
exit;
}

my $memd2 = new Cache::Memcached {
  'servers' => [ "127.0.0.1:$memcached_port" ],
  'connect_timeout' => 2000,
  'select_timeout' => 2000
};
print "Here are the memcached results with A,B,C,D,E,H\n";

$val = $memd2->get("A");
if ($val) { print "$val\n"; } else { print "Couldn't get value for A\n"; }
$val = $memd2->get("B");
if ($val) { print "$val\n"; } else { print "Couldn't get value for B\n"; }
$val = $memd2->get("C");
if ($val) { print "$val\n"; } else { print "Couldn't get value for C\n"; }
$val = $memd2->get("D");
if ($val) { print "$val\n"; } else { print "Couldn't get value for D\n"; }
$val = $memd2->get("E");
if ($val) { print "$val\n"; } else { print "Couldn't get value for E\n"; }
$val = $memd2->get("H");
if ($val) { print "$val\n"; } else { print "Couldn't get value for H\n"; }

$val1 = "h" x 9907;
$val = $memd2->add("W","W|$val1");
$val = $memd2->get("W");
if ($val) { print "$val\n"; }

$memd2->disconnect_all;
EOF

let MYSQL_DESTDIR=$MYSQLTEST_VARDIR/tmp/;

perl;
use DBI;
use Cache::Memcached;

my $memcached_port=$ENV{'MEMCACHED_PORT'} or die;

my $memd = new Cache::Memcached {
  'servers' => [ "127.0.0.1:$memcached_port" ],
  'connect_timeout' => 2000,
  'select_timeout' => 2000
};

if (!$memd->set("A","Ant")) {
  print "Error: A|Ant cannot be inserted.\n";
}
if (!$memd->set("B","Buffalo")) {
  print "Error: B|Buffalo cannot be inserted.\n";
}
if (!$memd->set("C","Cat")) {
  print "Error: C|Cat cannot be inserted.\n";
}
if (!$memd->set("D","Dog")) {
  print "Error: D|Dog cannot be inserted.\n";
}
if (!$memd->set("E","Elephant")) {
  print "Error: E|Elephant cannot be inserted.\n";
}
if (!$memd->set("H","Hen")) {
  print "Error: H|Hen cannot be inserted.\n";
}
print "Opening new connection and doing GET\n";

my $destdir = $ENV{'MYSQL_DESTDIR'};
print "We *shouldn't* see Animal names now\n";
system("perl $destdir/read_committed.pl");
$memd->disconnect_all;
EOF

# Now that the connection is closed & Committed, Read again
# This time we should see Animal values
perl;
my $destdir = $ENV{'MYSQL_DESTDIR'};

print "Connection is closed and transaction is committed\n";
print "We *should* see Animal Names now\n";
system("perl $destdir/read_committed.pl");
EOF

SELECT * FROM t1;

DROP TABLE t1;

# Stop plugin before innodb_memcached configuration
UNINSTALL PLUGIN daemon_memcached;
DROP DATABASE innodb_memcache;
remove_file $MYSQL_DESTDIR/read_committed.pl;