update tests again
This commit is contained in:
parent
b6f9551d0d
commit
f6aaf5e074
|
@ -123,12 +123,14 @@
|
||||||
(is (nil? (read-session as "mykey"))
|
(is (nil? (read-session as "mykey"))
|
||||||
"session entry should no longer be present"))))
|
"session entry should no longer be present"))))
|
||||||
|
|
||||||
(deftest sweeper-thread-expires-entries-when-triggered-by-threshold
|
(deftest sweeper-thread-expires-entries-at-interval-only-when-threshold-reached
|
||||||
(testing "Sweeper thread expires entries when it runs, only when the operation (write) threshold is reached."
|
(testing "When a threshold is specified, the sweeper thread expires entries whenever it runs only when the operation (write) threshold is reached."
|
||||||
(let [as (aging-memory-store
|
(let [as (aging-memory-store
|
||||||
1 ; expire after 1 second
|
1 ; expire after 1 second
|
||||||
{:sweep-threshold 5 ; only trigger sweep after 5 writes
|
{:refresh-on-read true
|
||||||
:sweep-interval 1 ; sweep thread tries to run every 1 second
|
:refresh-on-write true
|
||||||
|
:sweep-threshold 5 ; only trigger sweep after 5 writes
|
||||||
|
:sweep-interval 1 ; sweeper thread tries to run every 1 second
|
||||||
})]
|
})]
|
||||||
(write-session as "mykey" {:foo 1})
|
(write-session as "mykey" {:foo 1})
|
||||||
(Thread/sleep 2000) ; wait long enough for session ttl to elapse
|
(Thread/sleep 2000) ; wait long enough for session ttl to elapse
|
||||||
|
@ -153,6 +155,49 @@
|
||||||
(is (nil? (read-timestamp as "mykey"))
|
(is (nil? (read-timestamp as "mykey"))
|
||||||
"session entry should have been removed now"))))
|
"session entry should have been removed now"))))
|
||||||
|
|
||||||
|
(deftest sweeper-thread-expires-entries-at-interval-with-no-threshold-set
|
||||||
|
(testing "When a threshold is NOT specified, the sweeper thread expires entries whenever it runs."
|
||||||
|
(let [as (aging-memory-store
|
||||||
|
1 ; expire after 1 second
|
||||||
|
{:refresh-on-read true
|
||||||
|
:refresh-on-write true
|
||||||
|
:sweep-threshold nil ; no sweeper thread threshold
|
||||||
|
:sweep-interval 1 ; sweeper thread tries to run every 1 second
|
||||||
|
})]
|
||||||
|
(write-session as "mykey" {:foo 1})
|
||||||
|
(Thread/sleep 20)
|
||||||
|
(is (integer? (read-timestamp as "mykey"))
|
||||||
|
"session entry should still be present")
|
||||||
|
|
||||||
|
; do nothing in the mean time (no write operations)
|
||||||
|
|
||||||
|
(Thread/sleep 2000) ; wait long enough for session ttl to elapse
|
||||||
|
(is (nil? (read-timestamp as "mykey"))
|
||||||
|
"session entry should have been removed now")
|
||||||
|
|
||||||
|
; now lets do this again, but read the value (thus, triggering a timestamp refresh) a couple times
|
||||||
|
|
||||||
|
(is (nil? (read-session as "mykey"))
|
||||||
|
"session entry should not be there yet")
|
||||||
|
(write-session as "mykey" {:foo 1})
|
||||||
|
(is (= (read-session as "mykey") {:foo 1})
|
||||||
|
"session entry should now be present")
|
||||||
|
|
||||||
|
; repeatedly re-read the session for a period of time over the session store ttl so as to not let
|
||||||
|
; it expire (because refresh-on-read is enabled)
|
||||||
|
(doseq [_ (range 10)]
|
||||||
|
(Thread/sleep 200)
|
||||||
|
(is (= (read-session as "mykey") {:foo 1})
|
||||||
|
"session entry should still be present"))
|
||||||
|
|
||||||
|
; now wait long enough without reading to let it expire
|
||||||
|
|
||||||
|
(Thread/sleep 2000)
|
||||||
|
(is (nil? (read-session as "mykey"))
|
||||||
|
"session entry should be gone now")
|
||||||
|
|
||||||
|
)))
|
||||||
|
|
||||||
(deftest refresh-on-read-nonexistent-key-then-sweep
|
(deftest refresh-on-read-nonexistent-key-then-sweep
|
||||||
(testing "Test an empty session read (with refresh-on-read enabled) then check that the expiry sweep still works"
|
(testing "Test an empty session read (with refresh-on-read enabled) then check that the expiry sweep still works"
|
||||||
(let [as (aging-memory-store
|
(let [as (aging-memory-store
|
||||||
|
|
Loading…
Reference in a new issue