def test_find_image_differences_all_diffs(self): images_with_all = copy.deepcopy(TEST_IMAGES) images_with_all.pop(0) images_with_all.pop(0) images_with_all.append(sb.ImageInput("Ubuntu", "aaab", "abce")) images_with_all.append(sb.ImageInput("SteamOS", "ffff", "uvwx")) self.assertEqual({'new': set(['SteamOS']), 'changed': set(['Ubuntu']), 'retired': set(['CentOS'])}, sb.find_image_differences(TEST_IMAGES, images_with_all))
def _setup_weights(self): self.NO_WEIGHTS = {} self.WEIGHTED_IMAGES = { 'Ubuntu': 5, 'CoreOS': 10, 'Windows': 3, 'Redhat': 2, 'CentOS': 4, 'Arch': 1, 'TempleOS': 8, 'Minix': 4 } self.IMAGE_WEIGHT_SUM = sum( [w for i, w in six.iteritems(self.WEIGHTED_IMAGES)]) self.EJECTION_IMAGES = [ sb.ImageInput('Ubuntu', "aaaa", "abcd"), sb.ImageInput('CoreOS', "bbbb", "efgh"), sb.ImageInput('Windows', "cccc", "ijkl"), sb.ImageInput('Redhat', "dddd", "mnop"), sb.ImageInput('CentOS', "eeee", "qrst"), sb.ImageInput('Arch', "ffff", "uvwx"), sb.ImageInput('TempleOS', "gggg", "yzzy"), sb.ImageInput('Minix', "hhhh", "xwvu"), ] self.EJECTION_IMAGES_BY_NAME = {image.name: image for image in self.EJECTION_IMAGES}
def test_find_image_differences_new_images(self): images_with_new = copy.deepcopy(TEST_IMAGES) images_with_new.append(sb.ImageInput("SteamOS", "ffff", "uvwx")) self.assertEqual({'new': set(['SteamOS']), 'changed': set(), 'retired': set()}, sb.find_image_differences(TEST_IMAGES, images_with_new)) images_with_new.append(sb.ImageInput("WindowsServer2012", "gggg", "yzab")) self.assertEqual({'new': set(["SteamOS", "WindowsServer2012"]), 'changed': set(), 'retired': set()}, sb.find_image_differences(TEST_IMAGES, images_with_new))
def test_find_image_differences_changed_images(self): images_with_changed = copy.deepcopy(TEST_IMAGES) images_with_changed.pop(0) images_with_changed.append(sb.ImageInput("Ubuntu", "aaab", "abce")) self.assertEqual({'new': set(), 'changed': set(['Ubuntu']), 'retired': set()}, sb.find_image_differences(TEST_IMAGES, images_with_changed)) images_with_changed.pop(0) images_with_changed.append(sb.ImageInput("CentOS", "bbbc", "efgi")) self.assertEqual({'new': set(), 'changed': set(['Ubuntu', 'CentOS']), 'retired': set()}, sb.find_image_differences(TEST_IMAGES, images_with_changed))
def test_retrieve_image_data_only_returns_onmetal(self, wrapper_call_mock): wrapper_call_mock.return_value = TEST_GLANCE_IMAGE_DATA result = self.scout.retrieve_image_data() expected_images = ('ubuntu-14.04', 'ubuntu-14.10', 'coreos') expected_result = [ strat_base.ImageInput(i, GLANCE_IMAGE_DATA_BY_NAME[i]['id'], GLANCE_IMAGE_DATA_BY_NAME[i]['checksum']) for i in expected_images ] self.assertItemsEqual([e.name for e in expected_result], [r.name for r in result], "retrieve_image_data did not properly filter " "for onmetal images!")
from arsenal.tests.unit import base as test_base CONF = cfg.CONF def name_starts_with(node, letter): return node.node_uuid[0] == letter TEST_FLAVORS = [ sb.FlavorInput("IO", lambda node: name_starts_with(node, 'I')), sb.FlavorInput("Compute", lambda node: name_starts_with(node, 'C')), sb.FlavorInput("Memory", lambda node: name_starts_with(node, 'M')), ] TEST_IMAGES = [ sb.ImageInput("Ubuntu", "aaaa", "abcd"), sb.ImageInput("CentOS", "bbbb", "efgh"), sb.ImageInput("CoreOS", "cccc", "ijkl"), sb.ImageInput("Redhat", "dddd", "mnop"), sb.ImageInput("Windows", "eeee", "qrst") ] class TestStrategyBase(test_base.TestCase): def setUp(self): super(TestStrategyBase, self).setUp() def test_find_image_differences_no_difference(self): empty_diff_dict = {'new': set(), 'changed': set(), 'retired': set()} self.assertEqual(empty_diff_dict,
def convert_glance_image(glance_image): return sb.ImageInput(glance_image.get('name'), glance_image.get('id'), glance_image.get('checksum'))
behavior appears to be correct. """ from __future__ import division import random from oslo_config import cfg from arsenal.strategy import base as sb from arsenal.strategy import simple_proportional_strategy as sps from arsenal.tests import base as test_base from arsenal.tests.strategy import test_strategy_base as sb_test CONF = cfg.CONF INVALID_IMAGE = sb.ImageInput("Windows95", "abcd", "uvwx") class TestSimpleProportionalStrategy(test_base.TestCase): def setUp(self): super(TestSimpleProportionalStrategy, self).setUp() # Setup a few simple cases, that are mostly defaults. self.environments = { 'one_unprovisioned_node_environment': { 'nodes': [sb.NodeInput("caaa", "Compute", False, False, None)], }, 'one_provisioned_node_environment': { 'nodes': [sb.NodeInput("caaa", "Compute", True, False, None)], }, 'two_node_environment': {
sb.CacheNode('node-e', 'image-e', 'checksum-e'), sb.EjectNode('node-f'), sb.EjectNode('node-g'), sb.EjectNode('node-h'), sb.EjectNode('node-i'), sb.EjectNode('node-J'), ] FAKE_FLAVOR_DATA = [ sb.FlavorInput('io-flavor', lambda n: True), sb.FlavorInput('memory-flavor', lambda n: True), sb.FlavorInput('cpu-flavor', lambda n: True) ] FAKE_IMAGE_DATA = [ sb.ImageInput('Ubuntu', 'aaaa', 'ubuntu-checksum'), sb.ImageInput('CoreOS', 'aaaa', 'coreos-checksum'), sb.ImageInput('ArchLinux', 'aaaa', 'archlinux-checksum') ] FAKE_NODE_DATA = [ sb.NodeInput('abcd', 'io-flavor', False, False), sb.NodeInput('hjkl', 'memory-flavor', False, False), sb.NodeInput('asdf', 'compute-flavor', False, False) ] class TestScheduler(base.TestCase): @mock.patch.object(scheduler.DirectorScheduler, 'periodic_tasks') @mock.patch('arsenal.director.onmetal_scout.OnMetalV1Scout')