diff options
author | Don Anderson <dda@ddanderson.com> | 2012-03-15 12:27:28 -0400 |
---|---|---|
committer | Don Anderson <dda@ddanderson.com> | 2012-03-15 12:27:28 -0400 |
commit | a8aa1359b06294a386a49648489a8ba9611548c5 (patch) | |
tree | 3c2c374fe9d1779c31d46f185e8c5bb686809764 | |
parent | 4421e9ecaa23de1c83074c73c645aeb47841ce3b (diff) | |
download | mongo-a8aa1359b06294a386a49648489a8ba9611548c5.tar.gz |
Modified tests that produce stderr in native code to wrap those calls
so that all error messages can be accounted for. We either use
self.assertRaisesWithMessage() or wrap the call with self.expectedStderr
or self.expectedStderrPattern
-rw-r--r-- | test/suite/test_base01.py | 15 | ||||
-rw-r--r-- | test/suite/test_base06.py | 8 | ||||
-rw-r--r-- | test/suite/test_config02.py | 18 | ||||
-rw-r--r-- | test/suite/test_config04.py | 28 | ||||
-rw-r--r-- | test/suite/test_config05.py | 6 | ||||
-rw-r--r-- | test/suite/test_cursor01.py | 9 | ||||
-rw-r--r-- | test/suite/test_cursor04.py | 8 | ||||
-rw-r--r-- | test/suite/test_cursor_tracker.py | 8 | ||||
-rw-r--r-- | test/suite/test_priv01.py | 6 | ||||
-rw-r--r-- | test/suite/test_util04.py | 8 | ||||
-rw-r--r-- | test/suite/test_util05.py | 6 | ||||
-rw-r--r-- | test/suite/test_util06.py | 6 |
12 files changed, 80 insertions, 46 deletions
diff --git a/test/suite/test_base01.py b/test/suite/test_base01.py index 4930859180a..857a0ef8b37 100644 --- a/test/suite/test_base01.py +++ b/test/suite/test_base01.py @@ -55,13 +55,14 @@ class test_base01(wttest.WiredTigerTestCase): def test_error(self): gotException = False - try: - self.pr('expect an error message...') - self.session.create('table:' + self.table_name1, 'expect_this_error,okay?') - except wiredtiger.WiredTigerError as e: - gotException = True - self.pr('got expected exception: ' + str(e)) - self.assertTrue(str(e).find('nvalid argument') >= 0) + with self.expectedStderr("session.create: Unknown configuration key found: 'expect_this_error': Invalid argument\n"): + try: + self.pr('expect an error message...') + self.session.create('table:' + self.table_name1, 'expect_this_error,okay?') + except wiredtiger.WiredTigerError as e: + gotException = True + self.pr('got expected exception: ' + str(e)) + self.assertTrue(str(e).find('nvalid argument') >= 0) self.assertTrue(gotException, 'expected exception') def test_empty(self): diff --git a/test/suite/test_base06.py b/test/suite/test_base06.py index 653dce0b6b9..1a23f723d33 100644 --- a/test/suite/test_base06.py +++ b/test/suite/test_base06.py @@ -67,9 +67,11 @@ class test_base06(wttest.WiredTigerTestCase): def checkDoesNotExist(self, t): self.assertFalse(os.path.exists(t + ".wt")) - self.assertRaises(wiredtiger.WiredTigerError, lambda: - self.session.open_cursor('table:' + t, - None, None)) + errpat = "Cannot open cursor.*{}.* on unknown table".format(t) + with self.expectedStderrPattern(errpat): + self.assertRaises(wiredtiger.WiredTigerError, lambda: + self.session.open_cursor('table:' + t, + None, None)) def setupCursor(self, tablename, value): if value == None: diff --git a/test/suite/test_config02.py b/test/suite/test_config02.py index a6b3dfc46d3..18c4da9bd67 100644 --- a/test/suite/test_config02.py +++ b/test/suite/test_config02.py @@ -145,20 +145,26 @@ class test_config02(wttest.WiredTigerTestCase): # env var, but no open configuration string, should fail edir = 'envdir' os.mkdir(edir) - self.assertRaises(wiredtiger.WiredTigerError, - lambda: self.common_test(None, edir, None)) + with self.expectedStderrPattern('WIREDTIGER_HOME environment variable\ + set but WiredTiger not configured to use that environment variable'): + self.assertRaises(wiredtiger.WiredTigerError, + lambda: self.common_test(None, edir, None)) def test_home_does_not_exist(self): dir = 'nondir' - self.assertRaises(wiredtiger.WiredTigerError, - lambda: wiredtiger.wiredtiger_open(dir, 'create')) + with self.expectedStderr('wiredtiger_open: WiredTiger:\ + No such file or directory\n'): + self.assertRaises(wiredtiger.WiredTigerError, + lambda: wiredtiger.wiredtiger_open(dir, 'create')) def test_home_not_writeable(self): dir = 'subdir' os.mkdir(dir) os.chmod(dir, 0555) - self.assertRaises(wiredtiger.WiredTigerError, - lambda: wiredtiger.wiredtiger_open(dir, 'create')) + with self.expectedStderr('wiredtiger_open: WiredTiger:\ + Permission denied\n'): + self.assertRaises(wiredtiger.WiredTigerError, + lambda: wiredtiger.wiredtiger_open(dir, 'create')) if __name__ == '__main__': wttest.run() diff --git a/test/suite/test_config04.py b/test/suite/test_config04.py index c6ba468e3e1..244b6b6602e 100644 --- a/test/suite/test_config04.py +++ b/test/suite/test_config04.py @@ -90,8 +90,10 @@ class test_config04(wttest.WiredTigerTestCase): self.assertEqual(got_cache, size) def test_bad_config(self): - self.assertRaises(wiredtiger.WiredTigerError, lambda: - wiredtiger.wiredtiger_open('.', 'not_valid,another_bad=10')) + with self.expectedStderr("wiredtiger_open: Unknown configuration key\ + found: 'not_valid': Invalid argument\n"): + self.assertRaises(wiredtiger.WiredTigerError, lambda: + wiredtiger.wiredtiger_open('.', 'not_valid,another_bad=10')) def test_cache_size_number(self): # Use a number without multipliers @@ -123,27 +125,33 @@ class test_config04(wttest.WiredTigerTestCase): self.common_cache_size_test('2T', 2*self.T) def test_cache_too_small(self): - self.assertRaises(wiredtiger.WiredTigerError, lambda: - wiredtiger.wiredtiger_open('.', 'create,cache_size=900000')) + with self.expectedStderrPattern("Value too small for key\ + 'cache_size' the minimum is"): + self.assertRaises(wiredtiger.WiredTigerError, lambda: + wiredtiger.wiredtiger_open('.', 'create,cache_size=900000')) def test_cache_too_large(self): T11 = 11 * self.T # 11 Terabytes - self.assertRaises(wiredtiger.WiredTigerError, lambda: - wiredtiger.wiredtiger_open('.', 'create,cache_size=' + str(T11))) + with self.expectedStderrPattern("Value too large for key\ + 'cache_size' the maximum is"): + self.assertRaises(wiredtiger.WiredTigerError, lambda: + wiredtiger.wiredtiger_open('.', 'create,cache_size=' + str(T11))) def test_eviction(self): self.common_test('eviction_target=84,eviction_trigger=94') # Note def test_eviction_bad(self): - self.assertRaises(wiredtiger.WiredTigerError, lambda: + self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda: wiredtiger.wiredtiger_open('.', 'create,eviction_target=91,' + - 'eviction_trigger=81')) + 'eviction_trigger=81'), + "/eviction target must be lower than the eviction trigger/") def test_eviction_bad2(self): - self.assertRaises(wiredtiger.WiredTigerError, lambda: + self.assertRaisesWithMessage(wiredtiger.WiredTigerError, lambda: wiredtiger.wiredtiger_open('.', 'create,eviction_target=86,' + - 'eviction_trigger=86')) + 'eviction_trigger=86'), + "/eviction target must be lower than the eviction trigger/") def test_hazard_max(self): # Note: There isn't any direct way to know that this was set. diff --git a/test/suite/test_config05.py b/test/suite/test_config05.py index 35f9bd75b82..493531aa063 100644 --- a/test/suite/test_config05.py +++ b/test/suite/test_config05.py @@ -86,8 +86,10 @@ class test_config05(wttest.WiredTigerTestCase): def test_multi_create(self): self.conn = wiredtiger.wiredtiger_open('.', 'create') self.session = self.conn.open_session(None) - self.assertRaises(wiredtiger.WiredTigerError, - lambda: wiredtiger.wiredtiger_open('.', 'create')) + self.assertRaisesWithMessage(wiredtiger.WiredTigerError, + lambda: wiredtiger.wiredtiger_open('.', 'create'), + '/WiredTiger database is already being managed by another thread\ + in this process/') if __name__ == '__main__': wttest.run() diff --git a/test/suite/test_cursor01.py b/test/suite/test_cursor01.py index 446be681b6a..f92fe7d44e3 100644 --- a/test/suite/test_cursor01.py +++ b/test/suite/test_cursor01.py @@ -90,9 +90,12 @@ class test_cursor01(wttest.WiredTigerTestCase): return 'value' + str(i) def assertCursorHasNoKeyValue(self, cursor): - print('Expect to see messages: \'requires key/value to be set\'') - self.assertRaises(wiredtiger.WiredTigerError, cursor.get_key) - self.assertRaises(wiredtiger.WiredTigerError, cursor.get_value) + keymsg = 'cursor.get_key: requires key be set: Invalid argument\n' + valuemsg = 'cursor.get_value: requires value be set: Invalid argument\n' + with self.expectedStderr(keymsg): + self.assertRaises(wiredtiger.WiredTigerError, cursor.get_key) + with self.expectedStderr(valuemsg): + self.assertRaises(wiredtiger.WiredTigerError, cursor.get_value) def test_forward_iter(self): """ diff --git a/test/suite/test_cursor04.py b/test/suite/test_cursor04.py index b60cc95c2a2..14005fce67a 100644 --- a/test/suite/test_cursor04.py +++ b/test/suite/test_cursor04.py @@ -140,8 +140,12 @@ class test_cursor04(wttest.WiredTigerTestCase): self.assertEqual(cursor.search(), wiredtiger.WT_NOTFOUND) # The key/value should be cleared on NOTFOUND - self.assertRaises(wiredtiger.WiredTigerError, cursor.get_key) - self.assertRaises(wiredtiger.WiredTigerError, cursor.get_value) + keymsg = 'cursor.get_key: requires key be set: Invalid argument\n' + valuemsg = 'cursor.get_value: requires value be set: Invalid argument\n' + with self.expectedStderr(keymsg): + self.assertRaises(wiredtiger.WiredTigerError, cursor.get_key) + with self.expectedStderr(valuemsg): + self.assertRaises(wiredtiger.WiredTigerError, cursor.get_value) # 2. Calling search_near for a value beyond the end cursor.set_key(self.genkey(self.nentries)) diff --git a/test/suite/test_cursor_tracker.py b/test/suite/test_cursor_tracker.py index 4bd3b787c61..f67f28583fe 100644 --- a/test/suite/test_cursor_tracker.py +++ b/test/suite/test_cursor_tracker.py @@ -413,14 +413,18 @@ class TestCursorTracker(wttest.WiredTigerTestCase): def cur_check_here(self, cursor): # Cannot check immediately after a remove, since the K/V in the cursor # does not correspond to anything + keymsg = 'cursor.get_key: requires key be set: Invalid argument\n' + valuemsg = 'cursor.get_value: requires value be set: Invalid argument\n' if self.curremoved: raise Exception('cur_check_here: cursor.get_key, get_value are not valid') elif self.nopos: self.traceapi_before('cursor.get_key()') - self.assertRaises(wiredtiger.WiredTigerError, cursor.get_key) + with self.expectedStderr(keymsg): + self.assertRaises(wiredtiger.WiredTigerError, cursor.get_key) self.traceapi_after('<unknown>') self.traceapi_before('cursor.get_value()') - self.assertRaises(wiredtiger.WiredTigerError, cursor.get_value) + with self.expectedStderr(valuemsg): + self.assertRaises(wiredtiger.WiredTigerError, cursor.get_value) self.traceapi_after('<unknown>') else: bits = self.curbits diff --git a/test/suite/test_priv01.py b/test/suite/test_priv01.py index 05a3ad42d9c..fa0c2f96e41 100644 --- a/test/suite/test_priv01.py +++ b/test/suite/test_priv01.py @@ -166,8 +166,10 @@ class test_priv01(wttest.WiredTigerTestCase): self.checkfiles(edir) self.checknofiles(".") else: - self.assertRaises(wiredtiger.WiredTigerError, - lambda: self.common_test(None, edir, privarg)) + self.assertRaisesWithMessage(wiredtiger.WiredTigerError, + lambda: self.common_test(None, edir, privarg), + '/WIREDTIGER_HOME environment variable set but\ + process lacks privileges to use that environment variable/') def test_env_conf_without_env_var_priv(self): # no env var set, so should use current directory diff --git a/test/suite/test_util04.py b/test/suite/test_util04.py index abad1152183..8f5d36cb75c 100644 --- a/test/suite/test_util04.py +++ b/test/suite/test_util04.py @@ -48,9 +48,11 @@ class test_util04(wttest.WiredTigerTestCase, suite_subprocess): self.runWt(["drop", "table:" + self.tablename]) self.assertFalse(os.path.exists(self.tablename + ".wt")) - self.assertRaises(wiredtiger.WiredTigerError, - lambda: self.session.open_cursor( - 'table:' + self.tablename, None, None)) + self.assertRaisesWithMessage(wiredtiger.WiredTigerError, + lambda: self.session.open_cursor('table:' + self.tablename, + None, None), + "/Cannot open cursor 'table:" + self.tablename + + "' on unknown table/") if __name__ == '__main__': diff --git a/test/suite/test_util05.py b/test/suite/test_util05.py index 39a0615d0de..b6571b9e903 100644 --- a/test/suite/test_util05.py +++ b/test/suite/test_util05.py @@ -140,9 +140,9 @@ class test_util05(wttest.WiredTigerTestCase, suite_subprocess): # open_and_position closed the session/connection, reopen them now. self.conn = self.setUpConnectionOpen(".") self.session = self.setUpSessionOpen(self.conn) - self.assertRaises(wiredtiger.WiredTigerError, - lambda: self.session.verify( - 'table:' + self.tablename, None)) + self.assertRaisesWithMessage(wiredtiger.WiredTigerError, + lambda: self.session.verify('table:' + self.tablename, None), + "/read checksum error/") def test_verify_process_75pct_null(self): """ diff --git a/test/suite/test_util06.py b/test/suite/test_util06.py index b80012adf01..d49c85469d6 100644 --- a/test/suite/test_util06.py +++ b/test/suite/test_util06.py @@ -201,9 +201,9 @@ class test_util06(wttest.WiredTigerTestCase, suite_subprocess): # damage() closed the session/connection, reopen them now. self.open_conn() - self.assertRaises(wiredtiger.WiredTigerError, - lambda: self.session.verify( - 'table:' + self.tablename, None)) + self.assertRaisesWithMessage(wiredtiger.WiredTigerError, + lambda: self.session.verify('table:' + self.tablename, None), + "/read checksum error/") self.session.salvage('file:' + self.tablename + ".wt", None) self.check_damaged(self.tablename) |