need to normal stream if i want leaky bucket to work nicely but hmmm
parent
51d11a6afb
commit
40343490f2
|
|
@ -9,7 +9,6 @@ def main():
|
|||
N=args.n,
|
||||
M=args.m,
|
||||
R=args.r,
|
||||
T=args.t,
|
||||
p=args.p,
|
||||
)
|
||||
|
||||
|
|
@ -18,11 +17,10 @@ def get_args():
|
|||
ap.add_argument("-n", type=int, help="queue capacity", default=3)
|
||||
ap.add_argument("-m", type=int, help="queue fill line", default=3)
|
||||
ap.add_argument("-r", type=int, help="drain rate per second", default=2)
|
||||
ap.add_argument("-t", type=int, help="threshold for state", default=2)
|
||||
ap.add_argument("-p", type=str, help="path to write out to", default="/tmp/cbappend.both.txt")
|
||||
return ap.parse_args()
|
||||
|
||||
def with_(N, M, R, T, p):
|
||||
def with_(N, M, R, p):
|
||||
triggered = CBAppend(p)
|
||||
released = CBAppend(p)
|
||||
cb = CBFork(triggered, released)
|
||||
|
|
@ -33,7 +31,7 @@ def with_(N, M, R, T, p):
|
|||
got = readline()
|
||||
if got:
|
||||
if not got in buckets:
|
||||
buckets[got] = Bucket(N, M, R, T, cb.cb(got))
|
||||
buckets[got] = Bucket(N, M, R, cb.cb(got))
|
||||
buckets[got].push()
|
||||
# TODO no /state
|
||||
[buckets[i].pop() for i in buckets]
|
||||
|
|
@ -59,12 +57,11 @@ class State():
|
|||
self.f = f
|
||||
|
||||
class Bucket():
|
||||
def __init__(self, N, M, R, T, CB):
|
||||
def __init__(self, N, M, R, CB):
|
||||
self.q = 0.0
|
||||
self.N = N
|
||||
self.M = M
|
||||
self.R = R
|
||||
self.T = T
|
||||
self.CB = CB
|
||||
self.__last_pop = 0
|
||||
self.__last_state = False
|
||||
|
|
@ -80,16 +77,16 @@ class Bucket():
|
|||
return result
|
||||
|
||||
def __cb(self):
|
||||
new_state = self.q > self.T
|
||||
new_state = self.q >= self.M
|
||||
if new_state == self.__last_state:
|
||||
return
|
||||
self.__last_state = new_state
|
||||
filledness = int(
|
||||
100*(
|
||||
max(
|
||||
[self.q-self.T, 0]
|
||||
[self.q-self.M, 0]
|
||||
)/max(
|
||||
[self.M-self.T, 1]
|
||||
[self.N-self.M, 1]
|
||||
)
|
||||
)
|
||||
)/100.0
|
||||
|
|
|
|||
|
|
@ -30,4 +30,7 @@ python3 ./testdata/rand_0_n_weighted_stream.py \
|
|||
-between 10 \
|
||||
-w 3 \
|
||||
| peek \
|
||||
| python3 ./stream_to_state.py
|
||||
| python3 ./stream_to_state.py \
|
||||
-n 7 \
|
||||
-m 6 \
|
||||
-r 6
|
||||
|
|
|
|||
Loading…
Reference in New Issue