Added a dummy test with pyqcy

This commit is contained in:
Anton Beloglazov 2012-07-03 18:04:49 +10:00
parent 734727be4b
commit 4937225fe3
12 changed files with 162 additions and 55 deletions

87
.ropeproject/config.py Normal file
View File

@ -0,0 +1,87 @@
# The default ``config.py``
def set_prefs(prefs):
"""This function is called before opening the project"""
# Specify which files and folders to ignore in the project.
# Changes to ignored resources are not added to the history and
# VCSs. Also they are not returned in `Project.get_files()`.
# Note that ``?`` and ``*`` match all characters but slashes.
# '*.pyc': matches 'test.pyc' and 'pkg/test.pyc'
# 'mod*.pyc': matches 'test/mod1.pyc' but not 'mod/1.pyc'
# '.svn': matches 'pkg/.svn' and all of its children
# 'build/*.o': matches 'build/lib.o' but not 'build/sub/lib.o'
# 'build//*.o': matches 'build/lib.o' and 'build/sub/lib.o'
prefs['ignored_resources'] = ['*.pyc', '*~', '.ropeproject',
'.hg', '.svn', '_svn', '.git']
# Specifies which files should be considered python files. It is
# useful when you have scripts inside your project. Only files
# ending with ``.py`` are considered to be python files by
# default.
#prefs['python_files'] = ['*.py']
# Custom source folders: By default rope searches the project
# for finding source folders (folders that should be searched
# for finding modules). You can add paths to that list. Note
# that rope guesses project source folders correctly most of the
# time; use this if you have any problems.
# The folders should be relative to project root and use '/' for
# separating folders regardless of the platform rope is running on.
# 'src/my_source_folder' for instance.
#prefs.add('source_folders', 'src')
# You can extend python path for looking up modules
#prefs.add('python_path', '~/python/')
# Should rope save object information or not.
prefs['save_objectdb'] = True
prefs['compress_objectdb'] = False
# If `True`, rope analyzes each module when it is being saved.
prefs['automatic_soa'] = True
# The depth of calls to follow in static object analysis
prefs['soa_followed_calls'] = 0
# If `False` when running modules or unit tests "dynamic object
# analysis" is turned off. This makes them much faster.
prefs['perform_doa'] = True
# Rope can check the validity of its object DB when running.
prefs['validate_objectdb'] = True
# How many undos to hold?
prefs['max_history_items'] = 32
# Shows whether to save history across sessions.
prefs['save_history'] = True
prefs['compress_history'] = False
# Set the number spaces used for indenting. According to
# :PEP:`8`, it is best to use 4 spaces. Since most of rope's
# unit-tests use 4 spaces it is more reliable, too.
prefs['indent_size'] = 4
# Builtin and c-extension modules that are allowed to be imported
# and inspected by rope.
prefs['extension_modules'] = []
# Add all standard c-extensions to extension_modules list.
prefs['import_dynload_stdmods'] = True
# If `True` modules with syntax errors are considered to be empty.
# The default value is `False`; When `False` syntax errors raise
# `rope.base.exceptions.ModuleSyntaxError` exception.
prefs['ignore_syntax_errors'] = False
# If `True`, rope ignores unresolvable imports. Otherwise, they
# appear in the importing namespace.
prefs['ignore_bad_imports'] = False
def project_opened(project):
"""This function is called after opening the project"""
# Do whatever you like here!
prefs.add('python_path', '/usr/lib/python2.7/site-packages')

BIN
.ropeproject/globalnames Normal file

Binary file not shown.

1
.ropeproject/history Normal file
View File

@ -0,0 +1 @@
]q(]q]qe.

1
.ropeproject/objectdb Normal file
View File

@ -0,0 +1 @@
<EFBFBD>}q.

View File

@ -0,0 +1,5 @@
"""
OpenStack Neat :: an add-on to OpenStack implementing energy and performance efficient dynamic consolidation of virtual machines
"""
__version__ = "0.1"
__author__ = "Anton Beloglazov"

BIN
neat/__init__.pyc Normal file

Binary file not shown.

54
neat/collector.py Executable file
View File

@ -0,0 +1,54 @@
#! /usr/bin/env python2
import sys
import time
import libvirt
def getNumberOfPhysicalCpus(connection):
return connection.getInfo()[2]
def getDomainTotalCpuTime(domain):
return domain.getCPUStats(True, 0)[0]['cpu_time']
def getCpuUtilization(numberOfPhysicalCpus, domain, previousTime, previousCpuTime, currentTime, currentCpuTime):
#prevTime = time.time()
#prevCpuTime = getDomainTotalCpuTime(domain)
#time.sleep(1)
#currTime = time.time()
#currCpuTime = getDomainTotalCpuTime(domain)
return ((currentCpuTime - previousCpuTime) / ((currentTime - previousTime) * 1000000000 * numberOfPhysicalCpus))
def collectCpuUtilization(numberOfPhysicalCpus, timeInterval, reportingFunction):
pass
conn = libvirt.openReadOnly(None)
if conn is None:
print 'Failed to open connection to the hypervisor'
sys.exit(1)
numberOfPhysicalCpus = getNumberOfPhysicalCpus(conn)
#print "Host CPUs: " + str(numberOfPhysicalCpus)
#getCpuUtilization(dom0, numberOfPhysicalCpus)
#try:
# dom0 = conn.lookupByName("cirros")
#except:
# print 'Failed to find the main domain'
# sys.exit(1)
#print "Domain 0: id %d running %s" % (dom0.ID(), dom0.OSType())
#print dom0.info()
#print dom0.getCPUStats(1, 0)
#print dom0.vcpus()
#print dom0.vcpuPinInfo(0)
#print conn.getCPUStats(1, 0)

View File

@ -1,55 +0,0 @@
#! /usr/bin/env python2
# -*- coding: utf-8 -*-
import libvirt
import sys
import time
def getNumberOfPhysicalCpus(connection):
return connection.getInfo()[2]
def getDomainTotalCpuTime(domain):
return domain.getCPUStats(True, 0)[0]['cpu_time']
def getCpuUtilization(domain, numberOfPhysicalCpus):
prevTime = time.time()
prevCpuTime = getDomainTotalCpuTime(domain)
time.sleep(1)
currTime = time.time()
currCpuTime = getDomainTotalCpuTime(domain)
print "Prev time: " + str(prevTime)
print "Prev cpu time: " + str(prevCpuTime)
print "Curr time: " + str(currTime)
print "Curr cpu time: " + str(currCpuTime)
print "CPU utilization: "
print ((currCpuTime - prevCpuTime) / ((currTime - prevTime) * 1000000000 * numberOfPhysicalCpus))
conn = libvirt.openReadOnly(None)
if conn is None:
print 'Failed to open connection to the hypervisor'
sys.exit(1)
try:
dom0 = conn.lookupByName("cirros")
except:
print 'Failed to find the main domain'
sys.exit(1)
numberOfPhysicalCpus = getNumberOfPhysicalCpus(conn)
print "Host CPUs: " + str(numberOfPhysicalCpus)
getCpuUtilization(dom0, numberOfPhysicalCpus)
#print "Domain 0: id %d running %s" % (dom0.ID(), dom0.OSType())
#print dom0.info()
#print dom0.getCPUStats(1, 0)
#print dom0.vcpus()
#print dom0.vcpuPinInfo(0)
#print conn.getCPUStats(1, 0)

4
tests/__init__.py Normal file
View File

@ -0,0 +1,4 @@
from pyqcy import TestCase
# make nose not run it as standalone test case needlessly
TestCase.__test__ = False

BIN
tests/__init__.pyc Normal file

Binary file not shown.

10
tests/test_collector.py Normal file
View File

@ -0,0 +1,10 @@
from pyqcy import *
@qc
def addition_on_ints(x=int, y=int):
assert isinstance(x + y, int)
if __name__ == '__main__':
main()

BIN
tests/test_collector.pyc Normal file

Binary file not shown.