need to normal stream if i want leaky bucket to work nicely but hmmm

master
Bel LaPointe 2022-04-12 15:51:15 -06:00
parent 51d11a6afb
commit 40343490f2
2 changed files with 10 additions and 10 deletions

View File

@ -9,7 +9,6 @@ def main():
N=args.n, N=args.n,
M=args.m, M=args.m,
R=args.r, R=args.r,
T=args.t,
p=args.p, p=args.p,
) )
@ -18,11 +17,10 @@ def get_args():
ap.add_argument("-n", type=int, help="queue capacity", default=3) 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("-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("-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") ap.add_argument("-p", type=str, help="path to write out to", default="/tmp/cbappend.both.txt")
return ap.parse_args() return ap.parse_args()
def with_(N, M, R, T, p): def with_(N, M, R, p):
triggered = CBAppend(p) triggered = CBAppend(p)
released = CBAppend(p) released = CBAppend(p)
cb = CBFork(triggered, released) cb = CBFork(triggered, released)
@ -33,7 +31,7 @@ def with_(N, M, R, T, p):
got = readline() got = readline()
if got: if got:
if not got in buckets: 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() buckets[got].push()
# TODO no /state # TODO no /state
[buckets[i].pop() for i in buckets] [buckets[i].pop() for i in buckets]
@ -59,12 +57,11 @@ class State():
self.f = f self.f = f
class Bucket(): class Bucket():
def __init__(self, N, M, R, T, CB): def __init__(self, N, M, R, CB):
self.q = 0.0 self.q = 0.0
self.N = N self.N = N
self.M = M self.M = M
self.R = R self.R = R
self.T = T
self.CB = CB self.CB = CB
self.__last_pop = 0 self.__last_pop = 0
self.__last_state = False self.__last_state = False
@ -80,16 +77,16 @@ class Bucket():
return result return result
def __cb(self): def __cb(self):
new_state = self.q > self.T new_state = self.q >= self.M
if new_state == self.__last_state: if new_state == self.__last_state:
return return
self.__last_state = new_state self.__last_state = new_state
filledness = int( filledness = int(
100*( 100*(
max( max(
[self.q-self.T, 0] [self.q-self.M, 0]
)/max( )/max(
[self.M-self.T, 1] [self.N-self.M, 1]
) )
) )
)/100.0 )/100.0

View File

@ -30,4 +30,7 @@ python3 ./testdata/rand_0_n_weighted_stream.py \
-between 10 \ -between 10 \
-w 3 \ -w 3 \
| peek \ | peek \
| python3 ./stream_to_state.py | python3 ./stream_to_state.py \
-n 7 \
-m 6 \
-r 6