blob: 9b24d978e48cf306e086ceeec9ef62466a1ef5a3 [file] [log] [blame]
--
-- GPDB internal connection tests
--
-- create a new user
drop user if exists user_disallowed_via_local;
create user user_disallowed_via_local with login;
-- cleanup previous settings if any
\! sed -i '/user_disallowed_via_local/d' $COORDINATOR_DATA_DIRECTORY/pg_hba.conf;
-- allow it to login via the [tcp] protocol
\! echo 'host all user_disallowed_via_local samenet trust' | tee -a $COORDINATOR_DATA_DIRECTORY/pg_hba.conf;
-- disallow it to login via the [local] protocol
\! echo 'local all user_disallowed_via_local reject' | tee -a $COORDINATOR_DATA_DIRECTORY/pg_hba.conf;
-- inform the cluster to reload the settings
\! gpstop -qu;
-- the reloading might not happen immediately, wait for a while
select pg_sleep(2);
-- login via a network address is allowed
\c postgres user_disallowed_via_local localhost
-- now we are the new user
create temp table t1_of_user_disallowed_via_local(c1 int);
-- below query will fork an entry db on master, it will connect via [local],
-- but as it is an internal connection it should still be allowed
select * from t1_of_user_disallowed_via_local, pg_sleep(0);
-- cleanup settings if any
\! sed -i '/user_disallowed_via_local/d' $COORDINATOR_DATA_DIRECTORY/pg_hba.conf;
--
-- Segment connection tests
--
-- We should not be able to directly connect to a primary segment.
-- start_ignore
SELECT port FROM gp_segment_configuration
WHERE content <> -1 AND role = 'p'
LIMIT 1
\gset
\connect - - - :port
-- end_ignore
-- DON'T PUT ANYTHING BELOW THIS TEST! It'll be ignored since the above \connect
-- fails and exits the script. Add them above, instead.