diff --git a/slapos/tests/slapgrid.py b/slapos/tests/slapgrid.py index 16800deff08911a09d81baa92a8a066f4c38eaf7..9666a1f4618cb3fa340880b1b80ff4e752437504 100644 --- a/slapos/tests/slapgrid.py +++ b/slapos/tests/slapgrid.py @@ -168,7 +168,6 @@ class TestSlapgridCPWithMaster(MasterMixin, unittest.TestCase): slap_computer._software_release_list = [] partition = slapos.slap.ComputerPartition(parsed_qs['computer_id'], '0') - partition._need_modification = True sr = slapos.slap.SoftwareRelease() sr._software_release = 'http://sr/' partition._software_release_document = sr @@ -228,7 +227,6 @@ touch worked""") slap_computer._software_release_list = [] partition = slapos.slap.ComputerPartition(parsed_qs['computer_id'], '0') - partition._need_modification = True sr = slapos.slap.SoftwareRelease() sr._software_release = 'http://sr/' partition._software_release_document = sr @@ -305,7 +303,6 @@ chmod 755 etc/run/wrapper slap_computer._software_release_list = [] partition = slapos.slap.ComputerPartition(parsed_qs['computer_id'], '0') - partition._need_modification = True sr = slapos.slap.SoftwareRelease() sr._software_release = 'http://sr/' partition._software_release_document = sr @@ -390,7 +387,6 @@ chmod 755 etc/run/wrapper slap_computer._software_release_list = [] partition = slapos.slap.ComputerPartition(parsed_qs['computer_id'], '0') - partition._need_modification = True sr = slapos.slap.SoftwareRelease() sr._software_release = 'http://sr/' partition._software_release_document = sr @@ -447,7 +443,6 @@ chmod 755 etc/run/wrapper slap_computer._software_release_list = [] partition = slapos.slap.ComputerPartition(parsed_qs['computer_id'], '0') - partition._need_modification = True sr = slapos.slap.SoftwareRelease() sr._software_release = 'http://sr/' partition._software_release_document = sr @@ -514,7 +509,6 @@ chmod 755 etc/run/wrapper slap_computer._software_release_list = [] partition = slapos.slap.ComputerPartition(parsed_qs['computer_id'], '0') - partition._need_modification = True sr = slapos.slap.SoftwareRelease() sr._software_release = 'http://sr/' partition._software_release_document = sr @@ -571,26 +565,28 @@ chmod 755 etc/run/wrapper slap_computer._software_release_list = [] partition = slapos.slap.ComputerPartition(parsed_qs['computer_id'], '0') - partition._need_modification = True sr = slapos.slap.SoftwareRelease() sr._software_release = 'http://sr/' partition._software_release_document = sr - partition._requested_state = 'stopped' + partition._requested_state = 'started' partition._parameter_dict = {'timestamp': self.timestamp} slap_computer._computer_partition_list = [partition] return (200, {}, xml_marshaller.xml_marshaller.dumps(slap_computer)) if parsed_url.path == 'availableComputerPartition' and \ method == 'POST' and 'computer_partition_id' in parsed_qs: return (200, {}, '') - if parsed_url.path == 'stoppedComputerPartition' and \ + if parsed_url.path == 'startedComputerPartition' and \ method == 'POST' and 'computer_partition_id' in parsed_qs: + self.assertEqual(parsed_qs['computer_partition_id'][0], '0') + self.started = True return (200, {}, '') else: return (404, {}, '') httplib.HTTPConnection._callback = server_response self.sequence = [] - self.timestamp = str(time.time()) + self.timestamp = str(int(time.time())) + self.started = False os.mkdir(self.software_root) os.mkdir(self.instance_root) @@ -604,55 +600,34 @@ chmod 755 etc/run/wrapper srbindir = os.path.join(srdir, 'bin') os.mkdir(srbindir) open(os.path.join(srbindir, 'buildout'), 'w').write("""#!/bin/sh -touch worked""") +touch worked && +mkdir -p etc/run && +echo "#!/bin/sh" > etc/run/wrapper && +echo "while :; do echo "Working\\nWorking\\n" ; done" >> etc/run/wrapper && +chmod 755 etc/run/wrapper +""") os.chmod(os.path.join(srbindir, 'buildout'), 0755) self.assertTrue(self.grid.processComputerPartitionList()) self.assertSortedListEqual(os.listdir(self.instance_root), ['0', 'etc', 'var']) - partition = os.path.join(self.instance_root, '0') - self.assertSortedListEqual(os.listdir(partition), ['.timestamp','worked', - 'buildout.cfg']) + self.assertSortedListEqual(os.listdir(partition_path), ['.0_wrapper.log', + 'worked', 'buildout.cfg', 'etc','.timestamp']) + tries = 10 + wrapper_log = os.path.join(partition_path, '.0_wrapper.log') + while tries > 0: + tries -= 1 + if os.path.getsize(wrapper_log) > 0: + break + time.sleep(0.2) + self.assertTrue('Working' in open(wrapper_log, 'r').read()) self.assertSortedListEqual(os.listdir(self.software_root), [software_hash]) - - def server_response(self_httplib, path, method, body, header): - parsed_url = urlparse.urlparse(path.lstrip('/')) - self.sequence.append(parsed_url.path) - if method == 'GET': - parsed_qs = urlparse.parse_qs(parsed_url.query) - else: - parsed_qs = urlparse.parse_qs(body) - if parsed_url.path == 'getFullComputerInformation' and \ - 'computer_id' in parsed_qs: - slap_computer = slapos.slap.Computer(parsed_qs['computer_id']) - slap_computer._software_release_list = [] - partition = slapos.slap.ComputerPartition(parsed_qs['computer_id'], - '0') - partition._need_modification = False - sr = slapos.slap.SoftwareRelease() - sr._software_release = 'http://sr/' - partition._software_release_document = sr - partition._requested_state = 'stopped' - partition._parameter_dict = {'timestamp': self.timestamp} - slap_computer._computer_partition_list = [partition] - return (200, {}, xml_marshaller.xml_marshaller.dumps(slap_computer)) - if parsed_url.path == 'availableComputerPartition' and \ - method == 'POST' and 'computer_partition_id' in parsed_qs: - return (200, {}, '') - if parsed_url.path == 'stoppedComputerPartition' and \ - method == 'POST' and 'computer_partition_id' in parsed_qs: - return (200, {}, '') - else: - return (404, {}, '') - self.setSlapgrid() - self.grid.develop = True - httplib.HTTPConnection._callback = server_response self.assertTrue(self.grid.processComputerPartitionList()) self.assertEqual(self.sequence, ['getFullComputerInformation', 'availableComputerPartition', - 'stoppedComputerPartition', 'getFullComputerInformation']) - + 'startedComputerPartition', 'getFullComputerInformation']) + @@ -753,7 +728,6 @@ class TestSlapgridCPWithMasterPromise(MasterMixin, unittest.TestCase): slap_computer._software_release_list = [] partition = slapos.slap.ComputerPartition(parsed_qs['computer_id'][0], '0') - partition._need_modification = True sr = slapos.slap.SoftwareRelease() sr._software_release = 'http://sr/' partition._software_release_document = sr @@ -815,7 +789,6 @@ exit 127""" % {'worked_file': worked_file}) slap_computer._software_release_list = [] partition = slapos.slap.ComputerPartition(parsed_qs['computer_id'][0], '0') - partition._need_modification = True sr = slapos.slap.SoftwareRelease() sr._software_release = 'http://sr/' partition._software_release_document = sr @@ -877,7 +850,6 @@ exit 0""" % {'worked_file': worked_file}) slap_computer._software_release_list = [] partition = slapos.slap.ComputerPartition(parsed_qs['computer_id'][0], '0') - partition._need_modification = True sr = slapos.slap.SoftwareRelease() sr._software_release = 'http://sr/' partition._software_release_document = sr @@ -945,7 +917,6 @@ exit 127""" % {'worked_file': worked_file}) slap_computer._software_release_list = [] partition = slapos.slap.ComputerPartition(parsed_qs['computer_id'][0], '0') - partition._need_modification = True sr = slapos.slap.SoftwareRelease() sr._software_release = 'http://sr/' partition._software_release_document = sr @@ -1013,7 +984,6 @@ exit 0""" % {'worked_file': worked_file}) slap_computer._software_release_list = [] partition = slapos.slap.ComputerPartition(parsed_qs['computer_id'][0], '0') - partition._need_modification = True sr = slapos.slap.SoftwareRelease() sr._software_release = 'http://sr/' partition._software_release_document = sr @@ -1086,7 +1056,6 @@ exit 0""" % {'worked_file': worked_file_2}) slap_computer._software_release_list = [] partition = slapos.slap.ComputerPartition(parsed_qs['computer_id'][0], '0') - partition._need_modification = True sr = slapos.slap.SoftwareRelease() sr._software_release = 'http://sr/' partition._software_release_document = sr @@ -1160,7 +1129,6 @@ fi""" % {'worked_file': worked_file, 'lockfile': lockfile}) slap_computer._software_release_list = [] partition = slapos.slap.ComputerPartition(parsed_qs['computer_id'][0], '0') - partition._need_modification = True sr = slapos.slap.SoftwareRelease() sr._software_release = 'http://sr/' partition._software_release_document = sr