Added a deque contract
This commit is contained in:
parent
f51ecbc323
commit
a5de671823
@ -14,11 +14,13 @@
|
|||||||
|
|
||||||
from contracts import new_contract
|
from contracts import new_contract
|
||||||
|
|
||||||
|
import collections
|
||||||
import libvirt
|
import libvirt
|
||||||
import sqlalchemy
|
import sqlalchemy
|
||||||
import neat.db
|
import neat.db
|
||||||
|
|
||||||
|
|
||||||
|
new_contract('deque', collections.deque)
|
||||||
new_contract('function', lambda x: hasattr(x, '__call__'))
|
new_contract('function', lambda x: hasattr(x, '__call__'))
|
||||||
new_contract('virConnect', libvirt.virConnect)
|
new_contract('virConnect', libvirt.virConnect)
|
||||||
new_contract('virDomain', libvirt.virDomain)
|
new_contract('virDomain', libvirt.virDomain)
|
||||||
|
@ -85,3 +85,35 @@ def estimate_probability(data, window_size, state):
|
|||||||
:rtype: float,>=0
|
:rtype: float,>=0
|
||||||
"""
|
"""
|
||||||
return float(data.count(state)) / window_size
|
return float(data.count(state)) / window_size
|
||||||
|
|
||||||
|
|
||||||
|
@contract
|
||||||
|
def update_request_windows(request_windows, max_window_size, previous_state, current_state):
|
||||||
|
""" Update and return the updated request windows.
|
||||||
|
(defn update-request-windows [request-windows max-window-size previous-state current-state]
|
||||||
|
{:pre [(vector? request-windows)
|
||||||
|
(posnum? max-window-size)
|
||||||
|
(not-negnum? previous-state)
|
||||||
|
(not-negnum? current-state)]
|
||||||
|
:post [(coll? %)]}
|
||||||
|
(let [window (get request-windows previous-state)]
|
||||||
|
(assoc request-windows previous-state
|
||||||
|
(conj (take (dec max-window-size) window) current-state))))
|
||||||
|
|
||||||
|
:param request_windows: The previous request windows.
|
||||||
|
:type request_windows: list(int)
|
||||||
|
|
||||||
|
:param max_window_size: The maximum window size.
|
||||||
|
:type max_window_size: int
|
||||||
|
|
||||||
|
:param previous_state: The previous state.
|
||||||
|
:type previous_state: int
|
||||||
|
|
||||||
|
:param current_state: The current state.
|
||||||
|
:type current_state: int
|
||||||
|
|
||||||
|
:return: The updated request windows.
|
||||||
|
:rtype: list(int)
|
||||||
|
"""
|
||||||
|
window = request_windows[previous_state]
|
||||||
|
request_windows[previous_state]
|
||||||
|
@ -15,6 +15,8 @@
|
|||||||
from mocktest import *
|
from mocktest import *
|
||||||
from pyqcy import *
|
from pyqcy import *
|
||||||
|
|
||||||
|
from collections import deque
|
||||||
|
|
||||||
import neat.local.overload.mhod.multisize_estimation as m
|
import neat.local.overload.mhod.multisize_estimation as m
|
||||||
|
|
||||||
|
|
||||||
@ -60,3 +62,85 @@ class Multisize(TestCase):
|
|||||||
m.estimate_probability([1, 1, 0, 0, 1, 1, 1, 1, 1, 1], 200, 0), 0.01)
|
m.estimate_probability([1, 1, 0, 0, 1, 1, 1, 1, 1, 1], 200, 0), 0.01)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
m.estimate_probability([1, 1, 0, 0, 1, 1, 1, 1, 1, 1], 200, 1), 0.04)
|
m.estimate_probability([1, 1, 0, 0, 1, 1, 1, 1, 1, 1], 200, 1), 0.04)
|
||||||
|
|
||||||
|
def test_update_request_windows(self):
|
||||||
|
windows = [[0, 0],
|
||||||
|
[1, 1]]
|
||||||
|
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 4, 0, 0), [[0, 0, 0],
|
||||||
|
[1, 1]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 4, 0, 1), [[0, 0, 1],
|
||||||
|
[1, 1]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 4, 1, 0), [[0, 0],
|
||||||
|
[1, 1, 0]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 4, 1, 1), [[0, 0],
|
||||||
|
[1, 1, 1]])
|
||||||
|
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 2, 0, 0), [[0, 0],
|
||||||
|
[1, 1]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 2, 0, 1), [[0, 1],
|
||||||
|
[1, 1]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 2, 1, 0), [[0, 0],
|
||||||
|
[1, 0]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 2, 1, 1), [[0, 0],
|
||||||
|
[1, 1]])
|
||||||
|
|
||||||
|
windows = [[0, 0],
|
||||||
|
[1, 1],
|
||||||
|
[2, 2]]
|
||||||
|
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 4, 0, 0), [[0, 0, 0],
|
||||||
|
[1, 1],
|
||||||
|
[2, 2]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 4, 0, 1), [[0, 0, 1],
|
||||||
|
[1, 1],
|
||||||
|
[2, 2]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 4, 0, 2), [[0, 0, 2],
|
||||||
|
[1, 1],
|
||||||
|
[2, 2]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 4, 1, 0), [[0, 0],
|
||||||
|
[1, 1, 0],
|
||||||
|
[2, 2]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 4, 1, 1), [[0, 0],
|
||||||
|
[1, 1, 1],
|
||||||
|
[2, 2]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 4, 1, 2), [[0, 0],
|
||||||
|
[1, 1, 2],
|
||||||
|
[2, 2]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 4, 2, 0), [[0, 0],
|
||||||
|
[1, 1],
|
||||||
|
[2, 2, 0]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 4, 2, 1), [[0, 0],
|
||||||
|
[1, 1],
|
||||||
|
[2, 2, 1]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 4, 2, 2), [[0, 0],
|
||||||
|
[1, 1],
|
||||||
|
[2, 2, 2]])
|
||||||
|
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 2, 0, 0), [[0, 0],
|
||||||
|
[1, 1],
|
||||||
|
[2, 2]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 2, 0, 1), [[0, 1],
|
||||||
|
[1, 1],
|
||||||
|
[2, 2]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 2, 0, 2), [[0, 2],
|
||||||
|
[1, 1],
|
||||||
|
[2, 2]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 2, 1, 0), [[0, 0],
|
||||||
|
[1, 0],
|
||||||
|
[2, 2]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 2, 1, 1), [[0, 0],
|
||||||
|
[1, 1],
|
||||||
|
[2, 2]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 2, 1, 2), [[0, 0],
|
||||||
|
[1, 2],
|
||||||
|
[2, 2]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 2, 2, 0), [[0, 0],
|
||||||
|
[1, 1],
|
||||||
|
[2, 0]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 2, 2, 1), [[0, 0],
|
||||||
|
[1, 1],
|
||||||
|
[2, 1]])
|
||||||
|
self.assertEqual(m.update_request_windows(windows, 2, 2, 2), [[0, 0],
|
||||||
|
[1, 1],
|
||||||
|
[2, 2]])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user