From f0990e0cf0e78b5df61b9d4bb38a3fa7ea77ec5e Mon Sep 17 00:00:00 2001 From: Michael Hanselmann <hansmi@google.com> Date: Wed, 14 Nov 2007 15:55:13 +0000 Subject: [PATCH] Compare file contents directly in unittests. Reviewed-by: schreiberal, ultrotter --- test/ganeti.utils_unittest.py | 130 +++++++++++++++------------------- 1 file changed, 59 insertions(+), 71 deletions(-) diff --git a/test/ganeti.utils_unittest.py b/test/ganeti.utils_unittest.py index 69c3fdccc..4b081a0ed 100755 --- a/test/ganeti.utils_unittest.py +++ b/test/ganeti.utils_unittest.py @@ -42,6 +42,18 @@ from ganeti.utils import IsProcessAlive, Lock, Unlock, RunCmd, \ from ganeti.errors import LockError, UnitParseError +class GanetiTestCase(unittest.TestCase): + def assertFileContent(self, file_name, content): + """Checks the content of a file. + + """ + handle = open(file_name, 'r') + try: + self.assertEqual(handle.read(), content) + finally: + handle.close() + + class TestIsProcessAlive(unittest.TestCase): """Testing case for IsProcessAlive""" def setUp(self): @@ -334,16 +346,13 @@ class TestParseUnit(unittest.TestCase): self.assertRaises(UnitParseError, ParseUnit, '1,3' + suffix) -class TestSshKeys(unittest.TestCase): +class TestSshKeys(GanetiTestCase): """Test case for the AddAuthorizedKey function""" KEY_A = 'ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a' KEY_B = ('command="/usr/bin/fooserver -t --verbose",from="1.2.3.4" ' 'ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b') - # NOTE: The MD5 sums below were calculated after manually - # checking the output files. - def writeTestFile(self): (fd, tmpname) = tempfile.mkstemp(prefix = 'ganeti-test') f = os.fdopen(fd, 'w') @@ -362,12 +371,11 @@ class TestSshKeys(unittest.TestCase): try: AddAuthorizedKey(tmpname, 'ssh-dss AAAAB3NzaC1kc3MAAACB root@test') - f = open(tmpname, 'r') - try: - self.assertEqual(md5.new(f.read(8192)).hexdigest(), - 'ccc71523108ca6e9d0343797dc3e9f16') - finally: - f.close() + self.assertFileContent(tmpname, + "ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a\n" + 'command="/usr/bin/fooserver -t --verbose",from="1.2.3.4"' + " ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b\n" + "ssh-dss AAAAB3NzaC1kc3MAAACB root@test\n") finally: os.unlink(tmpname) @@ -377,12 +385,11 @@ class TestSshKeys(unittest.TestCase): AddAuthorizedKey(tmpname, 'ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@test') - f = open(tmpname, 'r') - try: - self.assertEqual(md5.new(f.read(8192)).hexdigest(), - 'f2c939d57addb5b3a6846884be896b46') - finally: - f.close() + self.assertFileContent(tmpname, + "ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a\n" + 'command="/usr/bin/fooserver -t --verbose",from="1.2.3.4"' + " ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b\n" + "ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@test\n") finally: os.unlink(tmpname) @@ -392,12 +399,10 @@ class TestSshKeys(unittest.TestCase): AddAuthorizedKey(tmpname, 'ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a') - f = open(tmpname, 'r') - try: - self.assertEqual(md5.new(f.read(8192)).hexdigest(), - '4e612764808bd46337eb0f575415fc30') - finally: - f.close() + self.assertFileContent(tmpname, + "ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a\n" + 'command="/usr/bin/fooserver -t --verbose",from="1.2.3.4"' + " ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b\n") finally: os.unlink(tmpname) @@ -407,12 +412,9 @@ class TestSshKeys(unittest.TestCase): RemoveAuthorizedKey(tmpname, 'ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a') - f = open(tmpname, 'r') - try: - self.assertEqual(md5.new(f.read(8192)).hexdigest(), - '77516d987fca07f70e30b830b3e4f2ed') - finally: - f.close() + self.assertFileContent(tmpname, + 'command="/usr/bin/fooserver -t --verbose",from="1.2.3.4"' + " ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b\n") finally: os.unlink(tmpname) @@ -422,17 +424,15 @@ class TestSshKeys(unittest.TestCase): RemoveAuthorizedKey(tmpname, 'ssh-dss AAAAB3Nsdfj230xxjxJjsjwjsjdjU root@test') - f = open(tmpname, 'r') - try: - self.assertEqual(md5.new(f.read(8192)).hexdigest(), - '4e612764808bd46337eb0f575415fc30') - finally: - f.close() + self.assertFileContent(tmpname, + "ssh-dss AAAAB3NzaC1w5256closdj32mZaQU root@key-a\n" + 'command="/usr/bin/fooserver -t --verbose",from="1.2.3.4"' + " ssh-dss AAAAB3NzaC1w520smc01ms0jfJs22 root@key-b\n") finally: os.unlink(tmpname) -class TestEtcHosts(unittest.TestCase): +class TestEtcHosts(GanetiTestCase): """Test functions modifying /etc/hosts""" def writeTestFile(self): @@ -452,12 +452,11 @@ class TestEtcHosts(unittest.TestCase): try: SetEtcHostsEntry(tmpname, '1.2.3.4', 'myhost.domain.tld', ['myhost']) - f = open(tmpname, 'r') - try: - self.assertEqual(md5.new(f.read(8192)).hexdigest(), - '284c3454c158d4c4284eeb59910ab00b') - finally: - f.close() + self.assertFileContent(tmpname, + "# This is a test file for /etc/hosts\n" + "127.0.0.1\tlocalhost\n" + "192.168.1.1 router gw\n" + "1.2.3.4\tmyhost.domain.tld myhost\n") finally: os.unlink(tmpname) @@ -466,12 +465,10 @@ class TestEtcHosts(unittest.TestCase): try: SetEtcHostsEntry(tmpname, '192.168.1.1', 'myhost.domain.tld', ['myhost']) - f = open(tmpname, 'r') - try: - self.assertEqual(md5.new(f.read(8192)).hexdigest(), - '1486c19f1fcb626f893c243e3ce38c8d') - finally: - f.close() + self.assertFileContent(tmpname, + "# This is a test file for /etc/hosts\n" + "127.0.0.1\tlocalhost\n" + "192.168.1.1\tmyhost.domain.tld myhost\n") finally: os.unlink(tmpname) @@ -480,12 +477,10 @@ class TestEtcHosts(unittest.TestCase): try: RemoveEtcHostsEntry(tmpname, 'router') - f = open(tmpname, 'r') - try: - self.assertEqual(md5.new(f.read(8192)).hexdigest(), - '8b09207a23709d60240674601a3548b2') - finally: - f.close() + self.assertFileContent(tmpname, + "# This is a test file for /etc/hosts\n" + "127.0.0.1\tlocalhost\n" + "192.168.1.1 gw\n") finally: os.unlink(tmpname) @@ -494,12 +489,9 @@ class TestEtcHosts(unittest.TestCase): try: RemoveEtcHostsEntry(tmpname, 'localhost') - f = open(tmpname, 'r') - try: - self.assertEqual(md5.new(f.read(8192)).hexdigest(), - 'ec4e4589b56f82fdb88db5675de011b1') - finally: - f.close() + self.assertFileContent(tmpname, + "# This is a test file for /etc/hosts\n" + "192.168.1.1 router gw\n") finally: os.unlink(tmpname) @@ -508,12 +500,10 @@ class TestEtcHosts(unittest.TestCase): try: RemoveEtcHostsEntry(tmpname, 'myhost') - f = open(tmpname, 'r') - try: - self.assertEqual(md5.new(f.read(8192)).hexdigest(), - 'aa005bddc6d9ee399c296953f194929e') - finally: - f.close() + self.assertFileContent(tmpname, + "# This is a test file for /etc/hosts\n" + "127.0.0.1\tlocalhost\n" + "192.168.1.1 router gw\n") finally: os.unlink(tmpname) @@ -522,12 +512,10 @@ class TestEtcHosts(unittest.TestCase): try: RemoveEtcHostsEntry(tmpname, 'gw') - f = open(tmpname, 'r') - try: - self.assertEqual(md5.new(f.read(8192)).hexdigest(), - '156dd3980a17b2ef934e2d0bf670aca2') - finally: - f.close() + self.assertFileContent(tmpname, + "# This is a test file for /etc/hosts\n" + "127.0.0.1\tlocalhost\n" + "192.168.1.1 router\n") finally: os.unlink(tmpname) -- GitLab