blob: 99bd730e76a8d023cb02f646fb1d04eea422ca1c [file] [log] [blame]
import os
import json
import sys
import time
sys.path.append("/opt/xos")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xos.settings")
from openstack.manager import OpenStackManager
from core.models import Slice, Sliver, ServiceClass, Reservation, Tag, Network, User, Node, Image, Deployment, Site, NetworkTemplate, NetworkSlice
TEST_SITE_NAME = "Princeton University"
TEST_USER_EMAIL = "sbaker@planetstack.org"
TEST_IMAGE_NAME = "Fedora 16 LXC rev 1.3"
TEST_NODE_NAME = "viccidev3.cs.princeton.edu"
TEST_DEPLOYMENT_NAME = "VICCI"
def fail(msg):
print msg
sys.exit(-1)
def fail_unless(condition, msg):
if not condition:
fail(msg)
class PlanetStackTest:
def __init__(self):
self.objs_saved = []
self.counter = 0
def setup(self):
self.manager = OpenStackManager()
print "getting test site"
self.testSite = Site.objects.get(name=TEST_SITE_NAME)
print "getting test user"
self.testUser = User.objects.get(email=TEST_USER_EMAIL)
print "getting test image"
self.testImage = Image.objects.get(name=TEST_IMAGE_NAME)
print "getting test node"
self.testNode = Node.objects.get(name=TEST_NODE_NAME)
print "getting test deployment"
self.testDeployment = Deployment.objects.get(name=TEST_DEPLOYMENT_NAME)
def save_and_wait_for_enacted(self, x, nonempty_fields=[]):
print "saving", x.__class__.__name__, str(x)
x.save()
self.objs_saved.append(x)
print " waiting for", str(x), "to be enacted"
tStart = time.time()
while True:
new_x = x.__class__.objects.get(id=x.id)
if (new_x.enacted != None) and (new_x.enacted >= new_x.updated):
print " ", str(x), "has been enacted"
break
time.sleep(5)
if nonempty_fields:
print " waiting for", ", ".join(nonempty_fields), "to be nonempty"
while True:
new_x = x.__class__.objects.get(id=x.id)
keep_waiting=False
for field in nonempty_fields:
if not getattr(new_x, field, None):
keep_waiting=True
if not keep_waiting:
break
print " saved and enacted in %d seconds" % int(time.time() - tStart)
return new_x
def make_slice_name(self):
self.counter = self.counter +1
return "test-" + str(time.time()) + "." + str(self.counter)
def get_network_template(self,name):
template = NetworkTemplate.objects.get(name=name)
return template
def cleanup(self):
print "cleaning up"
print "press return"
sys.stdin.readline()
for obj in self.objs_saved:
try:
print " deleting", str(obj)
obj.delete()
except:
print "failed to delete", str(obj)