This repository has been archived on 2025-01-04. You can view files and clone it, but cannot push or open issues or pull requests.
lwb6/legacyworlds-server-data/db-structure/tests/admin/050-updates/000-updates-ctrl/010-start-tick.sql

53 lines
1.9 KiB
MySQL
Raw Normal View History

/*
* Test the sys.start_tick() function
*/
BEGIN;
-- Delete all registered update types and targets
DELETE FROM sys.update_types;
DELETE FROM sys.update_targets;
-- Create a new update target / type which will be used in tests
CREATE SCHEMA test
CREATE TABLE test( test_id INT NOT NULL PRIMARY KEY );
INSERT INTO sys.update_targets VALUES ( 1 , 'Test' , 'test' , 'test' );
INSERT INTO sys.update_types VALUES ( 1 , 1 , 'Test' , 2 , '' , NULL , NULL );
-- Insert a few update rows
INSERT INTO test.test VALUES ( 1 ) , ( 2 ) , ( 3 );
-- ***** TESTS BEGIN HERE *****
SELECT plan( 5 );
UPDATE sys.status SET maintenance_start = now( ) , current_tick = NULL;
SELECT diag_test_name( 'sys.start_tick() - Ticks do not start if maintenance mode is active' );
SELECT ok( sys.start_tick( ) IS NULL );
UPDATE sys.status SET maintenance_start = NULL , current_tick = next_tick;
SELECT diag_test_name( 'sys.start_tick() - Ticks do not start if current_tick is set' );
SELECT ok( sys.start_tick( ) IS NULL );
UPDATE sys.status SET current_tick = NULL , next_tick = 2;
UPDATE sys.updates SET update_state = 'PROCESSED' , update_last = -1;
UPDATE sys.updates su SET update_last = 514
FROM test.test_updates tu
WHERE su.update_id = tu.update_id
AND tu.test_id = 3;
SELECT diag_test_name( 'sys.start_tick() - Returns next tick identifier when ticks can start' );
SELECT is( sys.start_tick( ) , 2::BIGINT );
SELECT diag_test_name( 'sys.start_tick() - System status is updated' );
SELECT set_eq(
$$ SELECT current_tick , next_tick FROM sys.status $$ ,
$$ VALUES ( 2 , 3 ) $$
);
SELECT diag_test_name( 'sys.start_tick() - Update rows are marked for processing when necessary' );
SELECT set_eq(
$$ SELECT test_id
FROM test.test_updates
INNER JOIN sys.updates
USING ( update_id , updtgt_id , updtype_id )
WHERE update_state = 'FUTURE' AND update_last = 2 $$ ,
$$ VALUES ( 1 ) , ( 2 ) $$
);
SELECT * FROM finish( );
ROLLBACK;