6 sys.path.append("/opt/planetstack")
8 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings")
9 from openstack.manager import OpenStackManager
10 from core.models import Slice, Sliver, ServiceClass, Reservation, Tag, Network, User, Node, Image, Deployment, Site, NetworkTemplate, NetworkSlice
12 TEST_SITE_NAME = "Princeton University"
13 TEST_USER_EMAIL = "sbaker@planetstack.org"
14 TEST_IMAGE_NAME = "Fedora 16 LXC rev 1.3"
15 TEST_NODE_NAME = "viccidev3.cs.princeton.edu"
16 TEST_DEPLOYMENT_NAME = "VICCI"
22 def fail_unless(condition, msg):
26 class PlanetStackTest:
32 self.manager = OpenStackManager()
34 print "getting test site"
35 self.testSite = Site.objects.get(name=TEST_SITE_NAME)
37 print "getting test user"
38 self.testUser = User.objects.get(email=TEST_USER_EMAIL)
40 print "getting test image"
41 self.testImage = Image.objects.get(name=TEST_IMAGE_NAME)
43 print "getting test node"
44 self.testNode = Node.objects.get(name=TEST_NODE_NAME)
46 print "getting test deployment"
47 self.testDeployment = Deployment.objects.get(name=TEST_DEPLOYMENT_NAME)
49 def save_and_wait_for_enacted(self, x, nonempty_fields=[]):
50 print "saving", x.__class__.__name__, str(x)
52 self.objs_saved.append(x)
53 print " waiting for", str(x), "to be enacted"
56 new_x = x.__class__.objects.get(id=x.id)
57 if (new_x.enacted != None) and (new_x.enacted >= new_x.updated):
58 print " ", str(x), "has been enacted"
63 print " waiting for", ", ".join(nonempty_fields), "to be nonempty"
65 new_x = x.__class__.objects.get(id=x.id)
67 for field in nonempty_fields:
68 if not getattr(new_x, field, None):
73 print " saved and enacted in %d seconds" % int(time.time() - tStart)
77 def make_slice_name(self):
78 self.counter = self.counter +1
79 return "test-" + str(time.time()) + "." + str(self.counter)
81 def get_network_template(self,name):
82 template = NetworkTemplate.objects.get(name=name)
89 for obj in self.objs_saved:
91 print " deleting", str(obj)
94 print "failed to delete", str(obj)