test with true rand inf stream and up numbers a bit to find bug and fix
parent
12d8b5ef83
commit
00403d03a2
|
|
@ -16,7 +16,7 @@ def main():
|
||||||
if not key in buckets:
|
if not key in buckets:
|
||||||
buckets[key] = False
|
buckets[key] = False
|
||||||
buckets[key] = False if line[0] == "/" else float(line.split()[-1])
|
buckets[key] = False if line[0] == "/" else float(line.split()[-1])
|
||||||
print(sorted([(int(i),buckets[i]) for i in buckets if buckets[i]]))
|
print("[", " ".join(sorted([f"{int(i)}={buckets[i]}" for i in buckets if buckets[i]])), "]")
|
||||||
|
|
||||||
def get_args():
|
def get_args():
|
||||||
ap = argparse.ArgumentParser()
|
ap = argparse.ArgumentParser()
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ def main():
|
||||||
args = get_args()
|
args = get_args()
|
||||||
with_(
|
with_(
|
||||||
N=args.n,
|
N=args.n,
|
||||||
|
M=args.m,
|
||||||
R=args.r,
|
R=args.r,
|
||||||
T=args.t,
|
T=args.t,
|
||||||
p=args.p,
|
p=args.p,
|
||||||
|
|
@ -15,12 +16,13 @@ def main():
|
||||||
def get_args():
|
def get_args():
|
||||||
ap = argparse.ArgumentParser()
|
ap = argparse.ArgumentParser()
|
||||||
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("-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("-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, R, T, p):
|
def with_(N, M, R, T, p):
|
||||||
triggered = CBAppend(p)
|
triggered = CBAppend(p)
|
||||||
released = CBAppend(p)
|
released = CBAppend(p)
|
||||||
cb = CBFork(triggered, released)
|
cb = CBFork(triggered, released)
|
||||||
|
|
@ -33,7 +35,7 @@ def with_(N, R, T, p):
|
||||||
[buckets[i].pop() for i in buckets]
|
[buckets[i].pop() for i in buckets]
|
||||||
else:
|
else:
|
||||||
if not got in buckets:
|
if not got in buckets:
|
||||||
buckets[got] = Bucket(N, R, T, cb.cb(got))
|
buckets[got] = Bucket(N, M, R, T, cb.cb(got))
|
||||||
buckets[got].push()
|
buckets[got].push()
|
||||||
|
|
||||||
def readline():
|
def readline():
|
||||||
|
|
@ -57,9 +59,10 @@ class State():
|
||||||
self.f = f
|
self.f = f
|
||||||
|
|
||||||
class Bucket():
|
class Bucket():
|
||||||
def __init__(self, N, R, T, CB):
|
def __init__(self, N, M, R, T, CB):
|
||||||
self.q = 0.0
|
self.q = 0.0
|
||||||
self.N = N
|
self.N = N
|
||||||
|
self.M = M
|
||||||
self.R = R
|
self.R = R
|
||||||
self.T = T
|
self.T = T
|
||||||
self.CB = CB
|
self.CB = CB
|
||||||
|
|
@ -81,7 +84,10 @@ class Bucket():
|
||||||
if new_state == self.__last_state:
|
if new_state == self.__last_state:
|
||||||
return
|
return
|
||||||
self.__last_state = new_state
|
self.__last_state = new_state
|
||||||
self.CB(State(new_state, int(100*self.q/self.N)/100.0))
|
filledness = int(100*(self.q/self.M))/100.0
|
||||||
|
if filledness > 1.0:
|
||||||
|
filledness = 1.0
|
||||||
|
self.CB(State(new_state, filledness))
|
||||||
|
|
||||||
def state(self):
|
def state(self):
|
||||||
return self.__last_state
|
return self.__last_state
|
||||||
|
|
|
||||||
|
|
@ -3,18 +3,29 @@
|
||||||
set -e
|
set -e
|
||||||
set -o pipefail
|
set -o pipefail
|
||||||
|
|
||||||
|
peek() {
|
||||||
|
while read -r line; do
|
||||||
|
echo $line
|
||||||
|
echo $line >&2
|
||||||
|
done
|
||||||
|
}
|
||||||
cleanup() {
|
cleanup() {
|
||||||
kill -9 $(jobs -p) || true
|
kill -9 $(jobs -p) || true
|
||||||
}
|
}
|
||||||
trap cleanup EXIT
|
trap cleanup EXIT
|
||||||
|
|
||||||
python3 ./state_to_buttons.py &
|
python3 ./state_to_buttons.py &
|
||||||
python3 testdata/rand_0_13_stream.py \
|
|
||||||
| (
|
|
||||||
while read -r line; do
|
|
||||||
#echo $line >&2
|
|
||||||
echo $line
|
|
||||||
done
|
|
||||||
) \
|
|
||||||
| python3 ./stream_to_state.py
|
|
||||||
|
|
||||||
|
python3 ./testdata/rand_0_n_stream.py \
|
||||||
|
-n 6 \
|
||||||
|
-b-min 1 \
|
||||||
|
-b-max 10 \
|
||||||
|
-d-min 100 \
|
||||||
|
-d-max 2000 \
|
||||||
|
-between 100 \
|
||||||
|
| peek \
|
||||||
|
| python3 ./stream_to_state.py \
|
||||||
|
-n 20 \
|
||||||
|
-m 15 \
|
||||||
|
-r 15 \
|
||||||
|
-t 14
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue