Mining computation update

* Added various views and helper functions used by the mining
computation but which may be re-used in other parts.

* Added mining computation update type and associated update function

* New constants: game.resources.weightBase (the value used to compute
weights from mining settings) and game.resources.extraction (the
quantity extracted in a day from a full provider at difficulty 0)
This commit is contained in:
Emmanuel BENOîT 2012-01-16 12:35:20 +01:00
parent 038bba896a
commit 74b6f2ab09
20 changed files with 1139 additions and 2 deletions
legacyworlds-server-data/db-structure/tests/dirty/010-mining-update-locks

View file

@ -0,0 +1,8 @@
/*
* Prepare for the locking tests on sys.gu_pmc_get_data()
*/
BEGIN;
CREATE EXTENSION pageinspect;
\i utils/common-setup/setup-gu-pmc-get-data-test.sql
\i utils/locks-finder.sql
COMMIT;

View file

@ -0,0 +1,104 @@
/*
* Test the locks set by sys.gu_pmc_get_data( )
*/
BEGIN;
SELECT * FROM sys.gu_pmc_get_data( 0 );
SELECT plan( 7 );
SELECT diag_test_name( 'sys.gu_pmc_get_data() - Locks on planets' );
SELECT set_eq ( $$
SELECT name_id , shared , exclusive
FROM verse.planets pl
INNER JOIN ( SELECT * FROM _get_locks_on( 'verse.planets' ) ) p
ON p.ctid = pl.ctid;
$$ , $$
VALUES ( _get_map_name( 'planet2' ) , TRUE , FALSE ) ,
( _get_map_name( 'planet3' ) , TRUE , FALSE ) ,
( _get_map_name( 'planet4' ) , TRUE , FALSE );
$$
);
SELECT diag_test_name( 'sys.gu_pmc_get_data() - Locks on resource providers' );
SELECT set_eq ( $$
SELECT planet_id , resource_name_id , shared , exclusive
FROM verse.resource_providers rp
INNER JOIN ( SELECT * FROM _get_locks_on( 'verse.resource_providers' ) ) p
ON p.ctid = rp.ctid;
$$ , $$
VALUES ( _get_map_name( 'planet2' ) , _get_string('resource1') , FALSE , TRUE ) ,
( _get_map_name( 'planet2' ) , _get_string('resource2') , FALSE , TRUE ) ,
( _get_map_name( 'planet3' ) , _get_string('resource1') , FALSE , TRUE ) ,
( _get_map_name( 'planet3' ) , _get_string('resource2') , FALSE , TRUE ) ,
( _get_map_name( 'planet4' ) , _get_string('resource1') , FALSE , TRUE ) ,
( _get_map_name( 'planet4' ) , _get_string('resource2') , FALSE , TRUE );
$$
);
SELECT diag_test_name( 'sys.gu_pmc_get_data() - Locks on planet resources' );
SELECT set_eq ( $$
SELECT planet_id , resource_name_id , shared , exclusive
FROM verse.planet_resources pr
INNER JOIN ( SELECT * FROM _get_locks_on( 'verse.planet_resources' ) ) p
ON p.ctid = pr.ctid;
$$ , $$
VALUES ( _get_map_name( 'planet2' ) , _get_string('resource1') , FALSE , TRUE ) ,
( _get_map_name( 'planet2' ) , _get_string('resource2') , FALSE , TRUE ) ,
( _get_map_name( 'planet3' ) , _get_string('resource1') , FALSE , TRUE ) ,
( _get_map_name( 'planet3' ) , _get_string('resource2') , FALSE , TRUE ) ,
( _get_map_name( 'planet4' ) , _get_string('resource1') , FALSE , TRUE ) ,
( _get_map_name( 'planet4' ) , _get_string('resource2') , FALSE , TRUE );
$$
);
SELECT diag_test_name( 'sys.gu_pmc_get_data() - Locks on empire planets' );
SELECT set_eq ( $$
SELECT planet_id , empire_id , shared , exclusive
FROM emp.planets ep
INNER JOIN ( SELECT * FROM _get_locks_on( 'emp.planets' ) ) p
ON p.ctid = ep.ctid;
$$ , $$
VALUES ( _get_map_name( 'planet3' ) , _get_emp_name('empire1' ) , TRUE , FALSE ) ,
( _get_map_name( 'planet4' ) , _get_emp_name('empire2' ) , TRUE , FALSE );
$$
);
SELECT diag_test_name( 'sys.gu_pmc_get_data() - Locks on mining settings' );
SELECT set_eq ( $$
SELECT empire_id , resource_name_id , shared , exclusive
FROM emp.mining_settings ms
INNER JOIN ( SELECT * FROM _get_locks_on( 'emp.mining_settings' ) ) p
ON p.ctid = ms.ctid;
$$ , $$
VALUES ( _get_emp_name('empire1' ) , _get_string( 'resource1' ) , TRUE , FALSE ) ,
( _get_emp_name('empire1' ) , _get_string( 'resource2' ) , TRUE , FALSE ) ,
( _get_emp_name('empire2' ) , _get_string( 'resource1' ) , TRUE , FALSE ) ,
( _get_emp_name('empire2' ) , _get_string( 'resource2' ) , TRUE , FALSE );
$$
);
SELECT diag_test_name( 'sys.gu_pmc_get_data() - Locks on planet mining settings' );
SELECT set_eq ( $$
SELECT empire_id , planet_id , resource_name_id , shared , exclusive
FROM emp.planet_mining_settings ms
INNER JOIN ( SELECT * FROM _get_locks_on( 'emp.planet_mining_settings' ) ) p
ON p.ctid = ms.ctid;
$$ , $$
VALUES ( _get_emp_name('empire2' ) , _get_map_name( 'planet4' ) , _get_string( 'resource1' ) , TRUE , FALSE ) ,
( _get_emp_name('empire2' ) , _get_map_name( 'planet4' ) , _get_string( 'resource2' ) , TRUE , FALSE );
$$
);
SELECT diag_test_name( 'sys.gu_pmc_get_data() - Locks on planet happiness records' );
SELECT set_eq ( $$
SELECT planet_id , shared , exclusive
FROM verse.planet_happiness pl
INNER JOIN ( SELECT * FROM _get_locks_on( 'verse.planet_happiness' ) ) p
ON p.ctid = pl.ctid;
$$ , $$
VALUES ( _get_map_name( 'planet3' ) , TRUE , FALSE ) ,
( _get_map_name( 'planet4' ) , TRUE , FALSE );
$$
);
SELECT * FROM finish( );
ROLLBACK;