Inappropriate failure conditions in foreign_data regression test

Started by Tom Laneover 16 years ago3 messages
#1Tom Lane
tgl@sss.pgh.pa.us

By chance I noticed that the foreign_data regression test fails if run
in an installation where "bob" is a live user. It appears to be
assuming that half a dozen other fairly common names don't belong to
real users, either. Could we make this a little less fragile? Maybe
call them no_such_user_N. Or for that matter do we really need quite
so many tests of the same error condition?

regards, tom lane

#2Martin Pihlak
martin.pihlak@gmail.com
In reply to: Tom Lane (#1)
1 attachment(s)
Re: Inappropriate failure conditions in foreign_data regression test

By chance I noticed that the foreign_data regression test fails if run
in an installation where "bob" is a live user. It appears to be
assuming that half a dozen other fairly common names don't belong to
real users, either. Could we make this a little less fragile? Maybe

Attached is a patch that attempts to fix that -- user mappings are now
created for "regress_test_missing_role" instead of "bob" or "baz".

call them no_such_user_N. Or for that matter do we really need quite
so many tests of the same error condition?

The code paths leading to those error conditions are different (or at
least they should be). The initial aim was to get as much test coverage
as possible, but I guess the tests could be simplified if this is turning
out to be a maintenance burden

regards,
Martin

Attachments:

foreign_data_regression.patchtext/x-diff; name=foreign_data_regression.patchDownload
*** a/src/test/regress/expected/foreign_data.out
--- b/src/test/regress/expected/foreign_data.out
***************
*** 524,531 **** List of user mappings
  (0 rows)
  
  -- CREATE USER MAPPING
! CREATE USER MAPPING FOR baz SERVER s1;                      -- ERROR
! ERROR:  role "baz" does not exist
  CREATE USER MAPPING FOR current_user SERVER s1;             -- ERROR
  ERROR:  server "s1" does not exist
  CREATE USER MAPPING FOR current_user SERVER s4;
--- 524,531 ----
  (0 rows)
  
  -- CREATE USER MAPPING
! CREATE USER MAPPING FOR regress_test_missing_role SERVER s1;  -- ERROR
! ERROR:  role "regress_test_missing_role" does not exist
  CREATE USER MAPPING FOR current_user SERVER s1;             -- ERROR
  ERROR:  server "s1" does not exist
  CREATE USER MAPPING FOR current_user SERVER s4;
***************
*** 565,572 **** RESET ROLE;
  (7 rows)
  
  -- ALTER USER MAPPING
! ALTER USER MAPPING FOR bob SERVER s4 OPTIONS (gotcha 'true');   -- ERROR
! ERROR:  role "bob" does not exist
  ALTER USER MAPPING FOR user SERVER ss4 OPTIONS (gotcha 'true'); -- ERROR
  ERROR:  server "ss4" does not exist
  ALTER USER MAPPING FOR public SERVER s5 OPTIONS (gotcha 'true');            -- ERROR
--- 565,572 ----
  (7 rows)
  
  -- ALTER USER MAPPING
! ALTER USER MAPPING FOR regress_test_missing_role SERVER s4 OPTIONS (gotcha 'true'); -- ERROR
! ERROR:  role "regress_test_missing_role" does not exist
  ALTER USER MAPPING FOR user SERVER ss4 OPTIONS (gotcha 'true'); -- ERROR
  ERROR:  server "ss4" does not exist
  ALTER USER MAPPING FOR public SERVER s5 OPTIONS (gotcha 'true');            -- ERROR
***************
*** 595,608 **** RESET ROLE;
  (7 rows)
  
  -- DROP USER MAPPING
! DROP USER MAPPING FOR bob SERVER s4;                        -- ERROR
! ERROR:  role "bob" does not exist
  DROP USER MAPPING FOR user SERVER ss4;
  ERROR:  server "ss4" does not exist
  DROP USER MAPPING FOR public SERVER s7;                     -- ERROR
  ERROR:  user mapping "public" does not exist for the server
! DROP USER MAPPING IF EXISTS FOR bob SERVER s4;
! NOTICE:  role "bob" does not exist, skipping
  DROP USER MAPPING IF EXISTS FOR user SERVER ss4;
  NOTICE:  server does not exist, skipping
  DROP USER MAPPING IF EXISTS FOR public SERVER s7;
--- 595,608 ----
  (7 rows)
  
  -- DROP USER MAPPING
! DROP USER MAPPING FOR regress_test_missing_role SERVER s4;  -- ERROR
! ERROR:  role "regress_test_missing_role" does not exist
  DROP USER MAPPING FOR user SERVER ss4;
  ERROR:  server "ss4" does not exist
  DROP USER MAPPING FOR public SERVER s7;                     -- ERROR
  ERROR:  user mapping "public" does not exist for the server
! DROP USER MAPPING IF EXISTS FOR regress_test_missing_role SERVER s4;
! NOTICE:  role "regress_test_missing_role" does not exist, skipping
  DROP USER MAPPING IF EXISTS FOR user SERVER ss4;
  NOTICE:  server does not exist, skipping
  DROP USER MAPPING IF EXISTS FOR public SERVER s7;
*** a/src/test/regress/sql/foreign_data.sql
--- b/src/test/regress/sql/foreign_data.sql
***************
*** 204,210 **** DROP SERVER s3 CASCADE;
  \deu
  
  -- CREATE USER MAPPING
! CREATE USER MAPPING FOR baz SERVER s1;                      -- ERROR
  CREATE USER MAPPING FOR current_user SERVER s1;             -- ERROR
  CREATE USER MAPPING FOR current_user SERVER s4;
  CREATE USER MAPPING FOR user SERVER s4;                     -- ERROR duplicate
--- 204,210 ----
  \deu
  
  -- CREATE USER MAPPING
! CREATE USER MAPPING FOR regress_test_missing_role SERVER s1;  -- ERROR
  CREATE USER MAPPING FOR current_user SERVER s1;             -- ERROR
  CREATE USER MAPPING FOR current_user SERVER s4;
  CREATE USER MAPPING FOR user SERVER s4;                     -- ERROR duplicate
***************
*** 228,234 **** RESET ROLE;
  \deu
  
  -- ALTER USER MAPPING
! ALTER USER MAPPING FOR bob SERVER s4 OPTIONS (gotcha 'true');   -- ERROR
  ALTER USER MAPPING FOR user SERVER ss4 OPTIONS (gotcha 'true'); -- ERROR
  ALTER USER MAPPING FOR public SERVER s5 OPTIONS (gotcha 'true');            -- ERROR
  ALTER USER MAPPING FOR current_user SERVER s8 OPTIONS (username 'test');    -- ERROR
--- 228,234 ----
  \deu
  
  -- ALTER USER MAPPING
! ALTER USER MAPPING FOR regress_test_missing_role SERVER s4 OPTIONS (gotcha 'true'); -- ERROR
  ALTER USER MAPPING FOR user SERVER ss4 OPTIONS (gotcha 'true'); -- ERROR
  ALTER USER MAPPING FOR public SERVER s5 OPTIONS (gotcha 'true');            -- ERROR
  ALTER USER MAPPING FOR current_user SERVER s8 OPTIONS (username 'test');    -- ERROR
***************
*** 241,250 **** RESET ROLE;
  \deu+
  
  -- DROP USER MAPPING
! DROP USER MAPPING FOR bob SERVER s4;                        -- ERROR
  DROP USER MAPPING FOR user SERVER ss4;
  DROP USER MAPPING FOR public SERVER s7;                     -- ERROR
! DROP USER MAPPING IF EXISTS FOR bob SERVER s4;
  DROP USER MAPPING IF EXISTS FOR user SERVER ss4;
  DROP USER MAPPING IF EXISTS FOR public SERVER s7;
  CREATE USER MAPPING FOR public SERVER s8;
--- 241,250 ----
  \deu+
  
  -- DROP USER MAPPING
! DROP USER MAPPING FOR regress_test_missing_role SERVER s4;  -- ERROR
  DROP USER MAPPING FOR user SERVER ss4;
  DROP USER MAPPING FOR public SERVER s7;                     -- ERROR
! DROP USER MAPPING IF EXISTS FOR regress_test_missing_role SERVER s4;
  DROP USER MAPPING IF EXISTS FOR user SERVER ss4;
  DROP USER MAPPING IF EXISTS FOR public SERVER s7;
  CREATE USER MAPPING FOR public SERVER s8;
#3Alvaro Herrera
alvherre@commandprompt.com
In reply to: Martin Pihlak (#2)
Re: Inappropriate failure conditions in foreign_data regression test

Martin Pihlak escribi�:

By chance I noticed that the foreign_data regression test fails if run
in an installation where "bob" is a live user. It appears to be
assuming that half a dozen other fairly common names don't belong to
real users, either. Could we make this a little less fragile? Maybe

Attached is a patch that attempts to fix that -- user mappings are now
created for "regress_test_missing_role" instead of "bob" or "baz".

Applied, thanks.

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support