def test_register_generics_with_instance_types(self): cs = ConstraintSet("provider") cs.register_generics(["a1.big", "c7.peculiar"]) c1 = cs.parse([]) self.assertEquals(c1["arch"], "amd64") self.assertEquals(c1["cpu"], 1.0) self.assertEquals(c1["mem"], 512.0) self.assertEquals(c1["instance-type"], None) c2 = cs.parse(["arch=any", "cpu=0", "mem=8G"]) self.assertEquals(c2["arch"], None) self.assertEquals(c2["cpu"], 0.0) self.assertEquals(c2["mem"], 8192.0) self.assertEquals(c2["instance-type"], None) c3 = cs.parse(["instance-type=c7.peculiar", "arch=i386"]) self.assertEquals(c3["arch"], "i386") self.assertEquals(c3["cpu"], None) self.assertEquals(c3["mem"], None) self.assertEquals(c3["instance-type"], "c7.peculiar") def assert_ambiguous(strs): e = self.assertRaises(ConstraintError, cs.parse, strs) self.assertTrue(str(e).startswith("Ambiguous constraints")) assert_ambiguous(["cpu=1", "instance-type=c7.peculiar"]) assert_ambiguous(["mem=1024", "instance-type=c7.peculiar"]) c4 = cs.parse([]) c4.update(c2) self.assertEquals(c4["arch"], None) self.assertEquals(c4["cpu"], 0.0) self.assertEquals(c4["mem"], 8192.0) self.assertEquals(c4["instance-type"], None) c5 = cs.parse(["instance-type=a1.big"]) c5.update(cs.parse(["arch=i386"])) self.assertEquals(c5["arch"], "i386") self.assertEquals(c5["cpu"], None) self.assertEquals(c5["mem"], None) self.assertEquals(c5["instance-type"], "a1.big") c6 = cs.parse(["instance-type=a1.big"]) c6.update(cs.parse(["cpu=20"])) self.assertEquals(c6["arch"], "amd64") self.assertEquals(c6["cpu"], 20.0) self.assertEquals(c6["mem"], None) self.assertEquals(c6["instance-type"], None) c7 = cs.parse(["instance-type="]) self.assertEquals(c7["arch"], "amd64") self.assertEquals(c7["cpu"], 1.0) self.assertEquals(c7["mem"], 512.0) self.assertEquals(c7["instance-type"], None) c8 = cs.parse(["instance-type=any"]) self.assertEquals(c8["arch"], "amd64") self.assertEquals(c8["cpu"], 1.0) self.assertEquals(c8["mem"], 512.0) self.assertEquals(c8["instance-type"], None)
def test_fulfil_matches(self): other_cs = ConstraintSet("other") other_cs.register_generics([]) other_constraints = other_cs.parse([]) instances = ( dummy_constraints.with_series("x"), dummy_constraints.with_series("y"), other_constraints.with_series("x"), other_constraints.with_series("y")) for i, c1 in enumerate(instances): self.assert_match(c1, c1, True) for c2 in instances[i + 1:]: self.assert_match(c1, c2, False)
def test_register_generics_no_instance_types(self): cs = ConstraintSet("provider") cs.register_generics([]) c1 = cs.parse([]) self.assertEquals(c1["arch"], "amd64") self.assertEquals(c1["cpu"], 1.0) self.assertEquals(c1["mem"], 512.0) self.assertFalse("instance-type" in c1) c2 = cs.parse(["arch=any", "cpu=0", "mem=8G"]) self.assertEquals(c2["arch"], None) self.assertEquals(c2["cpu"], 0.0) self.assertEquals(c2["mem"], 8192.0) self.assertFalse("instance-type" in c2)
def get_constraint_set(self): cs = ConstraintSet(self.provider_type) cs.register_generics([]) return succeed(cs)
import operator from juju.errors import ConstraintError from juju.lib.testing import TestCase from juju.machine.constraints import Constraints, ConstraintSet # These objects exist for the convenience of other test files dummy_cs = ConstraintSet("dummy") dummy_cs.register_generics([]) dummy_constraints = dummy_cs.parse([]) series_constraints = dummy_constraints.with_series("series") generic_defaults = { "arch": "amd64", "cpu": 1, "mem": 512, "ubuntu-series": None, "provider-type": None} dummy_defaults = dict(generic_defaults, **{ "provider-type": "dummy"}) ec2_defaults = dict(generic_defaults, **{ "provider-type": "ec2", "ec2-zone": None, "instance-type": None}) orchestra_defaults = { "provider-type": "orchestra", "ubuntu-series": None, "orchestra-classes": None} all_providers = ["dummy", "ec2", "orchestra"] def _raiser(exc_type): def raise_(s):