#At file:///ext/mysql/bzr/backup/bug48282/ based on revid:charles.bell@stripped
2890 Rafal Somla 2009-11-19
Bug #48282 restore_stress test: mysql-stress-test tool can't find
mysqltest utility in PB2
The problem was that location of mysqltest utility, as passed to
mysql-stress-test.pl script via --mysqltest option was correct only
in a source tree but not in other tree layouts.
This is fixed by adding to MTR a new $MYSQL_TEST_EXE variable
pointing at the correct location of the utility. Then this is used
to pass correct path to mysql-stress-test.pl.
At the same time this patch fixes the issue of backup_restore suite
not being usable from MTR because it contained test scripts to be
used only by mysql-stress-test.pl script. Now these test scripts and
companion files are moved to suite/backup_extra/flightstats_stress/
dir.
@ mysql-test/mysql-test-run.pl
Define MYSQL_TEST_EXE variable pointing at mysqltest executable.
@ mysql-test/suite/backup_extra/flightstats_stress/init_flightstat_stress.txt
Move files used by mysql-stress-test utility to separate folder.
@ mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_delete.result
- Move files used by mysql-stress-test utility to separate folder.
- Updated result file.
@ mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_init.result
- Move files used by mysql-stress-test utility to separate folder.
- Updated result file.
@ mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_insert.result
- Move files used by mysql-stress-test utility to separate folder.
- Updated result file.
@ mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_restore.result
- Move files used by mysql-stress-test utility to separate folder.
- Updated result file.
@ mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_update.result
- Move files used by mysql-stress-test utility to separate folder.
- Updated result file.
@ mysql-test/suite/backup_extra/flightstats_stress/run_flightstat_stress.txt
Move files used by mysql-stress-test utility to separate folder.
@ mysql-test/suite/backup_extra/flightstats_stress/run_flightstat_stress_with_restore.txt
Move files used by mysql-stress-test utility to separate folder.
@ mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_cleanup.test
- Move files used by mysql-stress-test utility to separate folder.
@ mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_delete.test
- Move files used by mysql-stress-test utility to separate folder.
- Disable logging to make result file robust and deterministic. This
is to avoid false warnings from mysql-stress-test utility.
@ mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_init.test
- Move files used by mysql-stress-test utility to separate folder.
@ mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_insert.test
- Move files used by mysql-stress-test utility to separate folder.
- Disable logging to make result file robust and deterministic. This
is to avoid false warnings from mysql-stress-test utility.
@ mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_restore.test
- Move files used by mysql-stress-test utility to separate folder.
- Disable logging to make result file robust and deterministic. This
is to avoid false warnings from mysql-stress-test utility.
@ mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_update.test
- Move files used by mysql-stress-test utility to separate folder.
- Disable logging to make result file robust and deterministic. This
is to avoid false warnings from mysql-stress-test utility.
@ mysql-test/suite/backup_extra/stress_basedir
Remove the working directory for restore_stress test. Now it will be
created by test script if it does not exist.
@ mysql-test/suite/backup_extra/t/restore_stress.test
- Set --mysqltest option using $MYSQL_TEST_EXE value - this is the main fix for
the problem.
- Update test to reflect new location of stress test scripts.
@ mysql-test/suite/backup_extra/vptest/run_vp_test.pl
- Update test to reflect new location of stress test scripts.
- Changed location of working dir ($stress_basedir) to make it the same as
the one used in restore_stress test.
removed:
mysql-test/suite/backup_extra/stress_basedir/
added:
mysql-test/suite/backup_extra/flightstats_stress/
mysql-test/suite/backup_extra/flightstats_stress/r/
mysql-test/suite/backup_extra/flightstats_stress/t/
renamed:
mysql-test/suite/backup_extra/init_flightstat_stress.txt => mysql-test/suite/backup_extra/flightstats_stress/init_flightstat_stress.txt
mysql-test/suite/backup_extra/r/flightstat_stress_delete.result => mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_delete.result
mysql-test/suite/backup_extra/r/flightstat_stress_init.result => mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_init.result
mysql-test/suite/backup_extra/r/flightstat_stress_insert.result => mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_insert.result
mysql-test/suite/backup_extra/r/flightstat_stress_restore.result => mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_restore.result
mysql-test/suite/backup_extra/r/flightstat_stress_update.result => mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_update.result
mysql-test/suite/backup_extra/run_flightstat_stress.txt => mysql-test/suite/backup_extra/flightstats_stress/run_flightstat_stress.txt
mysql-test/suite/backup_extra/run_flightstat_stress_with_restore.txt => mysql-test/suite/backup_extra/flightstats_stress/run_flightstat_stress_with_restore.txt
mysql-test/suite/backup_extra/t/flightstat_stress_cleanup.test => mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_cleanup.test
mysql-test/suite/backup_extra/t/flightstat_stress_delete.test => mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_delete.test
mysql-test/suite/backup_extra/t/flightstat_stress_init.test => mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_init.test
mysql-test/suite/backup_extra/t/flightstat_stress_insert.test => mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_insert.test
mysql-test/suite/backup_extra/t/flightstat_stress_restore.test => mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_restore.test
mysql-test/suite/backup_extra/t/flightstat_stress_update.test => mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_update.test
modified:
mysql-test/mysql-test-run.pl
mysql-test/suite/backup_extra/t/restore_stress.test
mysql-test/suite/backup_extra/vptest/run_vp_test.pl
mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_delete.result
mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_init.result
mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_insert.result
mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_restore.result
mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_update.result
mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_delete.test
mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_insert.test
mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_restore.test
mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_update.test
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2009-10-26 14:02:26 +0000
+++ b/mysql-test/mysql-test-run.pl 2009-11-19 15:50:00 +0000
@@ -4965,6 +4965,7 @@ sub start_mysqltest ($) {
# export MYSQL_TEST variable containing <path>/mysqltest <args>
# ----------------------------------------------------------------------
$ENV{'MYSQL_TEST'}= mtr_args2str($exe_mysqltest, @$args);
+ $ENV{'MYSQL_TEST_EXE'}= "$exe_mysqltest";
# ----------------------------------------------------------------------
# Add arguments that should not go into the MYSQL_TEST env var
=== added directory 'mysql-test/suite/backup_extra/flightstats_stress'
=== renamed file 'mysql-test/suite/backup_extra/init_flightstat_stress.txt' => 'mysql-test/suite/backup_extra/flightstats_stress/init_flightstat_stress.txt'
=== added directory 'mysql-test/suite/backup_extra/flightstats_stress/r'
=== renamed file 'mysql-test/suite/backup_extra/r/flightstat_stress_delete.result' => 'mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_delete.result'
--- a/mysql-test/suite/backup_extra/r/flightstat_stress_delete.result 2009-09-29 15:01:15 +0000
+++ b/mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_delete.result 2009-11-19 15:50:00 +0000
@@ -1,15 +1 @@
USE FlightStats_test;
-SET TRANSACTION ISOLATION LEVEL <level>;
-SET @tmp_num=test.int_rand(18524-5);
-START TRANSACTION;
-SET @tmp_num=@tmp_num+1;
-DELETE FROM ontime_1week WHERE id=@tmp_num;
-SET @tmp_num=@tmp_num+1;
-DELETE FROM ontime_1week WHERE id=@tmp_num;
-SET @tmp_num=@tmp_num+1;
-DELETE FROM ontime_1week WHERE id=@tmp_num;
-SET @tmp_num=@tmp_num+1;
-DELETE FROM ontime_1week WHERE id=@tmp_num;
-SET @tmp_num=@tmp_num+1;
-DELETE FROM ontime_1week WHERE id=@tmp_num;
-COMMIT;
=== renamed file 'mysql-test/suite/backup_extra/r/flightstat_stress_init.result' => 'mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_init.result'
--- a/mysql-test/suite/backup_extra/r/flightstat_stress_init.result 2009-09-29 15:01:15 +0000
+++ b/mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_init.result 2009-11-19 15:50:00 +0000
@@ -1,5 +1,5 @@
CREATE FUNCTION test.int_rand(num INT) RETURNS INT
-RETURN ROUND(num * RAND() + 0.5);
+RETURN CEILING(num * RAND());
CREATE TABLE test.txil (id int, level text);
INSERT INTO test.txil VALUES
(1, 'READ UNCOMMITTED'),
=== renamed file 'mysql-test/suite/backup_extra/r/flightstat_stress_insert.result' => 'mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_insert.result'
--- a/mysql-test/suite/backup_extra/r/flightstat_stress_insert.result 2009-09-29 15:01:15 +0000
+++ b/mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_insert.result 2009-11-19 15:50:00 +0000
@@ -1,65 +1 @@
USE FlightStats_test;
-SET TRANSACTION ISOLATION LEVEL <level>;
-SET @tmp_num=test.int_rand(6279-5)+148000;
-START TRANSACTION;
-SET @tmp_num=@tmp_num+1;
-INSERT INTO ontime_all (
-id, carrier, origin, destination, flight_num, flight_time,
-tail_num, dep_time, arr_time, dep_delay, arr_delay,
-taxi_out, taxi_in, distance, cancelled, diverted
-)
-SELECT
-id, '--', origin, destination, flight_num, flight_time,
-tail_num, dep_time, arr_time, dep_delay, arr_delay,
-taxi_out, taxi_in, distance, cancelled, diverted
-FROM ontime_1week
-WHERE id = @tmp_num;
-SET @tmp_num=@tmp_num+1;
-INSERT INTO ontime_all (
-id, carrier, origin, destination, flight_num, flight_time,
-tail_num, dep_time, arr_time, dep_delay, arr_delay,
-taxi_out, taxi_in, distance, cancelled, diverted
-)
-SELECT
-id, '--', origin, destination, flight_num, flight_time,
-tail_num, dep_time, arr_time, dep_delay, arr_delay,
-taxi_out, taxi_in, distance, cancelled, diverted
-FROM ontime_1week
-WHERE id = @tmp_num;
-SET @tmp_num=@tmp_num+1;
-INSERT INTO ontime_all (
-id, carrier, origin, destination, flight_num, flight_time,
-tail_num, dep_time, arr_time, dep_delay, arr_delay,
-taxi_out, taxi_in, distance, cancelled, diverted
-)
-SELECT
-id, '--', origin, destination, flight_num, flight_time,
-tail_num, dep_time, arr_time, dep_delay, arr_delay,
-taxi_out, taxi_in, distance, cancelled, diverted
-FROM ontime_1week
-WHERE id = @tmp_num;
-SET @tmp_num=@tmp_num+1;
-INSERT INTO ontime_all (
-id, carrier, origin, destination, flight_num, flight_time,
-tail_num, dep_time, arr_time, dep_delay, arr_delay,
-taxi_out, taxi_in, distance, cancelled, diverted
-)
-SELECT
-id, '--', origin, destination, flight_num, flight_time,
-tail_num, dep_time, arr_time, dep_delay, arr_delay,
-taxi_out, taxi_in, distance, cancelled, diverted
-FROM ontime_1week
-WHERE id = @tmp_num;
-SET @tmp_num=@tmp_num+1;
-INSERT INTO ontime_all (
-id, carrier, origin, destination, flight_num, flight_time,
-tail_num, dep_time, arr_time, dep_delay, arr_delay,
-taxi_out, taxi_in, distance, cancelled, diverted
-)
-SELECT
-id, '--', origin, destination, flight_num, flight_time,
-tail_num, dep_time, arr_time, dep_delay, arr_delay,
-taxi_out, taxi_in, distance, cancelled, diverted
-FROM ontime_1week
-WHERE id = @tmp_num;
-COMMIT;
=== renamed file 'mysql-test/suite/backup_extra/r/flightstat_stress_restore.result' => 'mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_restore.result'
--- a/mysql-test/suite/backup_extra/r/flightstat_stress_restore.result 2009-09-29 15:01:15 +0000
+++ b/mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_restore.result 2009-11-19 15:50:00 +0000
@@ -1,6 +1 @@
-RESTORE FROM 'FlightStats.bkp' OVERWRITE;
-backup_id
-#
-SELECT release_lock('flighstat_restore_lock');
-release_lock('flighstat_restore_lock')
-NULL
+# Running RESTORE if not locked.
=== renamed file 'mysql-test/suite/backup_extra/r/flightstat_stress_update.result' => 'mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_update.result'
--- a/mysql-test/suite/backup_extra/r/flightstat_stress_update.result 2009-09-29 15:01:15 +0000
+++ b/mysql-test/suite/backup_extra/flightstats_stress/r/flightstat_stress_update.result 2009-11-19 15:50:00 +0000
@@ -1,40 +1 @@
USE FlightStats_test;
-SET TRANSACTION ISOLATION LEVEL <level>;
-SET @tmp_num=test.int_rand(6279-5)+148000;
-START TRANSACTION;
-SET @tmp_num=@tmp_num+1;
-SELECT distance FROM ontime_1week
-WHERE id=@tmp_num
-INTO @dist;
-UPDATE ontime_1week
-SET distance=@dist+1
-WHERE id=@tmp_num;
-SET @tmp_num=@tmp_num+1;
-SELECT distance FROM ontime_1week
-WHERE id=@tmp_num
-INTO @dist;
-UPDATE ontime_1week
-SET distance=@dist+1
-WHERE id=@tmp_num;
-SET @tmp_num=@tmp_num+1;
-SELECT distance FROM ontime_1week
-WHERE id=@tmp_num
-INTO @dist;
-UPDATE ontime_1week
-SET distance=@dist+1
-WHERE id=@tmp_num;
-SET @tmp_num=@tmp_num+1;
-SELECT distance FROM ontime_1week
-WHERE id=@tmp_num
-INTO @dist;
-UPDATE ontime_1week
-SET distance=@dist+1
-WHERE id=@tmp_num;
-SET @tmp_num=@tmp_num+1;
-SELECT distance FROM ontime_1week
-WHERE id=@tmp_num
-INTO @dist;
-UPDATE ontime_1week
-SET distance=@dist+1
-WHERE id=@tmp_num;
-COMMIT;
=== renamed file 'mysql-test/suite/backup_extra/run_flightstat_stress.txt' => 'mysql-test/suite/backup_extra/flightstats_stress/run_flightstat_stress.txt'
=== renamed file 'mysql-test/suite/backup_extra/run_flightstat_stress_with_restore.txt' => 'mysql-test/suite/backup_extra/flightstats_stress/run_flightstat_stress_with_restore.txt'
=== added directory 'mysql-test/suite/backup_extra/flightstats_stress/t'
=== renamed file 'mysql-test/suite/backup_extra/t/flightstat_stress_cleanup.test' => 'mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_cleanup.test'
=== renamed file 'mysql-test/suite/backup_extra/t/flightstat_stress_delete.test' => 'mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_delete.test'
--- a/mysql-test/suite/backup_extra/t/flightstat_stress_delete.test 2009-09-29 15:01:15 +0000
+++ b/mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_delete.test 2009-11-19 15:50:00 +0000
@@ -1,5 +1,9 @@
USE FlightStats_test;
+--disable_query_log
+--disable_result_log
+--disable_warnings
+
# Number of deletes performed in this transaction
let $total_it=5;
=== renamed file 'mysql-test/suite/backup_extra/t/flightstat_stress_init.test' => 'mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_init.test'
=== renamed file 'mysql-test/suite/backup_extra/t/flightstat_stress_insert.test' => 'mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_insert.test'
--- a/mysql-test/suite/backup_extra/t/flightstat_stress_insert.test 2009-09-29 15:01:15 +0000
+++ b/mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_insert.test 2009-11-19 15:50:00 +0000
@@ -3,6 +3,10 @@
USE FlightStats_test;
+--disable_query_log
+--disable_result_log
+--disable_warnings
+
LET $total_it=5;
# Setting transaction isolation level
=== renamed file 'mysql-test/suite/backup_extra/t/flightstat_stress_restore.test' => 'mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_restore.test'
--- a/mysql-test/suite/backup_extra/t/flightstat_stress_restore.test 2009-09-29 15:01:15 +0000
+++ b/mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_restore.test 2009-11-19 15:50:00 +0000
@@ -6,6 +6,12 @@
# always have a chance to run in parallel.
#
+--disable_query_log
+--disable_result_log
+--disable_warnings
+
+--echo # Running RESTORE if not locked.
+
if (`select get_lock('flightstat_restore_lock',0)`)
{
--sleep 3
=== renamed file 'mysql-test/suite/backup_extra/t/flightstat_stress_update.test' => 'mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_update.test'
--- a/mysql-test/suite/backup_extra/t/flightstat_stress_update.test 2009-09-29 15:01:15 +0000
+++ b/mysql-test/suite/backup_extra/flightstats_stress/t/flightstat_stress_update.test 2009-11-19 15:50:00 +0000
@@ -3,6 +3,10 @@
USE FlightStats_test;
+--disable_query_log
+--disable_result_log
+--disable_warnings
+
LET $total_it=5;
# Setting transaction isolation level
=== removed directory 'mysql-test/suite/backup_extra/stress_basedir'
=== modified file 'mysql-test/suite/backup_extra/t/restore_stress.test'
--- a/mysql-test/suite/backup_extra/t/restore_stress.test 2009-09-29 15:01:15 +0000
+++ b/mysql-test/suite/backup_extra/t/restore_stress.test 2009-11-19 15:50:00 +0000
@@ -12,9 +12,9 @@
let $THREAD_COUNT= 5; # should be >1!
let $STRESS_DURATION= 300;
-let $STRESS_SUITE= ./suite/backup_extra;
-let $STRESS_LIST= ./suite/backup_extra/run_flightstat_stress_with_restore.txt;
-let $STRESS_DIR= $STRESS_SUITE/stress_basedir;
+let $STRESS_DIR= ./suite/backup_extra/stress_basedir;
+let $STRESS_SUITE= ./suite/backup_extra/flightstats_stress;
+let $STRESS_LIST= $STRESS_SUITE/run_flightstat_stress_with_restore.txt;
#
# Checking that FLIGHTSTATS_PATH is set and contains data.
@@ -48,8 +48,6 @@ EOF
--echo # Creating FlightStats_test database ...
--exec $MYSQL <$FLIGHTSTATS_PATH/flightstats_schema.sql
---echo # Altering the database ...
---exec $MYSQL <$STRESS_SUITE/vptest/flightstats_alter.sql
--echo # Done creating database.
#
@@ -123,7 +121,7 @@ let $STRESS_OPTS= $STRESS_OPTS --server-
let $STRESS_OPTS= $STRESS_OPTS --stress-suite-basedir=$STRESS_SUITE;
let $STRESS_OPTS= $STRESS_OPTS --stress-tests-file=$STRESS_LIST;
let $STRESS_OPTS= $STRESS_OPTS --stress-init-file=$STRESS_SUITE/init_flightstat_stress.txt;
-let $STRESS_OPTS= $STRESS_OPTS --mysqltest=../client/mysqltest;
+let $STRESS_OPTS= $STRESS_OPTS --mysqltest=$MYSQL_TEST_EXE;
#
# Note: the myslql-stress-test.pl script has problems finding mysqltest utility
=== modified file 'mysql-test/suite/backup_extra/vptest/run_vp_test.pl'
--- a/mysql-test/suite/backup_extra/vptest/run_vp_test.pl 2009-09-29 15:01:15 +0000
+++ b/mysql-test/suite/backup_extra/vptest/run_vp_test.pl 2009-11-19 15:50:00 +0000
@@ -62,14 +62,14 @@ check_options();
my $test_dir=$mysql_dir."/mysql-test/";
my $master_dbdir=$test_dir."var/mysqld.1/data/";
my $slave_dbdir=$test_dir."var/mysqld.2/data/";
+my $vptest_home="$test_dir/suite/backup_extra/vptest";
-my $stress_suitedir=$test_dir."suite/backup_extra/";
-my $test_files_dir=$stress_suitedir;
-my $stress_basedir=$stress_suitedir."stress_basedir";
+my $stress_suitedir= "$test_dir/suite/backup_extra/flightstats_stress/";
+my $stress_basedir= "$test_dir/suite/backup_extra/stress_basedir";
my $stress_init_file = $stress_suitedir."init_flightstat_stress.txt";
my $stress_tests_file = $stress_suitedir."run_flightstat_stress.txt";
-my $tmpfile_dir=$stress_suitedir."vptest/tmp/";
-my $alter_file=$stress_suitedir."vptest/flightstats_alter.sql";
+my $tmpfile_dir="$vptest_home/tmp/";
+my $alter_file="$vptest_home/flightstats_alter.sql";
my $backup_file="flight.bak";
my $dump_file_orig=$tmpfile_dir."dump_orig_db.sql";
@@ -438,7 +438,7 @@ sub run_stress {
print("STARTING STRESS TEST\n");
my $stress_param ="--stress-basedir=$stress_basedir ".
- "--stress-suite-basedir=$stress_suitedir/ ".
+ "--stress-suite-basedir=$stress_suitedir ".
"--server-logs-dir=$stress_basedir ".
"--stress-init-file=$stress_init_file ".
"--stress-tests-file=$stress_tests_file --server-user=root ".
Attachment: [text/bzr-bundle] bzr/rafal.somla@sun.com-20091119155000-72twg8q6tq9a4b0y.bundle
| Thread |
|---|
| • bzr commit into mysql-6.0-backup branch (Rafal.Somla:2890) Bug#48282 | Rafal Somla | 19 Nov |